我在branchB中有两个文件,分别为ComfirmPhone.java和DesignSignIn.java。我只想将这两个代码合并到branchA中。这是我的问题。 ComfirmPhone.java是一个全新文件,其中branchA不存在,而DesignSignIn.java已经存在于branchA中。在DesingSignIn.java branchB中添加了一些代码,希望将这些代码合并到branchA中。
这是我尝试过的命令(现在我在branchA中):
git checkout --patch branchB ConfirmPhone.java
但是,该命令未检测到ConfirmPhone.java。而且我也尝试过:
git merge --no-ff --no-commit branchB
它确实合并了,但是没有指定我要查找的两个文件(ComfirmPhone.java和DesignSignIn.java)。
branchB已经被提交,并且两个分支都是最新的(git pull)。如果有人可以告诉我该命令如何将仅两个文件合并到branchA,将很有帮助
答案 0 :(得分:2)
每个提交都是您所有文件的集合。任何提交中的任何文件都可以复制到工作树中。分支名称仅是提交的名称。
因此文件不存在的情况非常简单。假设您在branchA
中没有文件 B.txt ,而您碰巧知道branchB
包含文件 B.txt 并且您希望该文件的版本在branchA
中存在。然后说
git checkout branchB -- B.txt
Presto,该文件出现在工作树中。当然,它现在是一个“新”文件,就像其他任何“新”文件一样;直到您branchA
和add
(在commit
中)之前,它才是branchA
的“组成部分”。
文件在两个分支中确实都存在的情况类似,但是现在,如果您不想完全覆盖工作树版本,则需要进行--merge
检出。假设您位于branchA
中,其中有一个文件 A.txt ;这意味着工作树还包含文件 A.txt 的版本。假设您碰巧知道branchB
也包含文件 A.txt ,并且您想要将该文件的该版本合并到该文件的该版本中。然后说
git checkout --merge branchB -- A.txt
结果是,如果可以自动合并两个版本的 A.txt ,它们将在工作树中合并。如果无法自动合并它们,则会留下标记为合并冲突的 A.txt 版本;编辑它以解决冲突。无论哪种方式,现在add
是文件,commit
。