簡體   English   中英

`git pull --rebase`如何正確提取修改后的提交?

[英]How does `git pull --rebase` correctly pull amended commits?

我有一個設置,可以在local計算機上進行編碼,然后將其從dev框中提取出來進行測試。 說我創建一個提交A上分支foolocal ,並創建一個分支foo上開發框已上游設置為local/foo 如果我從dev框上的branch foo進行git pull ,則dev/foo分支樹與local/foo相同。

但是,如果現在我修改local/foo的提交A ,則從dev框上的分支foo進行git pull會產生合並沖突。 git pull --rebase可以正常工作,不會在dev/foo上兩次重復提交A

git help pull說:

       -r, --rebase[=false|true|merges|preserve|interactive]
           When true, rebase the current branch on top of the upstream branch after 
fetching. If there is a remote-tracking branch corresponding to the upstream branch 
and the upstream branch was rebased since last fetched, the rebase uses that 
information to avoid rebasing non-local changes.

我知道在上述情況下應用了最后一行,但是我不了解先決條件是什么或它是如何工作的?

一個解釋將非常有幫助。 謝謝

這是由於合並和重新定基的差異。

“常規” git pull首先獲取更改,然后將其合並到本地狀態,而git pull --rebase獲取更改,然后將本地狀態重新建立在遠程目錄的頂部。

合並僅考慮項目的兩個狀態-合並的“我們”和“更”一方,並在可能的情況下考慮它們的所謂“合並基礎”-這些開發線共享的最后一個共同提交。

相反,基於基准,首先將“我們的”一側重置為指向“他們的”一側最前端的提交,然后再應用每個“我們的”提交“其”沒有單獨提交的提交(作為文本補丁,接一個。

由於將本地更改增量重新應用於遠程更新狀態,因此這可能會產生更大的機會而不產生沖突

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM