繁体   English   中英

将分离的头固定在重命名的git分支上

[英]Fixing detached head on a renamed git branch

git的新功能。 我有一个功能分支( feature/123 ),该分支最初是从develop剪切下来的,在使用后又被推送到GitHub。

我刚刚开始对该分支进行一些本地更改,然后我决定要保留所做的更改(而不是将其全部丢弃),并从GitHub当前提供的分支版本重新开始。

因此,我决定:

  1. 提交我的更改(我想保留并且可能 (尽管不太可能)返回)
  2. 重命名我的功能分支
  3. 拉原点上的feature/123分支(GitHub)

所以我:

git add .
git commit -m "Saving changes made thus far"
git branch -m feature/123-OLD
git checkout origin/feature/123

当我这样做时,我看到:

$ git checkout origin/feature/123
Note: checking out 'origin/feature/123'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 8877c28... 123: did some stuff

现在,当我查看当前分支时,我看到:

$ git branch
* (HEAD detached at origin/feature/123)

开发

所有这些“超脱头”的东西都让我毛骨悚然!

我想要的是拥有一个名为feature/123的本地分支,该分支与GitHub的状态完全相同。 我该怎么做?

这里的前三个命令都很不错:

 git add . git commit -m "Saving changes made thus far" git branch -m feature/123-OLD 

最后一个将名称feature/123更改为名称feature/123-OLD (当然,首先假设您在一个名为feature/123的分支上)。

最后一条命令没有 ,这不是您想要的命令:

 git checkout origin/feature/123 

您想要的是:

git checkout feature/123

这会环顾四周你的(本地)分支名称, 无法找到名为什么feature/123 (不存在任何更多- feature/123-OLD存在,但是这是不一样的),然后调用“做什么,我的意思“ git checkout功能。

这个功能说: 嗯,我找不到您想要的分支。 我想也许您对我来说意味着要创建一个分支! 我是否可以找到一个看起来很像feature/123远程跟踪名称,例如origin/feature/123 feature/123 如果找不到任何一个或两个或更多,我将抱怨并失败。 但是,如果我能找到一个 ,我将创建一个 feature/123 ,指向与远程跟踪名称相同的提交!

当然,它只会找到一个,因此它将创建feature/123 确实创建feature/123 ,它将默认将其上游设置为origin/feature/123 这就是“按我的意思做”或DWIM checkout方式,实际上就是您的意思。

您可以结帐所需的分支

git checkout feature/123

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM