我只是对一个分支进行了更改。如何将更改提交到另一个分支?
我试着用:
git checkout "the commmit to the changed branch" -b "the other branch"
然而,我不认为这样做是正确的,因为在这种情况下,我创建了一个新分支,而不是将更改提交给“另一个分支”。
我应该使用下面的命令吗?
git merge "the other branch"
我只是对一个分支进行了更改。如何将更改提交到另一个分支?
我试着用:
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等共享远程服务器,则不应尝试此回滚,除非您知道自己在做什么。