如何在git中修改文件,我的意思是只添加更改而不是删除它们

如何在git中修改文件,我的意思是只添加更改而不是删除它们,git,github,git-merge,Git,Github,Git Merge,我在我的分支中有一个文件,当我在master和push master中合并它时,它工作正常,然后我编辑文件,删除其中的一些文本部分,并添加一些部分,我在分支中这样做,所以当我再次合并它时,我只希望添加master中的文件中的文本,而不应该合并删除的部分。我该怎么做? 这是我的存储库 添加文件时,请使用git add-p并仅选择所需的更改 git add-p 它被称为补丁模式或交互模式。执行git add-p后,您将获得可供选择的选项列表: Stage this hunk [y,n,q,a,d,

我在我的分支中有一个文件,当我在master和push master中合并它时,它工作正常,然后我编辑文件,删除其中的一些文本部分,并添加一些部分,我在分支中这样做,所以当我再次合并它时,我只希望添加master中的文件中的文本,而不应该合并删除的部分。我该怎么做? 这是我的存储库

添加文件时,请使用git add-p并仅选择所需的更改

git add-p
它被称为
补丁模式
交互模式
。执行
git add-p
后,您将获得可供选择的选项列表:

 Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
如果我理解正确,您有一个大文件,您只想使用(添加)文件的一部分。在这种情况下,您需要将其与s分开,然后选择是/否,以确定是否使用此块


这里是您必须从中选择的选项:
  • 为下一次提交准备好这个帅哥
  • n不要在下一次提交时展示这个大块头
  • q退出;不要上演这个大块头或其他任何一个
  • 这个大块头和所有后来的大块头的舞台
  • d不要在文件中展示这个大块头或任何后来的大块头
  • 选择一个帅哥去
  • /搜索与给定正则表达式匹配的帅哥
  • j让这个帅哥犹豫不决,看下一个犹豫不决的帅哥
  • J让这个帅哥犹豫不决,见下一个帅哥
  • k让这个帅哥犹豫不决,看以前的帅哥犹豫不决
  • K让这个帅哥犹豫不决,见前一个帅哥
  • s将当前的大块头分割成更小的大块头
  • e手动编辑当前对象
  • ??打印帮助


在您的情况下,您必须拆分更改,然后只选择所需的更改。

这并不是一种简单的方法。合并机制用于将其他分支的所有更改合并到当前分支[1]

如果合并的双方都使用合并驱动程序更改了文件,则可以调整文件的合并方式。这是相对容易的,并且有很好的文档记录。但是,除非在master上修改文件,否则来自分支的更改将按原样应用,而无需调用自定义合并驱动程序

要更改整个提交的处理方式,您需要切换合并策略。例如,
ours
策略保持当前分支中的状态,即使当前分支中有一个文件未更改,但“其他”分支中有一个文件更改

所提供的合并策略都不能满足您的需要,因此您必须编写自己的合并策略。这仍然需要做默认策略所做的大部分事情(不是一个小任务),并且必须修改“他们的”补丁才能启动(识别并删除不需要的更改)

我还没有找到好的文档来做这件事。这是有道理的,因为我不相信这是最终用户与git交互的方式。有关自定义合并策略的一些信息可以在这里找到:



[1] 嗯……它比这更一般一点;你可以说“提交行”而不是分支,通过八达通合并,你可以一次合并两个以上(如果满足某些条件).

$git add-p myFirstBranch.txt diff--git a/myFirstBranch.txt b/myFirstBranch.txt索引6f3aab7..5be9c98 100644--a/myFirstBranch.txt+++b/myFirstBranch.txt@@@1+1@--如何不让--a happen我只想在此处添加,而不是删除为每个更改选择[y或n](是或否)更改位于同一文件中,