Git ปฏิเสธที่จะรวมประวัติที่ไม่เกี่ยวข้องกับ rebase


2146

ในระหว่างgit rebase origin/developmentข้อความแสดงข้อผิดพลาดต่อไปนี้จะแสดงจาก Git:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

เวอร์ชัน Git ของฉันคือ 2.9.0 มันใช้งานได้ดีในรุ่นก่อนหน้า

ฉันจะดำเนินการต่อการลดลงนี้ต่อเนื่องเพื่อให้ประวัติศาสตร์ที่ไม่เกี่ยวข้องกับการบังคับธงแนะนำในรุ่นใหม่ได้อย่างไร


12
@Shishya ด้วยความเคารพอย่างดีที่สุดคำตอบที่ได้รับการโหวตที่สุดไม่สามารถแก้คำถามนี้ในลักษณะที่ตรง คำถามถามถึงgit-rebaseสถานการณ์ในขณะที่คำตอบให้ธงสำหรับgit-merge
Shubham Chaudhary

13
@ AsifMohammed ไม่ใช่คำตอบที่ยอมรับได้ ผู้คนจะค้นหาคำตอบที่มีการโหวตมากที่สุดโดยอัตโนมัติเนื่องจากการเรียงลำดับเริ่มต้นด้วยการโหวต
Glorfindel

2
ในกรณีที่คนอื่นทำผิดพลาดเหมือนกันฉันได้รับข้อผิดพลาดนี้หลังจากใช้งานโดยไม่ตั้งใจgit pull [repo URL]แทนgit clone [repo URL]
rsoren


35
มีการทำเรื่องยุ่งเหยิงโดยข้อเท็จจริงที่ว่าชื่อเรื่องไม่ได้ระบุว่านี่เป็นบริบทของการปฏิเสธดังนั้นคำถามของคุณกำลังวาดใน Googler ที่ได้รับข้อผิดพลาดนี้ในบริบทที่แตกต่างกันและถอนคำตอบที่ไม่จริง ใช้กับคำถามที่คุณถาม ไม่สามารถทำความสะอาดได้ง่ายในขณะนี้ดังนั้นคำถาม & คำตอบคู่ที่ไม่ต่อเนื่องจะยังคงอยู่ในเว็บไซต์และผลการค้นหาของ Google จะสูงตลอดไป คุณธรรมของเรื่องราวนั้นเป็นคำถามที่สำคัญ
ทำเครื่องหมาย Amery

คำตอบ:


2614

พฤติกรรมเริ่มต้นเปลี่ยนไปตั้งแต่ Git 2.9:

"git merge" ใช้เพื่ออนุญาตการรวมสองสาขาที่ไม่มีฐานร่วมกันโดยค่าเริ่มต้นซึ่งนำไปสู่ประวัติใหม่ของโครงการที่มีอยู่แล้วสร้างขึ้นและจากนั้นถูกดึงโดยผู้ดูแลที่ไม่สงสัยซึ่งอนุญาตให้มีประวัติขนานที่ไม่จำเป็นรวมอยู่ในโครงการที่มีอยู่ . คำสั่งได้รับการสอนว่าไม่อนุญาตให้ใช้สิ่งนี้เป็นค่าเริ่มต้นโดยมี--allow-unrelated-historiesตัวเลือกตัวเลือกฟักไข่เพื่อใช้ในเหตุการณ์ที่เกิดขึ้นได้ยากซึ่งผสานประวัติของสองโครงการที่เริ่มต้นชีวิตอิสระ

ดูการเปลี่ยนแปลงรีลีส Gitสำหรับข้อมูลเพิ่มเติม

คุณสามารถใช้--allow-unrelated-historiesเพื่อบังคับให้เกิดการผสาน


18
รู้ว่าการเปลี่ยนแปลงผสาน แต่ตัวเลือกนี้จะไม่ทำงานกับการรีบูท
Shubham Chaudhary

3
มีตัวเลือกใดบ้างที่จะเปิด--allow-unrelated-historiesถาวรหรือไม่
jmarceli

4
@jmarceli "เพราะ" การรวมสองโครงการเข้าด้วยกัน "เป็นเหตุการณ์ที่เกิดขึ้นได้ยากตัวเลือกการกำหนดค่าเพื่ออนุญาตการรวมดังกล่าวจะไม่ถูกเพิ่ม" ไม่เลย
blue112

2
ฉันพยายามที่จะรวมสาขาสำหรับ repo อื่นด้วยวิธีนี้ แต่มันสร้างความมุ่งมั่นใหม่ในสาขาปัจจุบันของฉันและไม่ได้เก็บประวัติจาก repo อื่น ๆ จากนั้นฉันเช็คเอาท์สาขาในท้องถิ่นจาก repo อื่น ๆ และจากนั้นก็รวมเข้าด้วยกันและทันใดนั้นการผสานปกติก็ปรากฏขึ้น แปลก.
mgol

13
ยอดเยี่ยมทำงานได้git pullดีเช่นกัน เป็นใน "เหตุการณ์ที่หายากซึ่งรวมประวัติศาสตร์ของสองโครงการที่เริ่มต้นชีวิตของพวกเขาด้วยตนเอง" git --work-tree="." pull --allow-unrelated-histories
Petru Zaharia

1188

ในกรณีของฉันข้อผิดพลาดเกิดfatal: refusing to merge unrelated historiesขึ้นทุกครั้งโดยเฉพาะอย่างยิ่งคำขอดึงครั้งแรกหลังจากเพิ่มที่เก็บ Git จากระยะไกล

การใช้--allow-unrelated-historiesแฟล็กทำงานกับคำขอดึงในลักษณะนี้:

git pull origin branchname --allow-unrelated-histories

231
ฉันมักจะเห็นข้อผิดพลาดนี้ถ้าเมื่อฉันสร้างที่เก็บ Github ใหม่ด้วย README.md จากนั้นดึงมันไปที่ที่เก็บในเครื่องในครั้งแรก น่ารำคาญมาก.
Tien Do

29
สำหรับ Repos git cloneใหม่ดึงแรกก็มักจะดีกว่าที่จะเริ่มต้นด้วย
ร่ม


2
สิ่งนี้หยุดฉันเป็นเวลาหลายชั่วโมงก่อนที่ฉันจะรู้ว่าต้องมีการแก้ไขที่ชัดเจนสำหรับการรวมไฟล์เช่นนี้หากเกิดขึ้นสำหรับไฟล์เริ่มต้น - ฉันดีใจที่ฉันไม่ใช่คนเดียวที่มีปัญหานี้อย่างน้อย!
Zibbobz

3
ในกรณีของฉันมันเกิดขึ้นเพราะฉันเพิ่มไฟล์ใบอนุญาตที่ github คำสั่งดังกล่าวข้างต้น (และด้านล่างพวกเขาเหมือนกัน) ทำงาน
uudaddy

579

ลองคำสั่งต่อไปนี้:

git pull origin master --allow-unrelated-histories

วิธีนี้จะช่วยแก้ปัญหาของคุณได้


264

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันตั้งค่าที่เก็บในเครื่องก่อน จากนั้นฉันไปที่ GitHub และสร้างที่เก็บใหม่ จากนั้นฉันก็วิ่ง

git remote add origin <repository url>

เมื่อฉันพยายามที่จะผลักหรือดึงฉันได้รับfatal: unrelated_historiesข้อผิดพลาดเดียวกันทุกครั้ง

นี่คือวิธีที่ฉันแก้ไขมัน:

git pull origin master --allow-unrelated-histories
git merge origin origin/master
... add and commit here...
git push origin master

