2013-02-12 99 views
0

我们已经使用了几个月的git,现在只有一个开发人员在为每个项目工作。这已经很棒了,我得到了主题分支的概念,发布分支合并并将&拉到远程服务器。Git多开发人员多分支

但是,当我们有多个开发人员在同一个存储库上工作时,我非常困惑。 我有错误信息表明我真的不知道我在做什么...

那么我该如何实现; 主要开发人员正在开发一个存储库或系统A.他创建了一个'Version 2.0_Alpha'分支,他正在本地工作并定期将其推送到我们的git服务器。主人是当前发布的版本。 我想帮助他并做一个特定的功能。我根据远程分支“Version 2.0_Alpha”创建了一个本地分支'Feature_15'。我做我的工作,我承诺本地存储库,我的同事继续在他的本地存储库上工作,但也推送到服务器。

当我需要将更改推送到服务器时,我希望能够推送我的'Feature_15'。然后,我的同事可以继续研究他的代码,当他准备好结账时,如果一切正常,请返回他的分支'版本2.0_Alpha'并合并到我的'Feature_15'中。

但是这不起作用,因为git决定让我第一次拉最新的'Version 2.0_Alpha',然后我迷失在我的知识和理解中。

有人可以让我知道,如果我在正确的思维方式,但只是错过了一些步骤,或者我会以错误的方式去做。

我们使用的是有限的功能git-gui,但在需要时可以使用gitExt或Git-batch。

回答

0

您可能创建了一个本地分支(Feature_15),用于在需要创建新的单独分支时跟踪远程分支(版本2.0_Alpha)。如果这是真的,那么你试图推动你的本地分支到远程'版本2.0_Alpha'分支,而不是创建一个远程'Feature_15'分支,这是错误的,并且不适合你。请参阅How do you stop tracking a remote branch in Git?修复(注意,您不需要删除您的本地分支,只需删除跟踪)。

+0

谢谢wRAR,我认为你是对的。我以为我创建了一个新的分支关闭远程版本2.0_Alpha,而我可能会创建一个跟踪分支到远程版本2.0_Alpha。 所以我会做的是创建一个跟踪分支到远程版本2.0_Alpha,然后从这是Feature_15创建一个新的分支。然后在完成工作后,将feature_15推送到远程。 这就是要走的路吗? – user2063073 2013-02-15 06:08:56

+0

@ user2063073是的 – wRAR 2013-02-15 10:23:15

-1

你开始喜欢这个

A--B--C Version 2.0_Alpha 
     \ 
     X--Y--Z Feature_15 

然后他做出改变

A--B--C--D--E--F 
     \ 
     X--Y--Z 

你需要衍合变更到他HEAD这样他就可以做一个干净的merge

A--B--C--D--E--F 
       \ 
        X'--Y'--Z' 

ref

+0

重新设定是不必要的,可能会(并且会)给没有经验的git用户造成混乱和数据丢失。 rebasing的唯一优势是保持历史线性,这对于某些人来说甚至不是优势。 – wRAR 2013-02-12 00:59:45

+0

@wRAR坚决不同意。如果这支球队没有学会重新组合,他们就会受到伤害。与“保持历史线性”相比,基础更具优势:合并提交并且难以调试;你被迫在历史的适当时候处理冲突;并且交互式重新分配提供了一大堆有用的工具来帮助保持历史的清洁。 – 2013-02-12 01:11:23

0

你所说的一切听起来不错,正确(对我来说至少)。

如果您遇到了一些错误,也许您可​​以准确显示您得到的错误。

你也可以做一些事情,当你提交你的文件时它会检查你所在的分支(它将显示在git status输出中)。检查提交的历史,可以选用一些GUI工具(我使用gitk在Linux上,但也有plenty of others)或通过命令行:

git log --graph --pretty=oneline --abbrev-commit --decorate=full --all 

你可以用的列表在结尾更换--all你想看到的,例如分支:

git log --graph --pretty=oneline --abbrev-commit --decorate=full origin/Version 2.0_Alpha origin/Feature_15 

你有混帐处理的唯一的事情是,当你需要更改推到某人已经推的东西,因为你最后拉到一个分支,但只要你和你的同事在不同的分支上工作,这不应该是一个问题。