簡體   English   中英

在本地分支上工作后使用git rebase

[英]Use git rebase after working on local branch

我對git還是很陌生,我認為到目前為止我已經了解了基礎知識,但是我不確定一些標准的工作流程。

因此,如果我有一個常見的情況,我是從遠程存儲庫(例如

git pull master

前幾天,在上面創建了一個分支,

git branch myBranch
checkout myBranch

在那個分支上工作了幾天。

現在,我想將包含更改的分支推送到遠程git存儲庫中,但當然首先要了解最新的更改,這些更改發生在我上次提取請求到現在之間。 我該怎么做? 我以為應該做

git rebase master

但是,我發現一些信息應盡可能避免變基。

所以我想知道在這種情況下的標准程序是什么?

在處理最終將作為拉取請求的分支時,Rebase是一種很好的做法。 它使提交歷史記錄更整潔,並且可以幫助避免某些合並沖突。

無需重新設置rebase的“老方法”是使用merge到本地分支上。

master *---*-----------*---*
        \                   \ (merge)
myBranch *---*---*---*---*---*---*---*

如果您在創建將分支重新回到master的拉取請求之前多次合並master ,則會使分支混亂。 相反,這里的rebaserebase分支起點並將其上移:

master *---*---*---*
     (rebase)...    \
myBranch             *---*---*---*---*---*---*

任何其他人一直在你的分支上自己的本地副本將有什么困難,當你rebase ,而是因為你的分支是唯一的地方你的機器,沒有那擔心。

您可以使用以下命令執行變基:

(myBranch):$ git fetch
(myBranch):$ git rebase origin/master

沒有“標准”程序。

有些人喜歡將master合並到分支中:

git checkout myBranch
git fetch
git merge origin/master
# adds a merge commit that merges currentmost master into myBranch

而其他人則寧願將分支機構重新建立在master之上(以擁有統一的歷史記錄):

git checkout myBranch
git fetch
git rebase origin/master  
# rewrites whole myBranch to start at currentmost master, instead of previous master

這主要是關於個人喜好,特定的項目政策以及保持git歷史記錄可讀性的權衡。

feature-branch上工作時,但同時master/develop-branch也繼續進行。 您需要更新feature-branch 為此,您需要使用一個rebase,以便您的提交成為feature-branch的最后一個提交。 您不應該使用合並來更新feature-branch ,這只會使您的git歷史復雜化。

$ git checkout master
$ git pull origin master
$ git checkout mybranch
$ git rebase master
$ git push origin mybranch

暫無
暫無

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

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