$ git --version
git version 1.7.1
$ git branch -avv
* master 017Fcc0 [origin/master] xxxx
remotes/origin/HEAD -> origin/master
我的理解是origin / master是远程主分支路径名,master是我的本地分支名。我需要将多个本地提交合并为一个,然后将其提交给具有最新时间戳的远程服务器。以下三个步骤对我很有帮助,但我不明白为什么我需要使用 origin / master 而不是 master 。
a) git rebase --ignore-date origin/master
b) git rebase -i origin/master
c) git push origin master:master
答案 0 :(得分:3)
您不需要使用来使用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
,你可以在同一个位置重新定位你当前的位置(可能已经掌握了),实际上什么都不做。
运行git rebase origin/master
或git rebase 2abcde
将在提交(2)后应用您拥有的提交(3,4,5) - 如果您指定标志-i
,则为选项压缩/ fixup / skip / reword / drop /分别选择提交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