Git - 将分支名称移动到另一个分支

标签 git

故事是这样的

  1. 我从远程存储库 origin/fts 获得了名为 fts 的分支
  2. 我已经对本地存储库 fts 进行了一些提交(没有推送)
  3. 我发现我犯了一些无法公开的事情
  4. 我 checkout 上次安全提交并收到You are in 'detached HEAD' state.消息
  5. 我已经完成了新的提交。

日志看起来像这样(没有一些提交)

$ git log --pretty=oneline --abbrev-commit --decorate --all --graph -10
* 3e39eeb (HEAD) That should be pushed as origin/fts
| * f38e892 (fts) That cannot be pushed
|/
* 84fa79a (origin/fts) Commit i got from remote

我应该做什么

  1. 不会将提交从当前本地 fts (f38e892) 推送到远程。
  2. 用不同的名称保存这个不幸的分支,例如 private-fts
  3. 将分支名称 fts 移动到当前分离的 HEAD (3e39eeb),进行任何会 merge 当前 fts 提交的 rebase 或 merge 。<
  4. 将当前分离的 HEAD 推送为 fts(成为 origin/fts)。
  5. 当我确定不需要 private-fts 时,也可以从本地存储库中删除它。

最佳答案

首先,您需要使用以下命令将 fts 分支重命名为 private-fts:

git branch fts -m private-fts

现在,在 3e39eeb 重新创建 fts 分支

git checkout 3e39eeb -b fts

将新的 fts 分支推送并关联到源:

git push --set-upstream origin fts

准备好完全删除 private-fts 后,请执行以下操作:

git branch -D private-fts

关于Git - 将分支名称移动到另一个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34272174/

相关文章:

git - 使用带有格式的bash列出目录中的git分支

ruby-on-rails - git push remote 在代理后面的问题

git - 如何强制子树推送覆盖远程更改?

iphone - zxing 的 git 子模块(iPhone 版本)?

ios - 当我执行 git push origin master 时,为什么出现错误 : failed to push some refs to 'git@github.com:sshallow/FirstPod.git'

solaris 10 上的 git 客户端和依赖项

git - 我可以影响 gitk 和 Eclipse Egit 中显示的分支顺序/列吗

git - 尝试从 Bitbucket checkout 时,Jenkins 删除了工作区

git - 可以在同一个存储库上使用多个 Git 客户端吗?

git - 如何删除sourcetree上的远程分支?