ฉันคิดว่าเราอยู่ในเรือลำเดียวกัน วิธีเพิ่มบางสิ่ง: ปัญหาของฉันคือมีบางสิ่งบางอย่างใน repo ระยะไกลอยู่แล้ว ดังนั้นในโฟลเดอร์ของฉันมันลบ.gitโฟลเดอร์วิ่งgit initและทำสิ่งที่ Adithya พูดยกเว้นส่วนที่รวม
codepleb

1
จะกดปุ่ม INSERT บน mac ได้อย่างไร? จริงๆแล้วฉันต้องพิมพ์ข้อความคอมมิชชันและทำการผสานจากบรรทัดคำสั่ง แต่ฉันไม่รู้วิธีที่จะทำจากบรรทัดคำสั่ง
Shajeel Afzal

มันเปิดเป็นกลุ่มหรือไม่? ถ้าเป็นเช่นนั้นก็แค่ SHIFT +:
Adithya Bhat

แม้แต่ฉันได้สร้าง GitHub repo ขึ้นมาก่อนและต้องผ่านคำสั่งเหล่านั้นเพื่อเพิ่ม repo
Mr. Suryaa Jha

1
นี่เป็นคำตอบที่ดีจริงๆ ประเด็นก็คือคุณต้องบังคับให้ดึงจากนั้นรวมการซื้อคืนภายในและระยะไกล
alanwsx

151

สำหรับสิ่งนี้ให้ป้อนคำสั่ง:

git pull origin branchname --allow-unrelated-histories

ตัวอย่างเช่น,

git pull origin master --allow-unrelated-histories

อ้างอิง:

GitHub ออกประวัติศาสตร์ไม่เกี่ยวข้อง


ขอบคุณสำหรับการดึงครั้งแรกมันทำงานสำหรับฉัน "ต้นแบบต้นกำเนิดดึง git - ไม่เกี่ยวข้องกับประวัติศาสตร์
Ankitkumar Makwana

135
git pull origin <branch> --allow-unrelated-histories

คุณจะถูกส่งไปที่หน้าต่างแก้ไข Vim:

  • แทรกข้อความคอมมิท
  • จากนั้นกดEsc(เพื่อออกจากโหมด "แทรก") จากนั้น:(ลำไส้ใหญ่) จากนั้นx(เล็ก "x") และในที่สุดก็กดปุ่มEnterเพื่อออกจาก Vim
  • git push --set-upstream origin <branch>

5
Ctrl + X จะไม่นำคุณออกจาก Vim
Ruben

แต่:x<Enter>จะ
webKnjaZ


47

ลอง git pull --rebase development


นี่เป็นการแก้ไขปัญหาของฉัน นี่คือวิธีที่ปัญหาเริ่มต้นขึ้น
Harlan Nelson

1
นี่น่าจะเป็น:git pull --rebase=preserve --allow-unrelated-histories development
Riccardo Murri

3
@RiccardoMurri หลังจากที่ได้ลองแล้วฉันจะไม่ทำเช่นนั้นอีก repo ใหม่ของฉันมีไฟล์ตัวอย่างการเริ่มต้นอยู่ในนั้นและเดือน repo ท้องถิ่นของฉันก็คุ้มค่า การรันสิ่งนี้ ( newOrigin branchแทนที่จะเป็นdevelopment) จะเพิ่มการคอมมิทเริ่มต้นที่ด้านบนสุดของสาขาในพื้นที่ของฉัน ฉันต้องการให้การคอมมิชชันเริ่มต้นจากรีโมตใหม่เป็นที่ด้านล่าง
redOctober13

41

สำหรับ Android Studio และ IntelliJ:

ก่อนอื่นกระทำทุกอย่างและแก้ไขข้อขัดแย้งใด ๆ

จากนั้นเปิดเทอร์มินัลจากด้านล่างของ IDE และป้อน:

git pull origin master --allow-unrelated-histories

ตอนนี้คุณสามารถผลักดัน


38

