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"会做这项工作,但如果有人能告诉我如何将单个文件合并到当前分支中.
提前致谢
首先,确保您的工作目录是干净的.
然后你发现......
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)
您是否有理由只希望将这个单个文件包含在其中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