我使用git来管理latex中的出版物,因此我的项目本质上非常简单。我正在使用一个服务,我有一个免费的存储库,因此我想使用What's the best practice for putting multiple projects in a git repository?的解决方案2,但我不知道如何创建分支。
我是否只是结帐主人,然后再使用
git push origin myProject
有人可以发布完整的工作流程,在分支机构中创建两个独立的存储库吗?
答案 0 :(得分:2)
当您从git init
开始时,您将获得并清空存储库,并为您设置默认的master
分支。
之后,您可以使用git branch <branch-name>
创建新分支,然后使用git checkout <branch-name>
切换到该分支。执行此操作的简短方法是git checkout -b <branch-name>
,其中-b
表示分支是新的,应该创建。
每个存储库中每个分支的内容可能完全不同。您链接的两个解决方案的工作方式类似,更改了用于更改您正在处理的项目的过程。
假设您链接的第二种方法(多个repos推送到不同分支上的单个遥控器):
为遥控器上应存在的每个“项目”创建存储库。
$ cd /to/the/location/of/projects/project-1
$ git init .
$ git remote add origin <url to remote repo>
$ git push -u origin master:project-1
现在/to/the/location/of/projects/project-1
目录内是一个空的git repo,默认设置了分支master
。最后一个命令将本地repo的master
分支推送到远程repo的project-1
分支(并使用-u
跟踪它)。 注意:使用此第一个推送命令在远程仓库上创建project-1
分支。
为第二个项目创建另一个回购。
$ cd /to/the/location/of/projects/project-2
$ git init .
$ git remote add origin <url to remote repo>
$ git push -u origin master:project-2
现在第二个项目设置为另一个本地仓库,但是被推送到与第一个仓库相同的仓库,尽管在另一个分支内。 -u
标志使远程master
分支中的本地project-2
分支跟踪发生变化。
远程存储库(已添加为origin
到每个本地存储库)具有三个分支:master
(如果远程软件为您执行此操作,则会自动创建), project-1
和project-2
。 project-1
从第一个项目的本地仓库接收更新。 project-2
从您拥有的第二个本地仓库接收更新。
现在,当您在第一个本地仓库内工作并进行更改时,您可以使用
将它们更新到远程# Inside `project-1` directory repo
$ git commit -am "Commiting changes in project 1."
$ git push origin master:project-1
与第二个本地回购相似
# Inside `project-2` directory repo
$ git commit -am "Commiting changes in project 2."
$ git push origin master:project-2
这种方法在以下方面很好:
缺点是:
project-1
主服务器推送到远程project-2
分支,依此类推。你可以创建易于记忆的别名或其他东西来对抗这种情况。如果您不希望为每个本地存储库使用默认的master
分支,则可以使用
# Inside the `project-1` dir locally.
$ git checkout -b project-1
$ git push -u origin project-1:project-1 # the ':project-1' part might be redundant here.
...
# Inside the `project-2` dir locally.
$ git checkout -b project-2
$ git push -u origin project-2:project-2 # the ':project-2' part might be redundant here.
底线:小心你正在处理的分支。在进行更改和提交之前,请务必检查正确的一个。务必将右分支推到正确的远程分支。务必记录哪个分支包含哪些项目内容。
关于克隆:
如果您或其他人克隆了远程存储库(其中包含每个不同项目的远程分支),则默认情况下,他们会将整套项目分支克隆到其开发环境中。这不是世界末日,但是克隆回购中的工作流最初(几乎)反映了您在问题中链接的解决方案1:1个本地存储与不同分支上的所有项目。
要仅克隆单个分支(在您的情况下为项目),您可以使用
$ git clone -b project-x --single-branch <remote-url>
编辑:
要将远程存储库中的更改同步到本地项目,应避免使用git pull
,因为它会自动进行可能会产生冲突的提取和合并。
考虑到你在两个本地回购,其中master
分支用于开发,远程分支project-1
和project-2
位于远程仓库中:
# Update project 1 from remote inside the project-1 repo dir.
$ git fetch origin # fetch changes from origin
$ git merge origin/project-1 master # merge remote project-1 branch to local master branch