คำเตือนเรื่องนี้อาจเป็นไปได้ที่จะมีการบันทึกซ้ำจากระยะไกล

สิ่งนี้ใช้ได้กับฉัน:

git push origin master --force

1
แต่จริง ๆ แล้วเกิดอะไรขึ้นกับไฟล์โลคอลและรีโมต?
Prathamesh เพิ่มเติม

ตามที่ฉันรู้และมีประสบการณ์ไฟล์ในเครื่องยังคงอยู่เหมือนเดิม ไฟล์ระยะไกลที่คุณต้องการเพิ่มในโฟลเดอร์เฉพาะได้รับการเพิ่ม
Aniket Patil

5
อย่าทำอย่างนี้! นี้เขียนทับไฟล์ระยะไกลทั้งหมด
Finomnis

มีเพียงข้อจำกัดความรับผิดชอบว่าคำสั่งนี้จะแทนที่ไฟล์ทั้งหมดในสาขาต้นแบบ ทำงานได้ดีสำหรับฉัน ขอบคุณ
Flavio

1
มันใช้งานได้ แต่ค่อนข้างจะรุนแรง - ไม่สามารถย้อนประวัติศาสตร์ได้นั้นมีความเฉพาะเจาะจงและเหมาะสมกว่า
bdulac

32

เนื่องจากคำตอบอื่น ๆ ทั้งหมดไม่ได้ตอบคำถามจริงนี่คือวิธีแก้ปัญหาที่ได้รับแรงบันดาลใจจากคำตอบนี้สำหรับคำถามที่เกี่ยวข้อง

ดังนั้นคุณได้รับข้อผิดพลาดของคุณทำgit rebase:

$ git rebase origin/development
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef

ข้อผิดพลาดนี้ไม่ได้ยกเลิกการยกเลิกจริง แต่ตอนนี้คุณอยู่ตรงกลาง:

$ git status
interactive rebase in progress; onto 4321beefdead
Last command done (1 command done):
   pick 1234deadbeef1234deadbeef test merge commit

ดังนั้นตอนนี้คุณสามารถผสานด้วยมือ ค้นหาพาเรนต์ที่คอมมิตของการผสานดั้งเดิมกระทำ:

$ git log -1 1234deadbeef1234deadbeef
commit 1234deadbeef1234deadbeef
Merge: 111111111 222222222
Author: Hans Dampf
Date:   Wed Jun 6 18:04:35 2018 +0200

    test merge commit

ค้นหาว่าพ่อแม่ที่ผสานสองคนใดที่เป็นคนที่ถูกผสานเข้ากับคนปัจจุบัน (อาจเป็นคนที่สองตรวจสอบด้วยgit log 222222222) จากนั้นทำการผสานด้วยมือคัดลอกข้อความการกระทำของการผสานเดิมกระทำ:

$ git merge --allow-unrelated 222222222 --no-commit
Automatic merge went well; stopped before committing as requested
$ git commit -C 1234deadbeef1234deadbeef
[detached HEAD 909af09ec] test merge commit
 Date: Wed Jun 6 18:04:35 2018 +0200
$ git rebase --continue
Successfully rebased and updated refs/heads/test-branch.

28

ผมมีปัญหาเดียวกัน. ปัญหาคือรีโมตมีบางสิ่งที่ป้องกันสิ่งนี้

ฉันสร้างที่เก็บข้อมูลในเครื่องครั้งแรก ฉันเพิ่มLICENSEและREADME.mdไฟล์ลงในเครื่องและมุ่งมั่น

จากนั้นฉันต้องการที่เก็บรีโมตดังนั้นฉันจึงสร้างที่เก็บบน GitHub ที่นี่ฉันทำผิดพลาดในการตรวจสอบ "เริ่มต้นพื้นที่เก็บข้อมูลนี้ด้วย README"ซึ่งสร้าง README.md ในระยะไกลด้วย

