本地中央存储库出现问题,从另一个本地位置拉出和推送更改

时间:2019-03-21 19:28:41

标签: git

我正在玩Git,我创建了一个名为test.txt的文本文件,其中带有一个简单字符串“ Hello”。如果我们可以假装多个用户登录到同一台计算机,但是每个用户都想从一个中央存储库中分支出来,请进行更改,然后再推回它:

Users/Ari/MyCentralRepo/test.txt

我进入MyCentralRepo并将其初始化为存储库并添加文件。

$ git init
$ git add .
$ git commit 'first commit'

现在,为了假装我是另一个也可以访问上述目录的用户,但是我想克隆该项目,我应该这样做:

$ git clone Users/Ari/MyCentralRepo -- Users/JohnSmith/Dev_branch01

这将创建一个仓库的克隆,John Smith可以在不影响MyCentralRepo的情况下使用仓库

John Smith对test.txt文件“ Hello world!”进行了一些更改。     $ git状态     #显示test.txt进行了更改     $ git添加。     $ git commit -m'添加了更多文本'

John Smith如何将更改推回Users / Ari / MyCentralRepo?与git remote

有关吗

1 个答案:

答案 0 :(得分:2)

John将不得不“推送”到另一个用户的仓库中。克隆时,您从中克隆的回购协议被设置为名为“ origin”的远程站点,因此john必须执行类似git push origin master的操作。唯一的事情是,因为origin是一个“真实的”仓库(而不是裸仓库),所以如果原始用户的分支主机已签出,则git可能会拒绝推送操作(这是另一个问题)。 John可以尝试类似git push origin master:john-branch之类的东西,然后您将在原始遥控器上得到第二个分支。

建议: 设置中央裸仓库,并让用户与其交互。

创建第三个裸仓库:

git init --bare some-location-on-your-fs/central

然后,转到每个开发人员并将此仓库添加为远程仓库。第一个开发人员(Ari?)可以将master推送到那里:

git remote add central-repo path-to-central-repo # done by both developers
git push central master # done by Ari

让John看到中央的内容:

git fetch central-repo
git push central-repo master # john is pushing his master branch into the central repo

然后Ari可以看到这些更改并从那里开始工作

git fetch central-repo
git merge central-repo/master

旁注:我不使用pull来使您逐步了解正在发生的事情... pull如果您不完全了解它的功能,可能会引入许多误解。

相关问题