我当前的一个相当大的项目(另一个项目的分支)的工作流程要求我经常挑选某些提交,并在一个子目录中轻松找到文件。
理想情况下。我可以通过引用引用特定文件的最新提交(以及它的所有依赖项来简化工作流程。显然。我想要完整的,未经更改的提交)。
我"拉文件A"应引入引用对fileA的更改的所有新提交。
有办法以某种方式这样做吗?
预期结果:从远程存储库中提取/合并引用指定文件的所有新提交。
当前工作流程:浏览文件的历史记录,注释(设置)提交SHA1,git cherry-pick <SHA1>
答案 0 :(得分:0)
分支会想到这一点。
分支的目的很简单:拥有一系列关于特定方向的特定开发流程的提交。然后,如果希望在该分支中完成的开发成为主项目的一部分,则合并分支。否则它将被删除。
最好的办法是在包含该文件的分支上执行git pull
。
答案 1 :(得分:0)
这个解决方案非常接近我想要的(只有文件夹而不是文件。虽然,正如我刚刚发现的那样,这可能是一个更加理智的方法。)
https://stackoverflow.com/a/32082356/3628813
这将按逆时间顺序为您提供工具/我的工具(尚未在featureA中)中提交的提交列表:
git log --no-merges featureA...master tools/my-tool
换句话说:
git log --no-merges source_branch...dest_branch my/firstpath
my/secondpath [...]
要按时间顺序获得所需的提交,您需要 首先反转输入行的顺序(例如使用tail -r或 tac),然后隔离提交哈希的列(例如使用cut):
git log --format=oneline --no-merges featureA...master tools/my-tool \
| tail -r \
| cut -d " " -f 1
要立即完成整个操作,请执行以下操作:
git cherry-pick $(git log --format=oneline --no-merges
featureA...master tools/my-tool | tail -r | cut -d " " -f 1)