我只是对一个分支进行了更改。如何将更改提交到另一个分支?

我试着用:

git checkout "the commmit to the changed branch" -b "the other branch"

然而,我不认为这样做是正确的,因为在这种情况下,我创建了一个新分支,而不是将更改提交给“另一个分支”。

我应该使用下面的命令吗?

git merge "the other branch"

git checkout -b your-new-branch
git add <files>
git commit -m <message>

首先,向您的新分支结帐。然后,添加要提交到登台的所有文件。最后,提交刚才添加的所有文件。之后你可能想要做一个git push origin your-new-branch,这样你的更改就会显示在远程上。


如果我理解正确的话,你已经提交到changed_branch,你想复制那个提交到other_branch?容易:

git checkout other_branch
git cherry-pick changed_branch

如果您还没有提交更改

如果您的更改与其他分支兼容

这是问题中的情况,因为OP想要提交到一个新的分支,如果您的更改与目标分支兼容而不触发覆盖,那么OP也会应用。

正如John Brodie所接受的答案,你可以简单地签出新的分支并提交工作:

git checkout -b branch_name
git add <files>
git commit -m "message"

如果您的更改与其他分支不兼容

如果你得到错误:

error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches

然后你可以隐藏你的工作,创建一个新的分支,然后弹出你的隐藏更改,并解决冲突:

git stash
git checkout -b branch_name
git stash pop

这就好像您在创建新分支之后进行了这些更改一样。然后你可以像往常一样提交:

git add <files>
git commit -m "message"

如果您已提交更改

如果您希望将提交保留在原始分支中

看看卡尔·诺勒姆的答案,在这种情况下,这是正确的工具:

git checkout <target name>
git cherry-pick <original branch>

如果您不想将提交保存在原始分支中

请看joeytwiddle对这个潜在副本的回答。按照上述任何适当的步骤,然后回滚原来的分支:

git branch -f <original branch> <earlier commit id>

如果您已将更改推送到GitHub等共享远程服务器,则不应尝试此回滚,除非您知道自己在做什么。