Git (GitLab) - 合并失败 - 尝试 "Check out, review, merge locally" 的说明

Git (GitLab) - Merge Fails - Trying instructions for "Check out, review, merge locally"

我试图从我的用户分支合并到我们共享的 "develop" 分支。我是这个项目中唯一的工作人员。 GitLab 给了我以下我正在努力的说明。

在第 1 步中 - 当我这样做时 "git fetch origin" - 我在硬盘驱动器上已有的存储库中完成了它。那是正确的吗?如果我在一些新创建的目录中尝试它,它会显示“fatal: Not a git repository (or any of the parent directories): .git

对于第 1 步的第二部分 - 我收到错误: 致命:分支名称 'nw-ob210refactor' 已存在。

所以我尝试在最后添加一个 2,但我得到了这个错误: 致命的:'origin/nw-ob210refactor2' 不是提交和分支 'nw-ob210refactor ' 无法从中创建

上述来自 GitLab 的说明是否完整且正确?还是我在做一些明显错误的事情。

您的 git fetch origin 是正确的。这从名为 origin 的远程获取最新的引用。现在,当您尝试签出时,很可能您已经拥有该名称的分支(它甚至可能与远程上的分支在同一提交上)。

为了确保,您应该 pull 切换到分支后。

git checkout nw-ob210refactor
git pull

然后继续第 2 步。


注意您可以创建第二个分支来引用此远程分支,但我认为没有必要。如果您对如何让 "add a 2" 方案起作用感到好奇,您必须将其添加到本地分支名称,而不是远程分支名称:

git checkout -b nw-ob210refactor2 origin/nw-ob210refactor
git checkout -b localName origin/onlineName

创建一个新的本地分支。参见 man git checkout

-b "new_branch"
Creates the branch "new_branch" and start it at "start_point"; if it already exists, then reset it to "start_point". This is equivalent to running "git branch" with "-f"; see git-branch(1) for details

如果您已经拥有相应的本地分支当然您不想再次创建它。而是只使用

git checkout nw-ob210refactor

git pull

If I try it in some newly made directory

在那里你必须做一个新的

git clone https://your/repository

先下载你的存储库

So I tried adding a 2 on the end, and I get this error: fatal: 'origin/nw-ob210refactor2' is not a commit and a branch 'nw-ob210refactor ' cannot be created from it

如果您想创建一个新的本地分支,您必须在 -b(= 本地分支名称)之后更改参数,而不是您尝试下载的来源(远程分支名称):

git checkout -b checkout nw-ob210refactor2 origin/checkout nw-ob210refactor

更新

一旦你 Already up to date 继续第 3 步

那里也有

git checkout -b develop origin/develop

如果 develop 分支目前 存在于本地。否则再次使用 only

git checkout develop

只切换到它。那样的话再确定一下运行

git pull

现在您拥有本地分支和最新分支,可以合并了

git merge --no-ff nw-ob210refactor

这会将 nw-ob210refactor 合并到 develop。如果你反过来需要它,只需切换到目标分支(checkout)并交换名称。

--no-ff 读作 no fast forward 意思是

Create a merge commit even when the merge resolves as a fast-forward. This is the default behaviour when merging an annotated (and possibly signed) tag that is not stored in its natural place in refs/tags/ hierarchy.

或者简单地说,您想要创建一个特殊的提交,即使没有冲突,您也可以在没有额外提交的情况下合并分支,该提交将包含 merge from branch nw-ob210refactor into develop 消息。在大多数情况下,这对于更好地了解历史记录中合并的内容很有用,并且可以在以后需要时更轻松地还原内容。


合并后推回您合并到的相应分支。在这个例子中它是 develop 所以做

git push origin develop