您的位置:首页 > 其它

Git 问题, 一个 master, 多个新功能分支, 怎样有序地合并和提交?

2015-11-23 09:54 381 查看
转自:http://segmentfault.com/q/1010000000181403
以前大多个是一个的使用 Git, 到 Github 上提交的场景, 对多人开发合并项目经验不多,

现在遇到的是在 Github 上存在主分支, 本地需要修改多个功能和 bug 等等,

我是按以前实习回来的同学提示, 在多个分支开发不同的功能, 然后合并提交..

合并和提交的顺序不是确定的, 因此不能简单直接用
merge
每次一个个叠加.

有时我用
rebase
, 但有发现
commit
顺序不是时间顺序,
到线上被
merge
以后也不是非常清晰

于是我想问一下面对这样的场景, 用怎样的方式管理会更合适?
有在 Google, 但一些细节不清晰.. 比如
commit
显示顺序..
还有再次被
merge
后的细节..

git

github

链接
2 评论

更多

1

有一个著名的分支模型呢。也可以看看github flow http://hooopo.writings.io/articles/fe...

#1 hit9 ·
2013年03月22日 · 回复

展开评论

默认排序时间排序


3 个回答

答案对人有帮助,有参考价值
6
答案没帮助,是错误的答案,答非所问



coder 1.8k 2013年03月22日
回答

git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下:
去自己的工作分支

$ git checkout work

工作

....

提交工作分支的修改

$ git commit -a

回到主分支

$ git checkout master

获取远程最新的修改,此时不会产生冲突

$ git pull

回到工作分支

$ git checkout work

用rebase合并主干的修改,如果有冲突在此时解决

$ git rebase master

回到主分支

$ git checkout master

合并工作分支的修改,此时不会产生冲突。

$ git merge work

提交到远程主干

$ git push

这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突。

链接
3 评论

更多



在最后一步,你提交的时候,若正巧有人在你前面执行了和你一样的流程,这时就会冲突了,就得git pull; git rebase origin/master; git push

#1 zz_tyu · 2014年03月27日 · 回复



"合并工作分支的修改,此时不会产生冲突", 但是我执行时提示:Please, commit your changes or stash them before you can merge.

error: The following untracked working tree files would be overwritten by merge:

#2 gankotech · 2014年11月21日 · 回复



回复 gankotech

你确定提交了本地的修改了吗?提示的信息是让你先commit

#3 coder · 2014年11月21日 · 回复

请先 登录 后评论

答案对人有帮助,有参考价值
0
答案没帮助,是错误的答案,答非所问



巨臣 2 2013年03月22日
回答

上面那位仁兄的回答很好,我这里再补充一个资料,给楼主作为参考。这个是阮兄写的,[git分支管理策略](http://www.ruanyifeng.com/blog/2012/0...)。

链接
评论

更多

答案对人有帮助,有参考价值
0
答案没帮助,是错误的答案,答非所问



liujin834 3 4月20日
回答 · 4月20日 更新

可以在一条分支上一起开发,你有变更的时候,在提交前,使用
[code]git stash

这样将本地的修改全部缓存在一个堆栈中了,然后把别人的修改同步过来
[code]git pull --rebase

下一步是将自己的变更恢复到最新的节点上
[code]git stash pop

然后再使用git commit提交,这样就会让一个分支的版本按顺序继续发展,而不是像织毛衣一样,你可以看一下我们使用这种方法前后的对比图
之前:



之后

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: