git - 有没有办法让 Git 将特定文件从不同的分支拉到我的分支?
问题描述
嗨,我想知道是否有办法将特定文件从不同的分支拉到我的分支,同时比较/知道添加到我的文件中的内容。
我已经尝试过这种方法git checkout -m origin/branch <yourfilepath>
,似乎我index.html
基本上只是从我的队友那里交换index.html
并且没有从我的队友那里添加到我的代码index.html
。最后,我尝试使用git pull origin branch
atleast ,git pull
我可以看到我添加的内容index.html
(git fetch
+ git merge
=git pull
基本上我理解的内容git pull
可能是错误的),但问题是它没有拉取特定文件,它必须拉取整个分支。
如果有另一种方法来提取特定文件,我很想知道你对这个主题的看法。先感谢您
解决方案
在 git 中合并单个文件的支持并不多。您可以使用git merge-file
,但首先您需要三个文件副本:
- 你的版本
- 你队友的版本
- 一个“基本版本”,显示在进行任何一组更改之前文件的样子
例如,根据您所写的内容,当前状态可能如下所示:
... O -- A <--(origin/branch)
\
B <--(branch)
whereA
包含您队友的版本,并且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
根据您使用的形式,它的含义有所不同。在这种情况下,它并不意味着你想要什么(在那些意味着你想要什么的情况下,它可能会导致阶段性更改丢失)。
推荐阅读
- python - 在满足条件的同时找到与另一个像素相关的最近像素的最快方法。OpenCV Numpy
- sql-server - 如何从sql server中的一组数据中获取第一行数据
- jsf - 如何过滤上传文件的 MIME 类型
- ios - 如果我在新证书上更新我的配置文件(企业分发方法),我的应用程序会停止吗?
- jquery - 每 2 秒滑动一个 div
- jakarta-ee - 如何避免wildfly为JNDI创建依赖项
- javascript - 在堆栈导航器中保存 Switch 组件的状态
- python - 搜索 JSON 文件以获取记录并附加到数据框
- angular - Angular 7 中的单例服务
- regex - 以空格分隔的多个匹配项