git:如何将某个作者的所有提交转换为一个单独的分支?

8cdiaqws  于 2023-04-19  发布在  Git
关注(0)|答案(2)|浏览(146)

我正在使用一些没有使用SCM的代码+,并以所有项目文件的形式偶尔接收更新,尽管其中只有一些文件只做了一点更改。到目前为止,我只是将自己的更改放在git repo中,并通过手动git add -p会话解决这些“更新”,这对我自己的更改量越来越烦人(那些还没有确定要发布的)增加,因为幸运的是我为上述“补丁”做了git commit --author "the others",我想知道:
一个作者的所有提交如何被分离到一个新的分支?
(我不介意在这种情况下重写历史,回购只被我使用)
理想的解决方案应该包括在每个“补丁”之后将其他分支合并到我的分支中,但现在最后的合并可能就足够了。

  • 是的,绝地武士确实感觉到你在那里畏缩
33qvvth1

33qvvth11#

我最近为一个人做了这样的事:

git checkout -b other_work <sha1_of_where_to_rebase>
git log --reverse --author=others --format=%H <sha1_range> | xargs -n 1 git cherry-pick
pvcm50d1

pvcm50d12#

我不太明白你在做什么,但是你描述的第三方代码库的问题,被称为“供应商分支”。下面是我如何处理它:
为第三方版本创建一个分支,例如vendor。我假设您的分支名为master。当他们发布新版本时,您可以执行以下操作:

git stash # If you have any uncommitted files
git checkout vendor
tar -xzvf [new files]  # This might be unzip or whatever, rather than tar
git commit -am "Version xxx from upstream"  # Adjust commit message to suit
git checkout master
git merge vendor   # Bring changes into your branch (you could use rebase here if you prefer to keep all your changes on top of all their changes)
git stash pop # Restore your uncommitted files

ps.而不是git add -p,我会使用git gui。我一开始对使用gui持怀疑态度,但我现在不能没有git guigitk(或mac上的gitx)。

相关问题