2013-04-05 162 views
1

在分支A上,我有两个'故事',一个是我想要承认的,一个是我没有承诺的。Git合并 - 不提交跟踪文件

由于这些更改不在功能分支上,所以我需要将两者分开。我用

git merge --no-commit --no-ff A 

而在主人。这给了我一个临时区域来调整预期,并且我

git reset file 

就有关不需要这些文件提交。这种方法不正确吗?结果出乎意料。没有添加文件(根据需要),但他们的记录是。 Git将他们追踪为已删除的文件!现在,当从主机合并回A时,它会尝试删除未提交的作品。它非常奇怪,因为主从没有这些文件。这是非常不方便的,任何人都可以建议我如何去“同步”这些更改?或者可能是更好的方法,为什么会 - 不提交呢?

回答

1

我觉得最干净的方法是从A和master的mergebase中创建两个分支story1story2。然后分开A提交樱桃采摘和编辑/随地吐痰提交。所以你分别为每个故事分两个新的分支。然后你可以很容易地合并。

+0

一个很好的方法,但我希望避免樱桃采摘的开销,这就是为什么我使用 - 不承诺通过文件做到这一点。这是一个错误还是应该--no-commit这样工作?我已经提交了甚至没有添加到分支的文件的日志条目。为什么会这样做? – marked 2013-04-05 17:24:02

+1

@marked你正在合并两个历史。这意味着所有提交都出现在合并历史记录中。所以,这意味着合并分支会为添加的文件创建一个历史记录条目,然后在合并期间将其删除。听起来很直截了当,它确切地描述了你所做的,不是吗?虽然樱桃采摘意味着你有选择地选择你想从历史中挑选什么。 – kan 2013-04-05 17:36:18

+0

您正在执行的选择性合并和拆分分支之间的实质性区别在于,如果选择仅合并story1更改合并,则以后无法合并story2更改,因为您无法* remerge *。但分裂的分支可以按任何顺序合并。 – kan 2013-04-05 17:43:22