如何在git中将未推送的提交从一个(本地)分支移动到另一个分支?

时间:2019-04-10 14:05:49

标签: git bitbucket

我想将尚未推送到本地的本地提交移动到另一个分支。

我应该遵循此工作流程。我们只是从这种做法开始,所以有点忘了。我们有这个JIRA和位桶。我们必须从JIRA项目创建一个分支。然后,我在本地检出此分支,对其进行处理并提交(推送),然后向代码审阅者提出拉取请求,然后将其合并到相应的分支,再向上合并到主分支。

我忘了为JIRA项目创建分支。相反,我工作并致力于我的本地分支机构4.10BR。我做了3次单独的提交(关于这3个单独的JIRA项目)。

我的git日志说... 在分支发布/4.10 您的分支比“ origin / release / 4.10”提前3次提交。   (使用“ git push”发布您的本地提交)

现在,我将为Jira-BitBucket中的这3个项目分别创建一个分支,将这些分支检出,然后将提交的内容“移动”到这些分支(例如b1,b2和b3),然后推送这些分支。

由于我仍然是git的学习者,因此我没有进一步的进展吗?

3 个答案:

答案 0 :(得分:4)

这是一个常见的工作流程错误,在过去十年中我犯了数十次错误。我处理的通常方法是执行以下操作:

创建您应该首先创建的新的真实善意分支:

# from release/4.10
git branch feature/some_name

现在,创建了一个分支feature/some_name,其中包含您的单次提交。唯一剩下的问题是release/4.10分支,该分支现在还包含不需要的提交。鉴于您 not 尚未推送发行分支,我们可以尝试对该分支进行硬重置以删除此提交:

# from release/4.0, again
git reset --hard HEAD~1

现在您有了功能分支,而如果您从一开始就遵循正确的工作流程,则发布分支将处于应有的状态。

答案 1 :(得分:1)

您可以使用命令git checkout -b 'name-of-branch'从当前分支创建一个新分支。这样可以使您的代码保持3次提交,而不会在新分支中推送。如果已经创建了分支,则可以使用git merge 'other-branch'在当前分支和另一个分支之间进行合并。

答案 2 :(得分:0)

如果您想将更改移动到现有分支和/或在错误的分支中有许多提交,请尝试以下操作。就我而言,当我打算致力于开发时,我承诺了掌握,所以它看起来像这样:

git checkout develop
git merge master
git checkout master
git reset --hard [HASH]

其中 [HASH] 是您不需要的修改之前的提交哈希,您也可以使用 HEAD~n 代替 [HASH],n 是不需要的提交次数。

如果您的分支不存在,只需使用 git checkout -b branchname 创建它,然后合并并重置。