Git只将主文件中的单个文件合并到当前分支中

Ali*_*han 3 git version-control merge

我刚开始使用git.我从master创建了branch-A.我在branch-A中创建了文件abc.txt,并成功地将branch-A合并到master中.现在我在branch-A中使用相同的文件,并希望将master(即abc.txt)文件合并到branch-A(abc.txt)文件中.我尝试了"git checkout master abc.txt"但它用master的abc.txt替换了branch-A文件.

我知道"git merge master"会做这项工作,但如果有人能告诉我如何将单个文件合并到当前分支中.

提前致谢

Jef*_*ett 7

首先,确保您的工作目录是干净的.

然后你发现......

git checkout master abc.txt
Run Code Online (Sandbox Code Playgroud)

...将替换整个文件,但您可能没有意识到的是,如果您重置,现在可以根据这些差异制作补丁.因此,检查出的文件:

git reset --mixed
git add --patch abc.txt
Run Code Online (Sandbox Code Playgroud)

现在,您可以选择性地选择要包含,提交的更改,然后通过丢弃不需要的差异来努力重置以达到最终状态.

git commit -m "merge changes to abc.txt"
git reset --hard
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 0

您是否有理由只希望将这个单个文件包含在其中branch-A?在我看来,您更像是想branch-A在...之上进行变基master,因此发生的所有更改都master将包含在branch-A.

这是变基的文档: https: //git-scm.com/docs/git-rebase

基本上,它将带​​您:

      A---B---C branch-A
     /
D---E---F---G master
Run Code Online (Sandbox Code Playgroud)

              A'--B'--C' branch-A
             /
D---E---F---G master
Run Code Online (Sandbox Code Playgroud)

通过查看branch-A并致电

git rebase master

这意味着abc.txtmaster 上的提交 E、F 和 G 中发生的任何更改都将反映在您对 的提交中branch-A

Rebase 只是简单地检查并一一master应用提交。branch-A