mač*_*ček 29 git workflow git-rebase git-branch
这是我经常遇到的常见工作流障碍:
$ git status
# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
$ git checkout -b foo
$ echo "hello" > world
$ git add .
$ git commit -m "init commit for foo module"
$ git checkout master
$ git merge foo
Run Code Online (Sandbox Code Playgroud)
在接下来的几周内,将有更多代码直接由其他分支机构提交.foo分支将在这段时间内不受影响
$ git checkout foo
Run Code Online (Sandbox Code Playgroud)
不好了!foo已经过时了!我理解为什么,但我确实需要foo重新同步.
如何从foo分支机构获取最新内容?
Ada*_*erg 34
如果你不需要分支:
如果你已经将foo合并到master,"git branch -d foo"来杀死主题分支,然后当你需要再次破解它时将来"checkout -b foo".
如果你确实需要分支:
您可以针对主分支重新设置主题分支:
git checkout foo
git rebase master
Run Code Online (Sandbox Code Playgroud)
要么:
git rebase master foo
Run Code Online (Sandbox Code Playgroud)
重新引用是将提交序列移动或组合到新的基本提交的过程.重新定位在功能分支工作流的上下文中最有用且易于可视化.一般过程可以看作如下:
下面的示例将git rebase与git merge相结合,以维护线性项目历史记录.这是一种快速简便的方法,可确保您的合并快速转发.
# Start a new feature
git checkout -b new-feature master
# Edit files
git commit -a -m "Start developing a feature"
Run Code Online (Sandbox Code Playgroud)
在我们的功能中,我们意识到我们的项目存在安全漏洞
# Create a hotfix branch based off of master
git checkout -b hotfix master
# Edit files
git commit -a -m "Fix security hole"
# Merge back into master
git checkout master
git merge hotfix
git branch -d hotfix
Run Code Online (Sandbox Code Playgroud)
将修补程序合并到master后,我们有一个分叉的项目历史记录.我们将功能分支与rebase集成以保持线性历史,而不是简单的git合并:
git checkout new-feature
git rebase master
Run Code Online (Sandbox Code Playgroud)
这会将新功能移到master的顶端,这样我们就可以从master执行标准的快进合并:
git checkout master
git merge new-feature
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30352 次 |
| 最近记录: |