我正在玩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
答案 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如果您不完全了解它的功能,可能会引入许多误解。