0

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

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

那么我要达到什么目标?主要开发人员正在开发存储库或系统 A。他创建了一个“版本 2.0_Alpha”分支,他在本地工作并定期推送到我们的 git 服务器。master 是当前发布的版本。我想帮助他并做一个特定的功能。我基于远程分支“2.0_Alpha”创建了一个本地分支“Feature_15”。我做我的工作,我提交到本地存储库,我的同事继续在他的本地存储库上工作,但也推送到服务器。

当我将更改推送到服务器时,我希望我可以推送我的“Feature_15”。然后我的同事可以继续处理他的代码,当他准备好检查已经完成的事情时,如果一切正常,回到他的分支'Version 2.0_Alpha'并合并到我的'Feature_15'中。

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

有人可以让我知道我是否走在正确的思路上,但只是错过了一些步骤,还是我走错了路。

我们正在使用功能有限的 git-gui,但在需要时很乐意使用 gitExt 或 Git-batch。

4

3 回答 3

0

您可能创建了一个跟踪远程分支(版本 2.0_Alpha)的本地分支(Feature_15),而您需要创建一个新的单独分支。如果这是真的,那么您正在尝试将本地分支推送到远程“版本 2.0_Alpha”分支,而不是创建远程“Feature_15”分支,这是错误的,对您不起作用。请参阅如何停止在 Git 中跟踪远程分支?解决这个问题(请注意,您不需要删除本地分支,只需删除跟踪)。

于 2013-02-12T00:58:43.397 回答
0

你所说的一切听起来都很好而且正确(至少对我来说)。

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

您还可以做几件事,检查提交文件时所在的分支(它将显示在git status输出中)。检查提交历史,或者使用一些 GUI 工具(我在 Linux 上使用 gitk,但还有很多其他工具)或通过命令行:

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

使用 git 唯一需要处理的事情是,当您需要将更改推送到自上次拉取后有人已经推送过某些内容的分支时,但只要您和您的同事在不同的分支上工作,这应该不是问题。

于 2013-02-12T01:00:42.897 回答
-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'

参考

于 2013-02-12T00:56:41.343 回答