คำถามติดแท็ก git-merge

git-merge เป็นคำสั่ง git ซึ่งรวมการเปลี่ยนแปลงจากสาขาอื่นโดยการรวมคอมมิตเข้ากับสาขาที่เช็กเอาต์ในปัจจุบัน


30
เลิกทำการผสาน Git ที่ยังไม่ได้ผลัก
Наэтотвопросестьответына กองมากเกินнарусском : Какотменитьпоследнийผลักดัน? ภายในสาขาหลักของฉันฉันทำgit merge some-other-branchในพื้นที่ แต่ไม่เคยผลักดันการเปลี่ยนแปลงไปยังจุดเริ่มต้น ฉันไม่ได้ตั้งใจผสานดังนั้นฉันต้องการยกเลิก เมื่อทำการgit statusผสานหลังจากฉันได้รับข้อความนี้: # On branch master # Your branch is ahead of 'origin/master' by 4 commits. ตามคำแนะนำที่ฉันพบฉันพยายามวิ่ง git revert HEAD -m 1 แต่ตอนนี้ฉันได้รับข้อความนี้ด้วยgit status: # On branch master # Your branch is ahead of 'origin/master' by 5 commits. ฉันไม่ต้องการให้สาขาของฉันไปข้างหน้าด้วยจำนวนการกระทำใด ๆ ฉันจะกลับไปยังจุดนั้นได้อย่างไร
3942 git  undo  git-merge 

13
ฉันพบความขัดแย้งในการผสาน ฉันจะยกเลิกการรวมได้อย่างไร
ฉันใช้git pullและมีข้อขัดแย้งที่ผสาน: unmerged: _widget.html.erb You are in the middle of a conflicted merge. ฉันรู้ว่าไฟล์รุ่นอื่นดีและของฉันนั้นแย่ดังนั้นการเปลี่ยนแปลงทั้งหมดของฉันควรถูกยกเลิก ฉันจะทำสิ่งนี้ได้อย่างไร

13
อะไรคือวิธีที่ดีที่สุด (และปลอดภัยที่สุด) ในการผสานสาขา Git เข้ากับเจ้านาย
สาขาใหม่จากถูกสร้างขึ้นที่เราเรียกว่าmastertest มีผู้พัฒนาหลายคนที่มุ่งมั่นmasterหรือสร้างสาขาอื่น ๆ และรวมเข้าด้วยกันในmasterภายหลัง สมมติว่าการทำงานในtestคือการหลายวันและคุณต้องการอย่างต่อเนื่องเพื่อให้การปรับปรุงด้วยการกระทำภายในtestmaster ฉันจะทำจากgit pull origin mastertest คำถามที่ 1:นี่เป็นแนวทางที่ถูกต้องหรือไม่? นักพัฒนาคนอื่นสามารถทำงานกับไฟล์เดียวกันได้อย่างง่ายดายขณะที่ฉันทำงาน btw งานของฉันในการจะทำและผมพร้อมที่จะผสานมันกลับไปtest masterนี่คือสองวิธีที่ฉันนึกได้: A: git checkout test git pull origin master git push origin test git checkout master git pull origin test B: git checkout test git pull origin master git checkout master git merge test ฉันไม่ได้ใช้--rebaseเพราะจากความเข้าใจของฉันการรีบูตจะได้รับการเปลี่ยนแปลงจากmasterและสแต็คของฉันที่ด้านบนของมันดังนั้นมันสามารถเขียนทับการเปลี่ยนแปลงที่คนอื่นทำ คำถามที่ …


