Git:使用添加和删除编辑未分段的文件

时间:2017-12-10 05:18:48

标签: git diff git-merge

我已经检查了一个git repo,并用一个类似(但不完全相同)的文件覆盖了其中一个文件。 Cats显示了一系列常见部分,但也显示了一些添加和删除(> df[grepl(regex, df$column, ignore.case = TRUE), ] # A tibble: 2 x 1 column <chr> 1 ape and some other text here 2 something about Cats git diff)。以下是---的示例:

+++

如何在显示添加和删除的情况下编辑此未停止的文件?换句话说,我基本上希望这个文件好像在合并后有冲突,所以我可以把我想要的两个版本的部分。

一种方法是将新文件提交到空白分支,创建合并冲突,然后手动编辑 - 但必须有一种更简单的方法,特别是因为.emacs基本上向我展示了大部分内容我想要(只是不是文件的其余部分)。

这听起来像是一种奇怪的情况,但通常在managing config files as described here并设置新机器时出现。

2 个答案:

答案 0 :(得分:1)

我认为if gData.REP.ContainsKey("HH") then 'Blah blah End If 在这里很有用。 您可以使用它在diff工具中打开文件,例如git difftool, 您可以在哪里查看差异并进行必要的修改:

vimdiff

其他有效git difftool -t vimdiff -y -- path/to/file (工具)值包括-temergekompare, 你也可以定义自己的。 有关详细信息,请参阅meldgit difftool --help

答案 1 :(得分:0)

git add命令有两个选项可用于在将补丁添加到索引之前编辑补丁(参见git-add reference):

-p选项允许您以交互方式决定应添加哪些更改。它会显示每个块的菜单,其中可以在其他操作中拆分和编辑补丁。使用e进行编辑会打开一个编辑器,可以编辑该块的差异。

-e选项跳过每个hunk菜单,直接为编辑器提供一个针对所有差异的大补丁。

然后将(可能修改的)补丁添加到索引(即差异变为暂存)并且可以直接提交。这将使工作副本保持其初始状态,编辑仅发生在索引上。然后可以使用git checkout -- <file>简单地丢弃索引和工作副本之间的剩余(或新添加的)差异(或者使用git checkout -p再次丢弃hunk)。