以前大多个是一个的使用 Git, 到 Github 上提交的场景, 对多人开发合并项目经验不多,
现在遇到的是在 Github 上存在主分支, 本地需要修改多个功能和 bug 等等,
我是按以前实习回来的同学提示, 在多个分支开发不同的功能, 然后合并提交..
合并和提交的顺序不是确定的, 因此不能简单直接用 merge
每次一个个叠加.
有时我用 rebase
, 但有发现 commit
顺序不是时间顺序, 到线上被 merge
以后也不是非常清晰
于是我想问一下面对这样的场景, 用怎样的方式管理会更合适?
有在 Google, 但一些细节不清晰.. 比如 commit
显示顺序.. 还有再次被 merge
后的细节..
大家讲道理2017-04-21 11:20:40
Git supports many kinds of workflows. The one we usually use is this. Create a main branch remotely and create functional branches locally. The daily workflow is as follows:
Go to your own working branch$ git checkout work
Work....
Submit changes to the working branch$ git commit -a
Back to the main branch$ git checkout master
Get the latest remote modifications, no conflicts will occur at this time$ git pull
Back to the working branch$ git checkout work
Use rebase to merge the modifications to the main trunk. If there are conflicts, resolve them at this time$ git rebase master
Back to the main branch$ git checkout master
Merge the modifications of the working branch without conflicts at this time. $ git merge work
Commit to remote trunk$ git push
The advantage of this is that the history on the remote trunk is always linear. Everyone resolves conflicts on their local branch and does not create conflicts on the trunk.
PHP中文网2017-04-21 11:20:40
The answer given by the friend above is very good. I will add one more information here for the poster’s reference. This was written by Brother Ruan, [git branch management strategy](http://www.ruanyifeng.com/blog/2012/0...).
阿神2017-04-21 11:20:40
You can develop together on a branch. When you make changes, use
before submitting.git stash
In this way, all local modifications are cached in a stack, and then other people’s modifications are synchronized
git pull --rebase
The next step is to restore your changes to the latest node
git stash pop
Then use git commit to submit, so that the version of a branch will continue to develop in order, rather than like knitting a sweater. You can take a look at the comparison chart before and after we use this method
Before:
After