git提交和回退

一. git 提交

git pull  # 更新代码
git status # 查看代码状态,包括修改的,未追踪的
git branch -a   # 查看有哪些分支和自己在哪个分支
git diff(file) # 查看文件变动处,不接file即为查看所有改动文件变动
git add file     # 提交文件至本地暂存区
git commit -m "...."       # 提交文件并说明提交信息
git push origin diag_service_base  # (orign:远端分支   diag_service_base:自己所在分支   即为将自己分支上的改动文件提交至远端分支),待有权限的人合并分支

git config --global user.email "dengwen@g-pulse.net"  # 配置git名字和邮箱
git config --global user.name "dengwen"
git config --global credential.helper store           # 保存git名字和密码,不用每次提交输入名字和密码
git config --global --list                            # 查看当前服务器配置名称和邮箱

在这里插入图片描述

二. git commit 后准备回退,尚未 git push

  1. 执行 git log 找到准备退回到的 commit 的 id
    比如 commit id 为:90f1ce4d73c5dc63f46fa61984a6bb878f47374
  2. 执行 git reset --soft HEAD^ 操作
    对应 HEAD 即上述 commit id 信息
git reset --soft 90f1ce4d73c5dc63f46fa61984a6bb878f47374^    # 用 soft 回退则文件的修改还在,还可以继续其他操作
git reset --hard 90f1ce4d73c5dc63f46fa61984a6bb878f47374^    # 用 hard 回退则会用指定分支覆盖本地文件,文件的修改不存在,不建议使用,除非想用指定版本覆盖本地

说明:最后的符号^记得不要漏掉
此时通过 git status 时,可以看到 git add 的文件(绿色)

git restore --staged CMakeLists.txt  # 恢复到提交之前状态
git stash                            # 将更改文件暂存到暂存区
git checkout -b xxx                  # 创建 xxx 分支并切换到此分支上
git stash pop                        # 将暂存区的更改文件弹出到新分支上
git add                              # 执行常规操作即可提交文件
  1. git reset modify_file
    将指定文件 modify_file 恢复到上一个提交(commit)的状态。这个命令会撤销对该文件的所有本地修改,将其恢复到最近一次提交时的状态。这可以用于取消对文件的某些更改,或者在需要时重新开始对文件的修改。需要注意的是,使用 git reset 可能会丢失未提交的更改,因此在使用之前务必谨慎考虑。
  2. git checkout – modify_file
    通过 git checkout – modify_file 还原至修改之前状态
git checkout -- .  # 回退多个修改文件
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0  # 跳转到指定版本
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0 -- file  # 跳转到指定版本的文件
  1. git clean -df
    删除本地有但版本库中没有的文件
git clean -df

三. git add 添加多余文件 撤销操作

git reset HEAD 后面什么都不跟的,就是上一次 add 里面的内容全部撤销
git reset HEAD XXX 后面跟文件名,就是对某个文件进行撤销

  1. git commit 撤销操作
git reset --soft HEAD^ 

这样就成功的撤销了 commit 操作
注意,仅仅是撤回 commit 操作,您写的代码仍然保留。
2. git reset 其他参数说明:

--mixed 
# 意思是:不删除工作空间改动代码,撤销 commit,并且撤销 git add . 操作
# 这个为默认参数, git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft  
# 不删除工作空间改动代码,撤销 commit,撤销 git add . 
--hard
# 删除工作空间改动代码,撤销 commit,撤销 git add . 
# 注意完成这个操作后,就恢复到了上一次的 commit 状态。
# commit 注释写错了,只是想改一下注释,只需要:
git commit --amend
# 此时会进入默认 vim 编辑器,修改注释完毕后保存就好了。

四. 更改 Git commit 的默认编辑器

在 Linux 中可以按照以下步骤进行操作:
1.打开终端,并输入以下命令来更改 Git 的全局配置:

git config --global core.editor <editor>

将 editor 替换为你想要设置为默认编辑器的命令。例如,如果你想要将默认编辑器更改为 vim,可以输入以下命令:

git config --global core.editor "vim"

2.保存更改后,Git 将使用设置的编辑器作为默认编辑器进行 commit 操作。
现在,当在执行 Git commit 操作时,Git 将自动启动设置的编辑器来编辑: commit message。
验证设置是否生效,可以使用以下命令查看当前的 Git 全局配置:

git config --global --get core.editor

git如何撤销提交的commit

五. 撤销某个commit的变更

如果我们需要完全撤销某个commit及其对应的变更,可以使用git revert命令。
步骤如下:

  1. 使用git log命令查看提交历史,并找到需要撤销的commit的哈希值,例如"commit2"。
  2. 输入git revert commit2来撤销该commit及其对应的变更。
  3. Git会自动创建一个新的commit来记录撤销的更改。可以使用git log命令查看撤销后的提交历史。
  4. 最后使用git push命令将撤销后的commit推送到远程仓库。
    这种方法是相对安全的,因为它会保留之前的commit记录,并且不会破坏其他人的代码库。

六. 回退到之前的commit状态

如果我们需要完全回退到某个commit之前的状态,可以使用git reset命令。
步骤如下:

  1. 使用git log命令查看提交历史,并找到需要回退到的commit的哈希值,例如"commit3"。
  2. 输入git reset commit3来回退到该commit之前的状态。
  3. Git会将当前分支指针指向到指定的commit,但是之后的commit会被丢弃。
  4. 最后使用git push -f命令将回退后的状态强制推送到远程仓库。
    需要注意的是使用git reset命令回退commit会导致之后的commit丢失,可能会导致其他人的代码库出现问题,所以在使用之前应该与团队成员进行沟通和协调。

总结:

撤销提交的commit是Git中常见的操作之一,在错误的提交或者需要对之前的代码变更进行修复的情况下,我们可以使用git commit --amend命令修改最后一次commit的内容,使用git revert命令撤销某个commit的变更,或者使用git reset命令回退到之前的commit状态。

沾衣欲湿杏花雨,吹面不寒杨柳风。
2024年3月26日18:37:02

相关推荐

  1. git commit提交本地退

    2024-03-27 10:42:02       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 10:42:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 10:42:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 10:42:02       87 阅读
  4. Python语言-面向对象

    2024-03-27 10:42:02       96 阅读

热门阅读

  1. Hive的安装

    2024-03-27 10:42:02       46 阅读
  2. unity pivot和center的区别

    2024-03-27 10:42:02       55 阅读
  3. 在OpenCV的detectMultiScale方法中,scaleFactor参数

    2024-03-27 10:42:02       40 阅读
  4. VR虚拟仿真在线模拟旅游专业情景

    2024-03-27 10:42:02       46 阅读
  5. 一些常见的Ansible问题和答案

    2024-03-27 10:42:02       40 阅读
  6. 防火墙技术

    2024-03-27 10:42:02       39 阅读
  7. 使用SqlDataAdapter和DataSet维护数据库表数据

    2024-03-27 10:42:02       35 阅读
  8. Ansible剧本playbooks详解

    2024-03-27 10:42:02       35 阅读
  9. C语言学习笔记day13

    2024-03-27 10:42:02       38 阅读
  10. SQLAlchemy中query函数的使用

    2024-03-27 10:42:02       36 阅读