无法理解Git分支、合并和重设基础
我知道,其中说,重新基地是为小变化的队友,而合并为大的变化 我将三名队友的三个Git保存在以下目录结构中,我们都有相同的初始代码:无法理解Git分支、合并和重设基础,git,branch,rebase,Git,Branch,Rebase,我知道,其中说,重新基地是为小变化的队友,而合并为大的变化 我将三名队友的三个Git保存在以下目录结构中,我们都有相同的初始代码: project | - I | - myTeamMate1 | - myTeamMate2 这些分支不在同一个Git中。这意味着我不能使用重基和合并。 我使用vimdiff在队友之间同步更改。然而,这很耗时 我尝试在所有分支都位于一个Git下的情况下创建以下目录结构,但未成功: project | - I - my
project
| - I
| - myTeamMate1
| - myTeamMate2
这些分支不在同一个Git中。这意味着我不能使用重基和合并。
我使用vimdiff在队友之间同步更改。然而,这很耗时
我尝试在所有分支都位于一个Git下的情况下创建以下目录结构,但未成功:
project
| - I - myTeamMate1 - myTeamMate2
但是,我为我和我的队友运行clone命令:
git clone <url>
对于一个由3人组成的团队,我应该使用哪种目录结构,这样我就可以使用
rebase
和merge
命令?它们不在您所说的同一个git中这一事实不会以任何方式限制您。Git是分布式的,这意味着您可以在这些存储库之间获取、合并、重新设置基础等等
查看
git-remote--help
了解如何命名您的队友存储库,以便轻松导入他们的更改,重新设置他们的基础或执行合并。无需更改您的目录结构,您的目录完全可用。只需一些其他想法即可完成Samuel的回答
- 与SVN不同,Git中的分支和目录是完全不相关的:有3个分支(团队中每个成员一个分支)并不意味着有3个目录。这不是您在问题中的意思(因为您的目录实际上是3个Git存储库的3个根目录),但我更愿意明确地提到它,以防万一;)
- Git是DVCS,3个存储库可以在任何地方(而不是在同一台计算机上的3个目录中)。如果可以通过UNC路径(
)访问它们,则可以将它们指定为远程\\desktop\path\to\repo
- Gitclone确实允许您获取对远程分支的引用,但不允许创建跟踪本地分支以获取同事的工作。ruby模块“”可以提供帮助
- 就像它重写你分支的SHA-1一样(因为你在另一个分支上重放你的提交):如果你的队友基于你的分支进行合并,他们每次都必须合并你的所有提交,即使是那些已经合并的
在这种情况下,最好有两个分支:- 一个工作分支您用于开发和重新设置基础(集成同行的工作,尽管该操作也可以在自己的分支中完成)
- 一个发布公共分支,您只能在其上合并稳定的工作,然后其他远程存储库可以将其用作合并源
您将注意到两个远程引用:elf和bard。这是我的两台远程机器,它们承载着软件。我可以随心所欲地推拉我的树枝到那里去。在您的情况下,您将拥有其他开发人员的远程存储库,他们将修改自己的分支。观看本教程将使您更好地了解其工作原理。祝你好运:)代码示例 跟踪远程分支
git remote add -t master Hnr git://github.com/userName/files.git
这不会下载分支。它只是编辑文件.git/config并添加几行代码,告诉git如何远程获取数据
要获得队友的分支,请跑步
git fetch Hnr
git branch -a
要想知道你真的有你队友的分支,跑吧
git fetch Hnr
git branch -a
或者只看你朋友的树枝
git branch -r
上述两个命令最初引起了我的困惑,因为我不知道它们。这让我尝试了其他不必要的命令来获得分支
第二种拥有朋友分支机构的方式
但是,请注意,您可以使用git clone将朋友的代码保存到一个单独的目录中,如下所示
git clone UrlAtGithub
然后,您显然可以如上所述使用Git remote在Git repo上建立分支:
git remote add master Hnr PATH/ToYourFriendRepo.git
结论:你可以使用两种方法让你的队友的分支为你服务,要么通过git克隆,要么不使用它。这两种方法都需要使用git-remote-add
。后者的优点似乎是只需运行一个命令。前者再次将你的队友的全部回购信息提供给你的硬盘
请参阅Git手册,了解如何更新远程分支。(注意:远程分支可以位于您的计算机上。它不必位于远程计算机上。您的分支也可以是远程分支,但这会限制您的工作流。)
接下来,您可能需要合并您朋友的spe
CONFLICT (add/add): Merge conflict in shells/externalPrograms
Auto-merging shells/smallApps/extract
CONFLICT (add/add): Merge conflict in shells/smallApps/extract
Auto-merging shells/smallApps/extract~
CONFLICT (add/add): Merge conflict in shells/smallApps/extract~
Automatic merge failed; fix conflicts and then commit the result.
git rebase
shells/smallApps/extract: needs merge
shells/smallApps/extract~: needs merge
cannot rebase: you have unstaged changes
git difftool master:README dev:README
git remote add -f YourUserName UrlIn@form.git
git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git push Masi master
git remote add github git@github.com:myLogin/myProject.git
git push github master