基于http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/,我们可以使用以下命令将更改从另一个分支合并到本地分支。
例如:
$git checkout master -- hello.c
此命令将hello.c从master分支合并到当前本地分支。
问题>如果我想使用master中的hello.c来覆盖我的本地分支文件而不进行任何合并,该怎么办?我应该使用哪个选项?
谢谢
- 更新 -
$ pwd
/sandbox/projectOne
$ git branch
feature/F_Source
* feature/F_Dest
master
$ git status -s
$
$ git diff feature/F_Source feature/F_Dest -- Messages/src/Hello.C | wc -l
165
$ git checkout feature/F_Source -- Messages/src/Hello.C
$
$ git diff feature/F_Source feature/F_Dest -- Messages/src/Hello.C | wc -l
165
$ git status -s
M Messages/src/Hello.C
$
如您所见,在结账之前,F_Source Hello.C和F_Dest Hello.C之间存在差异。结账后,仍然存在差异。所以我假设结账不是覆盖操作,否则我们不应该看到任何差异。
答案 0 :(得分:1)
问题>如果我想使用master中的hello.c来覆盖我的本地分支文件而不进行任何合并,该怎么办?
我应该使用哪个选项?
正如您已经发现的那样,这是做到这一点的方法(到目前为止您所做的)
git checkout <branch_name> -- <file path>
# On branch master - checkout different branch
git checkout <branch2>
# now checkout the desired file form different branch (master in this case)
git checkout master -- hello.c
由于您正在检查来自不同分支的文件,因此将进行合并。如果你不想合并,只需抓取你需要的文件内容,并覆盖当前文件,这样内容将是新的,这将是一个简单的改变。
答案 1 :(得分:1)
请注意您发布的链接中的引用:
您需要抓取的代码与少数几个文件隔离,主分支中尚未存在这些文件。
所以他称之为“合并”并不是真正的合并;它只是复制文件,不需要合并。当您致电git checkout master -- hello.c
时,确实覆盖您hello.c
的本地副本master
;它没有合并任何东西。