สมมติว่าorigin/master
มีการกระทำA--B--C
ของฉันและมีการกระทำlocal/master
A--B--D
จะเกิดอะไรขึ้นถ้าฉันใช้git pull --rebase
?
จะเกิดอะไรขึ้นถ้าฉันใช้git pull --ff-only
?
มีความแตกต่างในโครงสร้างการคอมมิตที่เกิดขึ้นหรือไม่?
สมมติว่าorigin/master
มีการกระทำA--B--C
ของฉันและมีการกระทำlocal/master
A--B--D
จะเกิดอะไรขึ้นถ้าฉันใช้git pull --rebase
?
จะเกิดอะไรขึ้นถ้าฉันใช้git pull --ff-only
?
มีความแตกต่างในโครงสร้างการคอมมิตที่เกิดขึ้นหรือไม่?
คำตอบ:
จะเกิดอะไรขึ้นถ้าฉันใช้ git pull --rebase
git pull --rebase
เทียบเท่ากับ
git fetch
git rebase origin/master
กล่าวคือการเปลี่ยนแปลงระยะไกลของคุณ ( C
) จะถูกนำไปใช้ก่อนการเปลี่ยนแปลงภายใน ( D
) ส่งผลให้เกิดโครงสร้างต่อไปนี้
A -- B -- C -- D
จะเกิดอะไรขึ้นถ้าฉันใช้ git pull --ff-only
มันจะล้มเหลว
git pull --ff-only
สอดคล้องกับ
git fetch
git merge --ff-only origin/master
--ff-only
ใช้การเปลี่ยนแปลงระยะไกลเฉพาะในกรณีที่สามารถส่งต่อได้อย่างรวดเร็ว จากผู้ชาย:
ปฏิเสธที่จะรวมและออกด้วยสถานะที่ไม่ใช่ศูนย์เว้นแต่ว่า HEAD ปัจจุบันจะเป็นปัจจุบันอยู่แล้วหรือการผสานสามารถแก้ไขได้เป็นการกรอไปข้างหน้า
เนื่องจากสาขาในพื้นที่และระยะไกลของคุณแตกต่างกันจึงไม่สามารถแก้ไขได้โดยกรอไปข้างหน้าและgit pull --ff-only
จะล้มเหลว
A--B--C
ใช่พวกเขาทั้งสองจะส่งผลให้
git pull --rebase --ff-only
ทำอย่างไร? (สมมติว่ามี C & D)
pull
สามารถแนะนำ merge commits ในขณะที่คุณอาจต้องการทำงานกับ rebase และ ff เท่านั้น
D
เปลี่ยนแปลงในท้องถิ่น คำสั่งทั้งสองจะเทียบเท่ากันหรือไม่?