【问题标题】:how to modify files in git, i mean only adding the changes not deleting them如何在git中修改文件,我的意思是只添加更改而不是删除它们
【发布时间】:2019-09-17 11:03:08
【问题描述】:

我的分支中有一个文件,当我将它合并到 master 并推送 master 时,它工作正常,然后我编辑文件,删除其中的一些文本部分,并添加一些部分,我正在这样做分支,所以当我再次合并它时,我只想添加主文件中的文本,并且不应该合并删除的部分。我怎么做? 这是我的存储库 https://github.com/intern-it123/myrepo.git

【问题讨论】:

    标签: git github git-merge


    【解决方案1】:

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

    git add -p

    它被称为patch modeinteractive mode。执行git add -p 后,您将获得可供选择的选项列表:

     Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
    

    如果我理解正确,您有一个大文件,您只想使用(添加)文件的一部分。在这种情况下,您需要将其与 s 分开,然后选择 y/n 是否使用此块。


    And here the option you will have to choose from:

    • y 为下一次提交暂存这个块
    • n 不要为下一次提交暂存这个块
    • q 退出;不要上演这个大块或任何剩余的
    • a 暂存这个大块和文件中的所有后续大块
    • d 不要在文件中暂存这个大块或任何后面的大块
    • g 选择一个大块去
    • / 搜索匹配给定正则表达式的块
    • j 让这个大块未定,看下一个未定大块
    • J 让这个大块不定,看下一个大块
    • k 让这个大块未定,查看之前未定的大块
    • K 让这个大块未定,查看上一个大块
    • s 将当前块分割成更小的块
    • e 手动编辑当前块
    • ? 打印帮助

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

    【讨论】:

    • $ git add -p myFirstBranch.txt diff --git a/myFirstBranch.txt b/myFirstBranch.txt index 6f3aab7..5be9c98 100644 --- a/myFirstBranch.txt +++ b/myFirstBranch.txt @@ -1 +1 @@ - in branch dvs, added \ No newline at end of file +sasd in branch dvs, \ No newline at end of file Stage this hunk [y,n,q,a,d,e,?]?
    • 我怎么不让 --- 发生
    • 我只想在这里添加,而不是删除
    • 为每个更改选择 [y 或 n](是或否)
    • 更改在同一个文件中,
    【解决方案2】:

    没有真正简单的方法可以做到这一点。合并机制的设置是为了将 all 来自另一个分支的更改合并到当前分支[1]。

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

    要更改整体提交的处理方式,您可以切换合并策略。例如,ours 策略保持当前分支中的内容不变,即使当前分支中的文件未更改但在“其他”分支中更改。

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

    而且我还没有找到很好的文档来做这件事。这是有道理的,因为我不认为这是最终用户打算与 git 交互的一种方式。可以在此处找到有关自定义合并策略的一些信息:git: How do I add a custom merge strategy?


    [1] 嗯....它比这更笼统一些;您可以说“提交行”而不是分支,并且通过章鱼合并,您可以一次合并两个以上(如果满足某些条件)。

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 1970-01-01
      • 2014-10-12
      • 2012-03-03
      • 2022-10-05
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多