Fre*_*Foo 19 git merge rebase git-rebase
使用Git时,我经常在工作时发现自己做了以下事情master:
# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git checkout master
$ git pull origin master
# turns out master was updated since my previous pull
$ git checkout temp
# I don't want a merge commit for a simple bugfix
$ git rebase master
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp
Run Code Online (Sandbox Code Playgroud)
......我厌倦了这样做.有没有办法在没有所有结账的情况下进行这种跳舞,最好不用(手动)创建临时分支?
Mar*_*air 25
如果您不介意不创建一个名为的分支temp,您可以直接执行以下操作master:
git commit -a -m 'more work done'
git fetch origin
git rebase origin/master
Run Code Online (Sandbox Code Playgroud)
......或等效地:
git commit -a -m 'more work done'
git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
temp但是,如果你确实想保留分支,你仍然可以通过不检查master只是为了做到这一点pull- 你只需要fetch然后将你的分支重新分支到origin/master:
# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git fetch origin
# It looks like origin/master was updated, so:
$ git rebase origin/master
# Then when you finally want to merge:
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp
Run Code Online (Sandbox Code Playgroud)
sehe的回答提醒我你可以替换:
$ git fetch origin
$ git rebase origin/master
Run Code Online (Sandbox Code Playgroud)
......用:
$ git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
......这几乎是等价的.不同之处在于,当您运行时git fetch origin,所有远程跟踪分支origin都将被更新,而当您从中拉出特定分支时origin,它们都不会 - 它只是FETCH_HEAD更新的临时引用.我个人更喜欢运行一个额外的命令(git fetch origin),并查看输出中已更改的所有远程分支.
您至少可以优化变基数: git pull --rebase
我不确定你喜欢什么,但我喜欢我的工作流程:
git checkout -b temp
git commit -a -m 'more work done'
git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
这样我就把注意力集中在手边的分支上.
然后,我做
git checkout master
git pull origin master
git merge temp
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
12490 次 |
| 最近记录: |