有没有办法 Git 将特定文件从不同的分支拉到我的分支?
Is there a way to Git pull a specific file from a different branch to my branch?
你好,我想知道是否有办法将特定文件从不同的分支拉到我的分支,同时 compare/know 我的文件中添加了什么。
我试过这个方法git checkout -m origin/branch <yourfilepath>
看来我的index.html
基本上只是从我的队友index.html
交换而没有从我的队友那里添加代码index.html
到我的。最后我尝试使用 git pull origin branch
至少使用 git pull
我基本上可以看到从我的 index.html
(git fetch
+ git merge
= git pull
添加了什么我从 git pull
中了解到,我可能是错的)但问题是它不会拉取特定文件,它必须拉取整个分支。
如果有另一种拉取特定文件的方法,我很想知道您对这个主题的看法。提前谢谢你
git 对合并单个文件的支持不多。您可以使用 git merge-file
,但首先您需要文件的三个副本:
- 你的版本
- 你队友的版本
- 一个“基本版本”,显示文件在进行任何一组更改之前的样子
例如,根据您所写的内容,当前状态可能如下所示:
... O -- A <--(origin/branch)
\
B <--(branch)
其中 A
包含您队友的版本,B
(目前已在 branch
签出)包含您的版本。然后你可以做类似
的事情
git checkout origin/branch -- yourfilename
mv yourfilename yourfilename.theirs
git checkout $(git merge-base branch origin/branch) -- yourfilename
mv yourfilename yourfilename.base
git checkout HEAD -- yourfilename
git merge-file yourfilename yourfilename.base yourfilename.theirs
您可能希望保留 .base 和 .theirs 文件一段时间,同时检查结果(尤其是在存在冲突时);但你可能想在完成后清理它们
rm yourfile.base yourfile.theirs
此外,请注意:小心 -m
选项 checkout
;根据您使用的 checkout
的形式,它的含义有所不同。在这种情况下,它并不意味着您想要什么(在那些意味着类似于您想要的东西的情况下,它可能会导致阶段性更改丢失)。
你好,我想知道是否有办法将特定文件从不同的分支拉到我的分支,同时 compare/know 我的文件中添加了什么。
我试过这个方法git checkout -m origin/branch <yourfilepath>
看来我的index.html
基本上只是从我的队友index.html
交换而没有从我的队友那里添加代码index.html
到我的。最后我尝试使用 git pull origin branch
至少使用 git pull
我基本上可以看到从我的 index.html
(git fetch
+ git merge
= git pull
添加了什么我从 git pull
中了解到,我可能是错的)但问题是它不会拉取特定文件,它必须拉取整个分支。
如果有另一种拉取特定文件的方法,我很想知道您对这个主题的看法。提前谢谢你
git 对合并单个文件的支持不多。您可以使用 git merge-file
,但首先您需要文件的三个副本:
- 你的版本
- 你队友的版本
- 一个“基本版本”,显示文件在进行任何一组更改之前的样子
例如,根据您所写的内容,当前状态可能如下所示:
... O -- A <--(origin/branch)
\
B <--(branch)
其中 A
包含您队友的版本,B
(目前已在 branch
签出)包含您的版本。然后你可以做类似
git checkout origin/branch -- yourfilename
mv yourfilename yourfilename.theirs
git checkout $(git merge-base branch origin/branch) -- yourfilename
mv yourfilename yourfilename.base
git checkout HEAD -- yourfilename
git merge-file yourfilename yourfilename.base yourfilename.theirs
您可能希望保留 .base 和 .theirs 文件一段时间,同时检查结果(尤其是在存在冲突时);但你可能想在完成后清理它们
rm yourfile.base yourfile.theirs
此外,请注意:小心 -m
选项 checkout
;根据您使用的 checkout
的形式,它的含义有所不同。在这种情况下,它并不意味着您想要什么(在那些意味着类似于您想要的东西的情况下,它可能会导致阶段性更改丢失)。