[英]Why is "master" required in git pull --rebase origin master but not git rebase -i origin?
[英]why I need to use origin/master instead of master in rebase
$ git --version
git version 1.7.1
$ git branch -avv
* master 017Fcc0 [origin/master] xxxx
remotes/origin/HEAD -> origin/master
我的理解是,origin / master是遠程master分支路徑名稱,而master是我的本地分支名稱。 我需要將多個本地提交合並為一個,然后使用最新時間戳將其提交到遠程服務器。 以下三個步驟很適合我,但是我不明白為什么我需要使用origin / master而不是master 。
a) git rebase --ignore-date origin/master
b) git rebase -i origin/master
c) git push origin master:master
您無需使用origin / master即可將多個提交合並為一個。 但這是執行此操作的一種好方法,以避免必須覆蓋原點的歷史記錄。
例如,如果您的歷史記錄如下:
5abcde Commit 5 [master] [HEAD]
4abcde Commit 4
3abcde Commit 3
2abcde Commit 2 [origin/master]
1abcde Commit 1
您的主節點指向5abcde
,原點/主節點指向3abcde
。 如果運行git rebase master
則將當前位置(可能已經是master)重新設置在同一位置上,實際上什么也沒做。
運行git rebase origin/master
或git rebase 2abcde
將在提交(2)之后應用您擁有的提交(3,4,5)-如果指定了標志-i
則可以選擇squash / fixup / skip / reword / drop / pick分別提交3,4,5。
實際上,Git文檔對解釋rebase的工作原理非常有用: https : //git-scm.com/docs/git-rebase
也許有助於進一步了解Git在遠程方面的工作原理: https : //git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.