首页 > 解决方案 > 如何合并 git 存储库和其他一些本地存储文件?

问题描述

我们已经推送了一个存储库。它在 1 个月前被推送到 master,开发人员一直在研究它,已经创建了分支合并代码等。

另一方面,另一位开发人员已经研究了在推送到掌握之前的代码。而且这个开发者的代码不在 git 上。所以他的代码不包含存储库上的更改。让我们称他的代码为本地 X。

我想将它们合并在一起。但是要决定哪些代码有用,哪些没有。我在本地 X 上试过这些:

git init
git remote add origin https://gitlab.com/xyz/xyz
git pull origin master

它不拉。我无法决定我该怎么做。

标签: git

解决方案


假设本地 X在 commit 之后与上游代码不同123abcd,您可以git clone进入一个新目录,branch-x在该提交处创建一个新目录,然后将开发人员的更改复制到该分支并提交并推送它。然后将其合并到master正常的 Git 工作流程。

git clone "$url" upstream
cd upstream
git checkout 123abcd
# detached branch
git checkout -b x-branch
# now copy in changes
cp ../local-x/changedfile ./
cp ../local-x/subdir/*.py ./subdir/
:
git add -A
git commit -m "Checked in changes from 1+ month of random activity"
git push origin branch-x

在合并之前不需要实际推送这个新分支;但我认为,如果您需要撤消部分或全部后续工作以将其合并到master.

如果有任何新添加的文件,git add在最终提交和推送之前将它们分开。显然,如果您可以将其构建为多个巨大的提交,那么对于任何试图理解最终合并到master.

本地分支是在第一次提交之前还是之后发散并不是一个关键问题。理论上你可以有一个最终不会植根于第一次提交的分支,但我认为它在这里并没有真正增加任何价值。


推荐阅读