git 回滚错误的pull origin操作

本文介绍了如何使用Git进行高级操作,包括解决冲突、撤销错误的拉取操作及如何正确地从远程分支拉取代码而不影响现有分支。通过实例演示了如何使用`git reset --hard HEAD`和`git reset --hard HEAD^`命令撤销错误的`git pull`操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


git remote show origin   其中的origin表示自己的项目根目录了。

$ git remote show origin
* remote origin
  Fetch URL: git@gitlab.alibaba-inc.com:middleware/jingwei.git
  Push  URL: git@gitlab.alibaba-inc.com:middleware/jingwei.git
  HEAD branch: master
  Remote branches:
    br-2.1.2.1 tracked
    br-2.1.2.2 tracked
    br-2.1.3   tracked
    master     tracked
  Local branches configured for 'git pull':
    br-2.1.2.2 merges with remote br-2.1.2.2
    master     merges with remote master
  Local refs configured for 'git push':
    br-2.1.2.2 pushes to br-2.1.2.2 (local out of date)
    master     pushes to master     (up to date)

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei/jingwei-webconsole (master)
$ git remote show
origin
2 把远程分支 br-2.1.2.1 pull下来,发现把当前分支给覆盖了,想回滚到之前的修改

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master);当前分支是master,其实想把br-2.1.2.1的代码抓到本地,执行 git pull 相当于 git fetch 和 git merge两个操作的效果,把远程的br-2.1.2.1抓达到本地,并和当前版本合并。(这样做有没有把br-2.1.2.1抓下来呢?)

$ git pull origin br-2.1.2.1
From gitlab.alibaba-inc.com:middleware/jingwei
 * branch            br-2.1.2.1 -> FETCH_HEAD
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Auto-merging jingwei-webconsole/pom.xml
CONFLICT (content): Merge conflict in jingwei-webconsole/pom.xml
Auto-merging jingwei-monitor/pom.xml
CONFLICT (content): Merge conflict in jingwei-monitor/pom.xml
Auto-merging jingwei-core/src/main/java/com/taobao/jingwei/core/kernel/AbstractJingWeiCore.java
CONFLICT (content): Merge conflict in jingwei-core/src/main/java/com/taobao/jingwei/core/kernel/AbstractJingWe
iCore.java
Auto-merging jingwei-core/pom.xml
Automatic merge failed; fix conflicts and then commit the result.

执行完pull origin后,发现想要抓的版本并没有抓下来

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master)
$ git pull origin br-2.1.2.1
From gitlab.alibaba-inc.com:middleware/jingwei
 * branch            br-2.1.2.1 -> FETCH_HEAD
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Auto-merging jingwei-webconsole/pom.xml
CONFLICT (content): Merge conflict in jingwei-webconsole/pom.xml
Auto-merging jingwei-monitor/pom.xml
CONFLICT (content): Merge conflict in jingwei-monitor/pom.xml
Auto-merging jingwei-core/src/main/java/com/taobao/jingwei/core/kernel/AbstractJingWeiCore.java
CONFLICT (content): Merge conflict in jingwei-core/src/main/java/com/taobao/jingwei/core/kernel/AbstractJingWe
iCore.java
Auto-merging jingwei-core/pom.xml
Automatic merge failed; fix conflicts and then commit the result.

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master|MERGING)
$ git br
  br-2.1.2.2
* master


(1)使用 git reset --hard HEAD 命令撤销这次 pull origin 操作 ,还原到最近一次修改

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master|MERGING)
$ git reset --hard HEAD
HEAD is now at 89700a3 optimize upload file

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master)
$ git status
# On branch master
nothing to commit, working directory clean
(2)使用 git reset --hard HEAD^

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master|MERGING)
$ git reset --hard HEAD^
HEAD is now at f6423ad modify group

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master)
$ git status
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#
nothing to commit, working directory clean
再pull一下

$ git pull
Updating f6423ad..89700a3
Fast-forward
 .../webconsole/biz/exception/TimeoutException.java | 29 +++++++++
 .../webconsole/util/upload/UploadFileImpl.java     | 46 ++++++++++++++
 .../webconsole/util/upload/UploadFileService.java  | 19 ++++--
 .../web/filter/JingweiSecurityFilter.java          | 74 +++++++++++++++-------
 .../webconsole/web/filter/UploadFileFilter.java    | 29 +++++++++
 .../web/module/screen/api/JingweiGateWay.java      |  8 ++-
 .../screen/api/cmd/GetConsoleTarTimeCommand.java   | 61 ++++++++++++++++++
 7 files changed, 238 insertions(+), 28 deletions(-)
 create mode 100644 jingwei-webconsole/src/main/java/com/taobao/jingwei/webconsole/biz/exception/TimeoutExcept
