Bitbucket - 致力于一个新的分支引起的问题,不知道如何解决

Bitbucket - Commiting to a new Branch caused issue, not sure how to fix

这是导致此问题的操作顺序。

  1. 从 Master 创建的分支,分支名称 v1
  2. 对这个新分支所做的更改并推送
  3. 我拉了这个分支(推送后)并做了一些修改
  4. 另一个用户做了一些更改并推送(在我之前)
  5. 决定在那个分支上创建一个分支,v1_adminui
  6. 发送一个git fetch获取新的Branch并发出一个git checkout v1_adminui
  7. git checkout v1_adminui 抱怨我需要先提交,因为 v1_adminui 编辑了一些我正在处理的文件
  8. 我发布了 git add --allgit commit -a -m "Changes to Admin UI" 然后发布了 git checkout v1_adminui
  9. 现在我在 v1_adminui 但我没有我的管理员 ui 提交更改

如何让我的管理员 ui 更改为 v1_adminui?看起来 commit 发生在 v1 上,所以现在我被卡住了......请提供任何帮助。

请注意,我无法推送该提交,需要在合并前先对其进行审核。

这应该是一个相当简单的修复。首先,查看 git cherry-pick here 的文档。然后,当您了解它在做什么时,请执行以下操作:

首先,删除您的本地 v1_adminui 分支,因为此时它与您的 v1 分支完全相同。

git checkout v1
git branch -D v1_adminui

接下来,在添加所有 adminui 内容之前检查提交

git checkout HEAD~1

现在,从该提交创建一个 "new" v1_adminui 分支

git checkout -b v1_adminui

接下来,从 v1 的本地副本中获取您想要的提交(假设提交位于 v1 分支之上。

git cherry-pick --no-commit v1

现在,您的索引看起来就像您已在 v1_adminui 分支上进行了所有 adminui 更改,但尚未提交。提交这些更改:

git add -A
git commit -m "<some-message-here>"

现在,您的 v1_adminui 分支将拥有您想要的所有更改。

最后,如果您不希望您的 v1 分支有这些更改,请返回到它

git checkout v1

并重置它们(这假设您只做了一个您不再想要的提交。

git reset --hard HEAD~1

确保你小心 reset --hard(查看文档 here