自学内容网 自学内容网

Git如何将一个分支上的修改转移到另一个分支

在我们使用git进行版本控制时,当代码写错分支,怎么将这些修改转移到正确的分支上去呢?这时,我们可以使用git stath命令来暂存我们的修改,然后再切换到其他分支

未commit(提交)操作时

1. 先将修改存入暂存区
git add .
2. 把暂存区内的修改存储起来 
git stash                    
3. 切换到正确的分支 
git checkout dev            
4. 将存储的修改取出来 
git stash pop                

已commit(提交)操作时 

需要撤回commit之前的状态,

git reset HEAD^   

然后继续未commit的步骤即可

已经push到远程仓库时

1.回滚到指定版本

  • 不保留原更改代码

如果你希望完全撤销到某个特定的提交版本,并且不保留之后的所有更改(包括未提交的修改),可以使用git reset命令配合--hard选项。这将把HEAD指针(以及当前分支)直接移动到指定的提交上,丢弃之后的所有更改。

git reset --hard <commit-id>

  • 保留原更改代码,并生成新的提交

如果你希望撤销某个特定的提交,但又想保留该提交之后的所有更改,并生成一个新的提交来替代那个被撤销的提交,可以使用git revert命令。这会在你的项目历史中插入一个新的提交,这个新提交是原来被撤销提交的“反向补丁”。

git revert <commit-id>

  • 强制推送更改到远程仓库

当你通过git resetgit revert修改了本地仓库的历史后,你需要将这些更改推送到远程仓库。由于这些更改改变了远程仓库的历史,你需要使用强制推送(git push -f)来覆盖远程仓库的历史。

git push -f origin 分支名

警告:强制推送会覆盖远程仓库的历史,影响所有共享该分支的协作者。在执行此操作前,请确保所有协作者都了解这一变更,并已经同步了他们的本地仓库以避免数据丢失。

总结

  • 未commit时,临时存储- 切分支- 释放临时存储,已commit时,回撤状态,继续执行未commit时操作
  • 使用git reset --hard来完全撤销到某个特定的提交,但会丢失之后的更改。
  • 使用git revert来撤销某个特定的提交,同时保留之后的更改,并生成一个新的提交。
  • 在修改了本地仓库的历史后,使用git push -f来强制推送更改到远程仓库,但请谨慎操作以避免不必要的问题。

原文地址:https://blog.csdn.net/m0_71071209/article/details/140645693

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!