赞
踩
Git中一个常见又稍微有点复杂的话题:如何撤回已经推送(Push)的代码。这个问题在日常开发中还是挺常见的,尤其是在不小心推送了错误的代码或者需要回退到某个特定版本的时候。
在Git中,如果你已经将代码推送到远程仓库,想要撤回或者修改这些提交,主要有两个选择:git revert
和 git reset
。但是,这两个命令在使用上有很大的不同,我们得先了解一下。
git revert: 这个命令会创建一个新的提交,这个提交是对之前提交的撤销。优点是它不会改变项目历史,是一个比较安全的撤销方式,特别是在团队协作的项目中。
git reset: 这个命令会将HEAD指针移动到指定的提交,你可以选择将这个变化推送到远程仓库。但这会改变项目历史,如果其他人已经基于这些提交做了更改,可能会导致问题。
找到需要撤销的提交的ID。 使用 git log
查看提交历史,找到你想要撤销的提交的ID。
执行revert操作。 使用 git revert [commit_id]
命令。这会创建一个新的提交,撤销之前的更改。
解决可能的冲突。 如果Git提示有冲突,需要手动解决这些冲突。
完成revert。 解决完冲突后,使用 git add .
将更改添加到暂存区,然后 git commit
完成撤销操作。
推送到远程仓库。 使用 git push
将这个更改推送到远程仓库。
找到要回退到的提交ID。 同样使用 git log
查看。
执行reset操作。 使用 git reset --hard [commit_id]
使本地仓库回退到指定提交。
强制推送到远程仓库。 使用 git push --force
将本地更改强制推送到远程。这一步操作比较危险,因为它会覆盖远程仓库的历史,所以在团队项目中要慎用。
假设我们有如下的提交历史:
- commit a1b2c3d (HEAD -> master, origin/master, origin/HEAD)
- Author: 你的名字 <you@example.com>
- Date: 星期一 早上9点
-
- 一个不应该推送的提交
-
- commit e4f5g6h
- Author: 你的名字 <you@example.com>
- Date: 昨天晚上
-
- 正常的提交
- # 查看提交历史
- git log
-
- # 撤销最新的提交
- git revert a1b2c3d
-
- # 如果有冲突,解决冲突
- # ...
-
- # 添加更改到暂存区并提交
- git add .
- git commit -m "Revert '一个不应该推送的提交'"
-
- # 推送到远程仓库
- git push
- # 查看提交历史
- git log
-
- # 回退到正常的提交
- git reset --hard e4f5g6h
-
- # 强制推送到远程仓库
- git push --force
在使用这些命令时,一定要非常小心。尤其是 git reset --hard
和 git push --force
这样的强制操作,它们会改变历史记录。在团队合作的项目中,这可能会对其他开发者产生影响。所以,在执行这些操作之前,最好是和团队沟通一下,确保不会影响到别人。
撤回已经推送到远程仓库的代码是一个需要谨慎操作的任务。
根据你的具体需求,你可以选择 git revert 或 git reset。记住,保持与团队的沟通,确保你的操作不会对项目或者同事产生不良影响。
这样,我们就可以更加自信和安全地使用Git,使我们的代码管理变得更加高效和专业。
撤回已经推送到远程仓库的代码是一个需要谨慎操作的任务。
根据你的具体需求,你可以选择 git revert
或 git reset
。记住,保持与团队的沟通,确保你的操作不会对项目或者同事产生不良影响。
这样,我们就可以更加自信和安全地使用Git,使我们的代码管理变得更加高效和专业。
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的, 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享
点赞对我真的非常重要!在线求赞,加个关注我会非常感激
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。