GIT 将一个存储库的分支合并到另一个存储库的分支

GIT merge a branch from one repo to a branch of another repo

提问人:Yeoman78 提问时间:10/26/2023 最后编辑:jlxYeoman78 更新时间:10/26/2023 访问量:47

问:

尝试将一个存储库的分支合并到另一个存储库的分支时,会遇到一些 GIT 问题。问题的核心是,一旦该过程完成并且我尝试推送到分支,我正在处理 GIT 错误,指出我只能将自己的提交推送到此存储库。

到目前为止采取的步骤:

git clone <my_repo> - This contains commits and changes I have made 
git remote add fork <forked_repo> This contains commits and changes made by a work mate 
git fetch <forked_repo>/<forked_branch> 
git checkout <my_branch> 
git merge <forked_repo>/<forked_branch>

---解决冲突

git commit
git status
    Your branch is ahead of <my_branch> by 11 commits

git log
    HEAD < my commit
    HEAD-1 < work mates commit
    HEAD-2 < my commit
    HEAD-3 < my commit
    HEAD-4 < work mates commit

等等。

git push
    remote: You can only push your own commits in this repository
    remote: Commit <SHA> was committed by work mate

我知道它给了我错误,因为我的提交堆栈包含我的同事的提交。我所期望的是,我可以使用合并函数生成一组代码,这些代码既是他们的当前分支,也是我的分支,然后将这个新的代码库推送到我的分支。

简单的解决方法似乎是关闭预接收钩子并允许其他人进行的提交,但我觉得我没有正确地做某事,感觉就像大多数人在不必关闭提交保护的情况下会做的事情?

谢谢

git git-merge git-commit

评论

0赞 TonyArra 10/26/2023
您是想合并其他分支的历史记录还是只是合并代码?如果您不关心历史记录,则可以使用git merge --squash <forked_repo>/<forked_branch>
0赞 Yeoman78 10/26/2023
最好保留历史记录,以便将来如果有人正在查看以前的更改,他们会了解它是如何达到现在的位置的。如果这是不可能的,那么合并 --sqaush 听起来它会完成这项工作,使用 --squash 有什么问题吗?
1赞 Schwern 10/26/2023
预接收钩子只允许你推送自己的提交是不寻常的,并且随着你的发现,会妨碍协作。我会说把它关掉。
0赞 TonyArra 10/26/2023
如果你需要在不禁用钩子的情况下保留历史记录,你的伴侣必须首先将他自己的提交推送到你的存储库。否则,您将需要重写分支历史记录,以便您成为其提交的作者。这有点麻烦。 允许您根据更改创建一个或多个提交。一个“陷阱”是历史的丢失,或者你没有真正合并分支的事实,所以你的伴侣不能轻易地把你的工作拉回他的分支而不遇到同样的问题。--squash
2赞 TonyArra 10/26/2023
我也同意@Schwern,如果这是您工作流程的常规部分,那么这个钩子会很痛苦。

答: 暂无答案