从两个现有存储库创建一个git bare repo

时间:2016-07-08 10:08:41

标签: git version-control git-bare

我正在与另一位程序员开发代码。从一开始我不得不在不修改现有代码的情况下添加新模块,我复制了另一个程序员的源代码,我开始开发我的。由于我总是使用git,因此我设置了一个git存储库并执行了一些提交。

现在另一个程序员修改了部分代码,我还必须修改一些我不应该在开头修改的部分。现在情况如下:

  • 我有一个包含已修改文件和新文件的本地git仓库
  • 另一个程序员有一个文件夹(没有git)和修改过的文件

我们想合并我们的修改并开始使用git。我尝试使用他的代码作为起点在共享文件夹中创建一个裸仓库(即git --bare在他之前未跟踪的文件夹中)。然后我使用git remote add origin /path/to/local/bare/repo将此repo添加到我的远程命令中。然后我尝试用push origin master推送我的更改(可能包含冲突),但我发出以下消息:

Everything up-to-date

但是,如果我查看我的源代码和裸仓库中的源代码,我的更改就不存在了。

如何将两个代码(一个没有git,另一个使用git跟踪)放到同一个裸存储库中以启动共享版本控制?

2 个答案:

答案 0 :(得分:1)

你可能会从@VonC或@torek那里得到一个精彩的答案,但是我可以从你的Git版本代码中创建一个新的分支,然后用它来进行合并。在这个新分支中,您可以使用您的朋友修改过的文件覆盖您的文件。因此,如果您当前的分支是master,则可以执行以下步骤:

git checkout master                     # switch to 'master' branch
git checkout -b merge_branch            # create 'merge_branch' from 'master'
cp -r /path/to/friend/ /path/to/you/    # copy friend's files into merge branch
git commit -m 'changes from friend'     # commit this friend's work
git checkout master                     # back to the 'master' branch
git merge merge_branch                  # merge with friend's work

你现在可能会遇到很多冲突,但至少可以在Git中处理。我还应该提一下,只有当你的朋友拥有相同或几乎相同的项目文件结构时,这才有效。如果你的朋友的文件位于不同的位置,或称为不同的东西,那么这种方法将不起作用。

答案 1 :(得分:0)

第1步:假设您的朋友git init --bare创建了一个裸仓库。在此处复制朋友的更改。此目录在此处作为共享中央存储。

第2步:一旦您确定步骤1是否完成,请在完成本地提交后执行以下操作:

1. git pull origin <branch>  --> At this point you must see if there are new files/changes
2. git merge <branch>   --> At this point you must see conflicts and modifications
3. git push origin <branch>