ดังนั้นเมื่อฉันวิ่ง

git push --set-upstream origin master

ฉันได้:

error: failed to push some refs to 'https://github.com/lokeshub/myTODs.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes
(e.g. hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ตอนนี้เพื่อเอาชนะสิ่งนี้ที่ฉันทำ

git pull origin master

ซึ่งส่งผลให้เกิดข้อผิดพลาดด้านล่าง:

From https://github.com/lokeshub/myTODs
branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories**

ฉันเหนื่อย:

git pull origin master --allow-unrelated-histories

ผลลัพธ์:

From https://github.com/lokeshub/myTODs
 * branch            master     -> FETCH_HEAD
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed;
fix conflicts and then commit the result.

สารละลาย:

ฉันลบที่เก็บข้อมูลระยะไกลออกและสร้างใหม่ (ฉันคิดว่ามีเพียงการลบไฟล์เท่านั้นที่READMEสามารถใช้งานได้) และหลังจากนั้นรายการด้านล่างใช้งานได้:

git remote rm origin
git remote add origin https://github.com/lokeshub/myTODOs.git
git push --set-upstream origin master

25
การสร้างพื้นที่เก็บข้อมูลใหม่ไม่ใช่วิธีแก้ปัญหา
Zach

3
ต้นแบบต้นกำเนิด git ดึง --allow-unrelated-history ใช้งานได้สำหรับฉัน .. ขอบคุณ
SKalariya

git push --force ... จะเป็นทางออกที่เหมาะสมในขั้นตอนที่ 1 ในกรณีนี้โดยเฉพาะ
Konstantin Pelepelin

2
นี่ไม่ใช่วิธีแก้ปัญหา ถ้าคุณเป็นมือใหม่คุณก็สามารถทำเช่นนั้นได้ แต่ถ้าคุณกำลังทำงานกับโครงการจริงคุณควรจะต้องจัดการกับวิธีที่เหมาะสม
Prathamesh More

27

สิ่งนี้มักจะเกิดขึ้นเมื่อคุณส่งมอบพื้นที่เก็บข้อมูลระยะไกลเป็นครั้งแรก ข้อผิดพลาดอย่างชัดเจนกล่าวว่า "ปฏิเสธที่จะรวมประวัติที่ไม่เกี่ยวข้อง" เราต้องใช้ - ธงไม่อนุญาต - ประวัติที่ไม่เกี่ยวข้อง

git pull origin master  --allow-unrelated-histories

ตอนนี้จะมีความขัดแย้งบางอย่างที่เราต้องแก้ไขด้วยตนเอง หลังจากนั้นเพียงแค่ส่งรหัสและกดมัน


ดังที่กล่าวไว้ในคำถามฉันพยายามทำ git-rebase และไม่ใช่ git-pull, git-rebase ไม่มี--allow-unrelated-historiesธง
Shubham Chaudhary

24

ความเป็นไปได้สองอย่างเมื่อสิ่งนี้สามารถเกิดขึ้นได้ -

  1. คุณได้โคลนโครงการแล้วไดเรกทอรี. git ถูกลบหรือเสียหาย สิ่งนี้ทำให้ Git ไม่ทราบประวัติท้องถิ่นของคุณและจะทำให้เกิดข้อผิดพลาดนี้เมื่อคุณพยายามที่จะผลักดันหรือดึงจากที่เก็บระยะไกล

  2. คุณได้สร้างที่เก็บใหม่เพิ่มคอมมิตสองสามรายการและตอนนี้คุณกำลังพยายามดึงจากที่เก็บแบบรีโมตที่มีคอมมิทของตนเองอยู่แล้ว Git จะโยนข้อผิดพลาดในกรณีนี้เนื่องจากไม่ทราบว่าโครงการทั้งสองเกี่ยวข้องกันอย่างไร

สารละลาย

ต้นแบบต้นกำเนิด git pull - ไม่เกี่ยวข้องกับประวัติ

Ref - https://www.educative.io/edpresso/the-fatal-refusing-to-merge-unrelated-histories-git-error


12

ฉันต่อสู้กับสิ่งนี้เช่นกัน แต่ฉันพยายามหาวิธีแก้ปัญหา

เมื่อคุณพบข้อผิดพลาดด้านบนให้เลือกเชอร์รี่ผสานการคอมมิตจากนั้นทำการรีบูตต่อ:

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue

3
กรุณาพูดภาษาอังกฤษในเครื่องบิน?
Agent Zebra

@AgentZebra สำหรับแผ่นดิสก์ในระนาบที่ซับซ้อนอย่างต่อเนื่องหนึ่งเส้นทางปิดเป็น 0
Addem

12

ขั้นแรกดึงการเปลี่ยนแปลงระยะไกลไปยังเครื่องของคุณโดยใช้คำสั่งต่อไปนี้:

git pull origin branchname --allow-unrelated-histories

** branchname เป็นผู้เชี่ยวชาญในกรณีของฉัน

เมื่อคำสั่ง pull เสร็จสิ้นความขัดแย้งจะเกิดขึ้น คุณควรแก้ไขข้อขัดแย้ง ฉันใช้ Android Studio เพื่อแก้ไขข้อขัดแย้ง ป้อนคำอธิบายรูปภาพที่นี่

เมื่อแก้ไขข้อขัดแย้งได้แล้วก็จะทำการผสาน!

ตอนนี้คุณสามารถผลักดันได้อย่างปลอดภัย


ฉันค้นหาปุ่มเพื่อเป็นResolve Conflictใน บางครั้งป๊อปอัป / ลูกโป่งด้านล่างขวาหายไป & ฉันไม่สามารถทำอะไรได้ ขอบคุณ @oiyio
mochadwi


7

เมื่อทำ a git pullฉันได้รับข้อความนี้fatal: refusing to merge unrelated histories สำหรับโมดูล repo ซึ่งฉันไม่ได้อัพเดตสำเนาโลคัลสักระยะหนึ่ง

ฉันรันคำสั่งนี้เพื่อรีเฟรชเฉพาะที่จากแหล่งกำเนิด ฉันแค่ต้องการรุ่นล่าสุดจากระยะไกลและไม่ต้องการการเปลี่ยนแปลงในท้องถิ่น

git reset --hard origin/master

นี้แก้ไขได้ในกรณีของฉัน


12
คำเตือน: นี่เป็นการลบไฟล์ทั้งหมดของฉัน ระวังถ้าคุณไม่รู้ว่าคุณกำลังทำอะไร!
Salvi Pascual

2
สิ่งนี้จะลบการเปลี่ยนแปลงที่รอดำเนินการทั้งหมด!
Orestis P.

1

ฉันใช้การลดราคาเป็นเวลาหลายปีและฉันไม่เคยพบปัญหาดังกล่าว อย่างไรก็ตามปัญหาครั้งแรกของคุณคือว่าคุณพยายามที่จะทำมันได้โดยตรงในสาขาที่ห่างไกลจากพื้นที่เก็บข้อมูลระยะไกลที่เรียกว่าdevelopment originมันผิดอย่างแท้จริงเพราะการลดระดับเป็นคำสั่งที่อันตรายซึ่งจะปรับโครงสร้างประวัติศาสตร์คอมไพล์ ต้องบอกว่าก่อนอื่นคุณควรลองที่เก็บข้อมูลในเครื่องของคุณและกดเฉพาะถ้ามันเหมาะกับคุณตามที่คาดไว้

ดังนั้นเวิร์กโฟลว์การรีบูตปกติของฉันมีลักษณะดังต่อไปนี้ (แต่โปรดจำไว้ว่าคุณไม่ควรใช้ rebase ในสาขาซึ่งคุณไม่ใช่คณะกรรมการเพียงคณะเดียวสำหรับสาขาดังกล่าวให้ใช้เพียงผสานและแก้ไขข้อขัดแย้งถ้ามี):

  1. ทำให้แน่ใจว่าคุณมีแผนผังการทำงานที่สะอาด (ไม่มีการเปลี่ยนแปลงที่ไม่ธรรมดา)
  2. ชำระเงินไปที่สาขาที่คุณต้องการรีบูต (ตัวอย่างเช่นสมมติว่ามันmasterเป็นคำสั่งหนึ่งบรรทัด):git checkout master && git pull origin master && git checkout development
  3. ทำการ rebase จริง: git rebase master
  4. หากทำเสร็จแล้วทุกอย่างทำงานได้ตามที่คาดหวังผลักไปที่รีโมท สำหรับการทำเช่นนั้นคุณจำเป็นต้องบังคับเพราะโฮสต์ระยะไกลมีประวัติในลำดับอื่นแล้วรีโมตจะตอบโดยไม่กดอะไรเลย ดังนั้นเราจำเป็นต้องพูดว่า "ประวัติรุ่นในเครื่องของฉันถูกต้องเขียนทับทุกอย่างในสาขาระยะไกลนั้นโดยใช้ประวัติรุ่นท้องถิ่นของฉัน":git push -f origin development

ดังที่ฉันได้กล่าวไปแล้วโปรดจำไว้ว่าการลดระดับนั้นจะจัดการกับประวัติคอมไพล์ซึ่งโดยปกติจะเป็นสิ่งที่ไม่ดี อย่างไรก็ตามเป็นไปได้ที่จะทำเช่นนั้นในสาขาที่ไม่มีใครทำ เพื่อให้สาขาสามารถดึงได้สำหรับนักพัฒนารายอื่นให้ใช้กลยุทธ์การรวมอื่นเช่นผสานตัวเองสควอชหรือเชอร์รี่ ดังนั้นในคำอื่น ๆ : Rebase ไม่ควรเป็นเครื่องมือของคุณในการพัฒนาแบบกระจาย มันทำงานได้ดีสำหรับคุณถ้าคุณเป็นคนเดียวที่ทำงานในพื้นที่เก็บข้อมูลนี้

เราใช้กลยุทธ์สาขาฟีเจอร์ ในนี้ฉันมักจะใช้ rebase เพื่อรับ "การปรับปรุง" จากนักพัฒนาคนอื่น ๆ ที่เกิดขึ้นในระหว่างนี้ในสาขาหลัก การทำเช่นนี้จะช่วยลดขนาดของการกระทำที่มองเห็นได้ในคำขอดึง ดังนั้นช่วยให้ผู้ตรวจสอบรหัสเห็นการเปลี่ยนแปลงของฉันในสาขาคุณลักษณะนี้ได้ง่ายขึ้น


ในกรณีนี้ฉันต้องการดำเนินการต่อเพื่อปฏิเสธและคำตอบไม่ได้อยู่ในนั้น ฉันรู้ถึงความเสี่ยงในการรีบูตและเมื่อใดที่ฉันควร & ไม่ควรใช้ git-rebase นี่เป็นคำแนะนำทั่วไป (มีความเห็น) สำหรับกระบวนการทำงานคอมไพล์และไม่ตอบคำถามโดยตรง เท่าที่ใช้การรีบูตเป็นเวลาหลายปีข้อผิดพลาดนี้ถูกเพิ่มเข้าไปใน v2.9.0 ของ git และการไหลที่ใช้ในการทำงานได้ดีก่อนปล่อย สิ่งที่คุณโพสต์ในคำตอบนี้มีคำตอบอยู่แล้วในคำถามที่เก่ากว่าเช่นstackoverflow.com/a/11566503/2670370และgit-scm.com/book/en/v2/Git-Branching-Rebasing
Shubham Chaudhary

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