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
我试图从我的用户分支合并到我们共享的 "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