25
จะเลือกผสานหรือรับการเปลี่ยนแปลงจากสาขาอื่นใน Git ได้อย่างไร?
ฉันใช้คอมไพล์ในโครงการใหม่ที่มีสองขนานกัน แต่ปัจจุบันกำลังทำการทดลอง - สาขาการพัฒนา: master: นำเข้า codebase ที่มีอยู่บวกกับ mods เล็กน้อยที่โดยทั่วไปฉันแน่ใจ exp1: สาขาทดลอง # 1 exp2: สาขาทดลอง # 2 exp1และexp2เป็นตัวแทนของสองแนวทางสถาปัตยกรรมที่แตกต่างกันมาก จนกว่าฉันจะไปได้ไกลกว่านั้นฉันก็ไม่รู้ว่าจะใช้อันไหน (ถ้ามี) เมื่อฉันก้าวหน้าในสาขาหนึ่งบางครั้งฉันก็มีการแก้ไขที่จะเป็นประโยชน์ในสาขาอื่นและต้องการที่จะรวมเฉพาะที่ วิธีที่ดีที่สุดในการรวมการเปลี่ยนแปลงแบบเลือกจากสาขาการพัฒนาหนึ่งไปยังอีกสาขาหนึ่งคืออะไรในขณะที่ทิ้งทุกอย่างอื่นไว้ แนวทางที่ฉันได้พิจารณา: git merge --no-commit ตามด้วย unstaging ด้วยตนเองของการแก้ไขจำนวนมากที่ฉันไม่ต้องการทำร่วมกันระหว่างสาขา การคัดลอกไฟล์ทั่วไปด้วยตนเองไปยังไดเรกทอรีชั่วคราวแล้วgit checkoutย้ายไปที่สาขาอื่นจากนั้นคัดลอกออกจากไดเรกทอรีชั่วคราวด้วยตนเองไปยังแผนผังการทำงาน ความแปรปรวนด้านบน ยกเลิกexpสาขาในตอนนี้และใช้ที่เก็บข้อมูลเพิ่มเติมในพื้นที่สองแห่งสำหรับการทดลอง ทำให้การคัดลอกไฟล์ด้วยตนเองทำได้ง่ายขึ้น ทั้งสามวิธีการเหล่านี้ดูเหมือนน่าเบื่อและผิดพลาดได้ง่าย ฉันหวังว่าจะมีวิธีการที่ดีกว่า สิ่งที่คล้ายกับพารามิเตอร์พา ธ ตัวกรองที่จะทำให้git-mergeเลือกได้มากกว่า

12
แก้ไขความขัดแย้งผสาน Git เพื่อสนับสนุนการเปลี่ยนแปลงระหว่างการดึง
ฉันจะแก้ไขข้อขัดแย้งของคอมไพล์ในการสนับสนุนการเปลี่ยนแปลงที่ดึงได้อย่างไร โดยทั่วไปฉันจำเป็นต้องลบการเปลี่ยนแปลงที่ขัดแย้งกันทั้งหมดออกจากแผนผังการทำงานโดยไม่ต้องผ่านความขัดแย้งทั้งหมดด้วย a git mergetoolในขณะที่ทำให้การเปลี่ยนแปลงทั้งหมดปราศจากความขัดแย้ง ควรทำสิ่งนี้ในขณะที่ดึงไม่ใช่หลังจากนั้น

11
วิธีใช้ git merge --squash
ฉันมีเซิร์ฟเวอร์ Git ระยะไกลนี่คือสถานการณ์ที่ฉันต้องการดำเนินการ: สำหรับแต่ละข้อบกพร่อง / คุณสมบัติฉันสร้างสาขา Git ที่แตกต่างกัน ฉันยืนยันรหัสของฉันในสาขา Git นั้นด้วยข้อความ Git ที่ไม่เป็นทางการ ในพื้นที่เก็บข้อมูลด้านบนเราต้องทำอย่างใดอย่างหนึ่งกระทำสำหรับหนึ่งข้อผิดพลาดที่มีข้อความ Git อย่างเป็นทางการ ดังนั้นฉันจะรวมสาขาของฉันเข้ากับสาขาระยะไกลเพื่อให้พวกเขาได้รับเพียงหนึ่งการกระทำสำหรับเช็คอินทั้งหมดของฉัน (ฉันยังต้องการที่จะส่งมอบข้อความนี้)
1209 git  git-merge  git-squash 

