git:怎样合并两个人对同一个 commit 做的不同新的 commmit?

2017-07-24 13:38:13 +08:00
 ericgui
我和合伙人,对一个昨晚的 commit,在没有相互交流的情况下,分别做了一些更改,也都提交了 commit

就是说 ,commit a,现在成了 commit b 和 b',这俩 commit 肯定有冲突,而且不只一个文件有冲突。
代码放在 github 上,现在 github 上是 commit a,我俩本地仓库是 b 和 b'

请教怎么改?

据说用 git rebase ? 文档没看明白,特来求助!

小项目,就只有一个 master branch。
7604 次点击
所在节点    程序员
31 条回复
liuzhen
2017-07-24 16:39:16 +08:00
merge
DaPanda
2017-07-24 17:01:02 +08:00
rebase 跟你现在的解决思路不矛盾吧,最后再用 rebase 把两个人的 commit squash 了就好。这个还是很有用的,不然两个 commit 是解决的同一个问题就比较乱。
mcfog
2017-07-24 17:37:34 +08:00
送一张图给说 merge 的,尤其还说 rebase 不好的同学



另外,pull 命令有`--rebase`开关,比手动 fetch&rebase 省力不少
Reficul
2017-07-24 21:14:11 +08:00
@mcfog 这个代码树很漂亮。
yuankui
2017-07-24 22:30:58 +08:00
这不就是最基本的分支合并吗?

git merge origin/master
anubiskong
2017-07-24 22:41:22 +08:00
这个难道不是最简单的那种。。。rebase 其中一个。。。然后再 rebase 另外一个吗。。。
ericgui
2017-07-24 23:23:42 +08:00
@QAPTEAWH 谢谢,你这个思路是个好思路,我下次试试,不试总是没法提高的。其实 git 的提示挺靠谱的,我已经根据 git 的提示,学到了不少东西了。
hugo775128583
2017-07-25 00:10:39 +08:00
原分支 x 上 reset 到 commit a,checkout 新的 branch y,add commit changes。
checkout 回分支 x,pull origin (拉取同事的修改,更新到 commit b'),cherry-pick 分支 y 上的 commit。
hugo775128583
2017-07-25 00:24:48 +08:00
#28 想了想不太确定现在冲突的情况,上述操作也可能要解决不少冲突。
Wolther47
2017-07-25 07:34:28 +08:00
@030 题主这种情况就应该用 rebase
wweir
2017-07-25 08:14:19 +08:00
merge 有一个 fast forword 的开关,可以达到类似 rebase 的效果。

rebase 有 rebase 的好处,merge 有 merge 的好处,rebase 分支线看着爽,merge 好追踪。具体选哪个无所谓,前后保持一致就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/377530

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX