Git - 在同一个文件中,如何提交添加但同时撤消删除?

时间:2016-01-30 12:00:56

标签: git

当出现合并冲突时,您可以编辑文件以决定最终停留的内容。

有没有办法获得相同的界面,即使这是一个快进提交?

这对我来说是做我想做的最简单的方式 我过早地删除了文件中大约20行代码并添加了新代码。

当我提交时,我想提交新代码带回旧代码。

2 个答案:

答案 0 :(得分:1)

当更改相同代码的多个位时发生合并冲突。在你的情况下,你已经改变了一些代码然后再改变它,所以没有冲突。

如果您不需要添加的代码,则可以执行还原提交。 如果您想要部分内容,则需要手动合并git show {commitid}:{pathToFile} > {oldFile}

然后您可以选择所需的代码

答案 1 :(得分:1)

  

当我提交时,我想提交新代码并带回旧代码。

有几种方法可以实现您的要求:

简单的一个就是复制你想要在你的文件中的代码并提交它。

其他一些选项:

git add -p

您始终可以使用互动add -p。它允许您根据需要编辑添加的文件。

您可以选择添加哪一行而不是哪一行。

git rebase -i

提交文件后,您可以rebase内容,编辑文件并将任何代码添加到文件中。

您可以使用作为交互式rebase的壁球。您只需要记住 rebase 的结果。 拥有该分支副本的任何人都必须删除它并再次获取,因为您的历史记录已更新。

完成重写历史记录后,您必须删除远程分支或使用-f强制推送。

为了做一个git squash,请按照以下步骤操作:

// X is the number of commits you wish to squash
git rebase -i HEAD~X

一旦你压缩你的提交 - 选择e来编辑所需提交的内容,进行更改并提交。在您的情况下,将缺少的文件添加到B提交。

enter image description here

git format-patch

git format-patch会在您的历史记录中为每次提交生成一个补丁(差异)文件,因此您可以再次按照您希望的方式对其进行编辑,然后git apply修补程序

enter image description here