11
ฉันจะรวมสองคอมมิตเข้าด้วยกันได้อย่างไรถ้าฉันเริ่มรีบูตแล้ว?
ฉันพยายามที่จะผสาน 2 กระทำแบ่งออกเป็น 1 ดังนั้นผมทำตาม“ฉับกระทำกับ rebase” จากคอมไพล์พร้อม ฉันวิ่ง git rebase --interactive HEAD~2 ในตัวแก้ไขผลลัพธ์ฉันเปลี่ยนpickเป็นsquashแล้วบันทึกออกจาก แต่การ rebase ล้มเหลวด้วยข้อผิดพลาด ไม่สามารถ 'สควอช' โดยไม่ส่งคำสั่งก่อนหน้า เมื่อต้นไม้ทำงานของฉันมาถึงสถานะนี้ฉันมีปัญหาในการกู้คืน คำสั่งgit rebase --interactive HEAD~2ล้มเหลวด้วย: การปฏิเสธเชิงโต้ตอบเริ่มขึ้นแล้ว และgit rebase --continueล้มเหลวด้วย ไม่สามารถ 'สควอช' โดยไม่ส่งคำสั่งก่อนหน้า
1157 git  git-merge 

8
Git ผสานต้นแบบเข้ากับสาขาคุณลักษณะ
สมมติว่าเรามีสถานการณ์ต่อไปนี้ใน Git: พื้นที่เก็บข้อมูลที่สร้างขึ้น: mkdir GitTest2 cd GitTest2 git init การดัดแปลงบางอย่างในต้นแบบเกิดขึ้นและได้รับการยอมรับ: echo "On Master" > file git commit -a -m "Initial commit" Feature1 แยกออกจากงานหลักและงานบางอย่างเสร็จแล้ว: git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1" ในขณะเดียวกันจะพบข้อบกพร่องในรหัสหลักและมีการสร้างสาขาโปรแกรมแก้ไขด่วน: git checkout master git branch hotfix1 git checkout hotfix1 …

10
เลิกทำการดึงคอมไพล์วิธีนำ repos กลับสู่สถานะเดิม
มีวิธีใดที่จะเปลี่ยนหรือยกเลิกการดึง git เพื่อให้แหล่งที่มา / repos ของฉันจะเข้าสู่สถานะเดิมที่เคยทำ git pull หรือไม่? ฉันต้องการทำเช่นนี้เพราะมันรวมไฟล์บางไฟล์ที่ฉันไม่ต้องการให้ทำ แต่รวมไฟล์ที่เหลือเท่านั้น ดังนั้นฉันต้องการเอาไฟล์เหล่านั้นกลับมาเป็นไปได้ไหม? แก้ไข: ฉันต้องการยกเลิกการคอมไพล์เพื่อชี้แจง หลังจากเห็นคำตอบบางอย่างฉันก็ทำอย่างนี้ git reflog bb3139b... HEAD@{0}: pull : Fast forward 01b34fa... HEAD@{1}: clone: from ...name... ตอนนี้ฉันควรทำอย่างไร กำลังทำอะไรgit reset --hard อยู่ ฉันไม่ต้องการขันมันอีกครั้งดังนั้นขอขั้นตอนอย่างละเอียดหรือ

11
Git เวิร์กโฟลว์และคำถาม rebase vs ผสาน
ตอนนี้ฉันใช้ Git มาสองสามเดือนกับโปรเจ็กต์กับผู้พัฒนารายอื่น ฉันมีประสบการณ์หลายปีกับSVNดังนั้นฉันเดาว่าฉันจะนำสัมภาระจำนวนมากมาสู่ความสัมพันธ์ ฉันได้ยินมาว่า Git นั้นยอดเยี่ยมสำหรับการแยกและรวมเข้าด้วยกันและจนถึงตอนนี้ฉันไม่เห็นเลย แน่นอนว่าการแตกแขนงนั้นง่ายมาก แต่เมื่อฉันพยายามที่จะรวมทุกอย่างเข้าสู่นรก ตอนนี้ฉันคุ้นเคยกับเรื่องนี้จาก SVN แต่สำหรับฉันแล้วฉันเพิ่งแลกเปลี่ยนระบบเวอร์ชันย่อยแบบหนึ่งสำหรับอีกระบบหนึ่ง คู่ของฉันบอกฉันว่าปัญหาของฉันเกิดจากความปรารถนาของฉันที่จะผสานความจำเจและฉันควรใช้ rebase แทนการรวมในหลาย ๆ สถานการณ์ ตัวอย่างเช่นนี่คือขั้นตอนการทำงานที่เขาวางลง: clone the remote repository git checkout -b my_new_feature ..work and commit some stuff git rebase master ..work and commit some stuff git rebase master ..finish the feature git checkout master git merge …

18
มี "git merge -s ours" รุ่น "หรือไม่?
เมื่อผสานหัวข้อหัวข้อ "B" เป็น "A" โดยใช้git mergeฉันได้รับความขัดแย้งบางอย่าง ฉันรู้ว่าความขัดแย้งทั้งหมดสามารถแก้ไขได้โดยใช้เวอร์ชันใน "B" git merge -s oursฉันรู้ git merge -s theirsแต่สิ่งที่ผมต้องการคือสิ่งที่ต้องการ ทำไมมันไม่มีอยู่จริง? ฉันจะบรรลุผลลัพธ์เดียวกันหลังจากการผสานที่ขัดแย้งกับgitคำสั่งที่มีอยู่ได้อย่างไร ( git checkoutทุกไฟล์ที่แยกจาก B) UPDATE: "การแก้ปัญหา" ของการทิ้งอะไรจากสาขา A (การรวมชี้ไปที่ต้นไม้รุ่น B) ไม่ใช่สิ่งที่ฉันกำลังมองหา
876 git  git-merge 

29
.gitignore และ“ ไฟล์แผนผังการทำงานที่ไม่ได้ติดตามจะถูกเขียนทับโดยเช็คเอาต์”
ดังนั้นฉันจึงเพิ่มโฟลเดอร์ในไฟล์. gitignore ของฉัน เมื่อฉันทำgit statusมันก็บอกฉัน # On branch latest nothing to commit (working directory clean) อย่างไรก็ตามเมื่อฉันพยายามเปลี่ยนสาขาฉันได้รับสิ่งต่อไปนี้: My-MacBook-Pro:webapp marcamillion$ git checkout develop error: The following untracked working tree files would be overwritten by checkout: public/system/images/9/thumb/red-stripe.jpg public/system/images/9/original/red-stripe.jpg public/system/images/8/thumb/red-stripe-red.jpg public/system/images/8/original/red-stripe-red.jpg public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg public/system/images/7/thumb/red-stripe-dark.jpg public/system/images/7/original/red-stripe-dark.jpg public/system/images/7/original/DSC07833.JPG public/system/images/6/thumb/red-stripe-bw.jpg public/system/images/6/original/website-logo.png public/system/images/6/original/red-stripe-bw.jpg public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg public/system/images/5/original/logocompv-colored-squares-100px.png public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg public/system/images/4/thumb/DSC_0001.JPG public/system/images/4/original/logo.png public/system/images/4/original/DSC_0001.JPG …
827 git  git-merge  gitignore 

5
วิธีเลิกทำการคอมไพล์ผสานกับข้อขัดแย้ง
mybranch1ฉันอยู่ในสาขา mybranch2ถูกแยกออกจากกันmybranch1และมีการเปลี่ยนแปลงเกิดmybranch2ขึ้น จากนั้นในขณะที่mybranch1ฉันได้ทำgit merge --no-commit mybranch2 มันแสดงให้เห็นว่ามีความขัดแย้งในขณะที่ผสาน ตอนนี้ฉันต้องการทิ้งทุกอย่าง ( mergeคำสั่ง) เพื่อที่mybranch1จะกลับไปเหมือนเดิม ฉันไม่รู้ว่าฉันจะทำอย่างไรเกี่ยวกับเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.