ion.java
 create mode 100644 jingwei-webconsole/src/main/java/com/taobao/jingwei/webconsole/web/module/screen/api/cmd/G
etConsoleTarTimeCommand.java

shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (master)
$ git status
# On branch master
nothing to commit, working directory clean
看下git log,发现 “modify group“这次修改早于 ”optimize upload file“这次修改。说明HEAD表示最近一次提交的修改,HEAD^表是最近second新的提交的修改。

前面的7为数字正好一大串数字的前7位。


commit 89700a31c005001d34256761dd4c945c6c70a06
commit f6423ad5ca231e00e44626a2dcb8ba300c7a5fe
Updating f6423ad..89700a3
Updating表示本地工作目录从 一个版本(f6423ad)变更到另一个版本(89700a3)。

$ git log
commit 89700a31c005001d34256761dd4c945c6c70a06
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Sat Aug 3 19:54:46 2013 +0800

    optimize upload file

commit f6423ad5ca231e00e44626a2dcb8ba300c7a5fe
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Mon Jul 29 10:42:37 2013 +0800

    modify group

commit aa4ae6f4f447471d15038b73cb4d5c52b2eb623
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Fri Jul 26 10:25:06 2013 +0800

    revert

commit ba1b6e5e997e866f013cda0feaa043115623d7f
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Fri Jul 26 09:05:37 2013 +0800

    right

commit ceec1780e44570e6c311ec7d1db86a0f17e268c
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Fri Jul 26 09:00:29 2013 +0800

    right

commit 2f4ce1c1d31be5ffa1d2e79baa98979c36ae99c
Author: shuohai.lhl <shuohai.lhl@taobao.com>
Date:   Sun Jul 21 18:26:12 2013 +0800

    fix zk config must match stat config.







### Git 回滚错误提交的操作方法 在日常开发过程中,可能会遇到需要回滚错误提交的情况。Git 提供了多种方式来应对这一需求,具体取决于用户的实际场景和期望的结果。以下是几种常见的回滚错误提交的方法及其适用场景。 --- #### 1. **使用 `git reset` 修改最近的提交** 如果错误提交尚未推送到远程仓库,并且希望完全移除该提交而不保留任何痕迹,则可以使用 `git reset` 命令。此方法适用于本地环境内的快速修正[^1]。 - 如果只需要丢弃最后一次提交但保留工作区的修改: ```bash git reset --soft HEAD~1 ``` 这会将最后一次提交从历史记录中删除,同时保留工作区中的更改内容。 - 如果希望彻底清除最后一次提交及其对应的更改: ```bash git reset --hard HEAD~1 ``` 注意:此操作不可逆,所有未保存的更改将会丢失。 - 若已经将错误提交推送到远程仓库,则需强制更新远程分支: ```bash git push -f origin main ``` --- #### 2. **使用 `git commit --amend` 修改最近的提交** 当发现最近的一次提交信息有误或者遗漏某些文件时,可以通过 `git commit --amend` 来直接修改该提交的内容。这种方法不会新增额外的历史记录,而是替换原有的提交[^2]。 步骤如下: - 修改代码后将其添加到暂存区: ```bash git add . ``` - 更新最后一次提交的信息或内容: ```bash git commit --amend ``` 此时可以选择编辑提交消息或追加新的更改。 - 如果远程分支已有对应提交,同样需要强制推送: ```bash git push -f origin main ``` --- #### 3. **使用 `git revert` 创建反向提交** 对于已经被推送到远程仓库的错误提交,推荐使用 `git revert` 进行安全的回滚操作。这种方式会在现有基础上生成一个新的提交,用来撤销指定提交所带来的更改,从而避免破坏现有的提交历史[^3]。 基本流程如下: - 找到要撤销的提交哈希值(可通过 `git log` 查看),然后运行以下命令: ```bash git revert <错误提交哈希> ``` 例如: ```bash git revert abcdefg ``` - 完成后正常推送即可: ```bash git push origin main ``` > 注意事项:如果目标提交涉及合并操作,则可能需要附加参数 `-m` 指定父分支编号。 --- ### 总结 根据实际情况的不同,可以选择合适的工具完成错误提交的回滚任务。如果是单纯的本地问题,优先考虑 `reset` 或者 `commit --amend`;而对于公共仓库上的错误提交,则应采用更为稳妥的 `revert` 方案以保护团队协作的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值