目录
- [一. git 提交](#一. git 提交)
- [二. git commit 后准备回退,尚未 git push](#二. git commit 后准备回退,尚未 git push)
- [三. git add 添加多余文件 撤销操作](#三. git add 添加多余文件 撤销操作)
- [四. 更改 Git commit 的默认编辑器](#四. 更改 Git commit 的默认编辑器)
- [五. 撤销某个commit的变更](#五. 撤销某个commit的变更)
- [六. 回退到之前的commit状态](#六. 回退到之前的commit状态)
- 总结:
一. git 提交
bash
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
- 执行 git log 找到准备退回到的 commit 的 id
比如 commit id 为:90f1ce4d73c5dc63f46fa61984a6bb878f47374 - 执行 git reset --soft HEAD^ 操作
对应 HEAD 即上述 commit id 信息
bash
git reset --soft 90f1ce4d73c5dc63f46fa61984a6bb878f47374^ # 用 soft 回退则文件的修改还在,还可以继续其他操作
git reset --hard 90f1ce4d73c5dc63f46fa61984a6bb878f47374^ # 用 hard 回退则会用指定分支覆盖本地文件,文件的修改不存在,不建议使用,除非想用指定版本覆盖本地
说明:最后的符号^记得不要漏掉
此时通过 git status 时,可以看到 git add 的文件(绿色)
bash
git restore --staged CMakeLists.txt # 恢复到提交之前状态
git stash # 将更改文件暂存到暂存区
git checkout -b xxx # 创建 xxx 分支并切换到此分支上
git stash pop # 将暂存区的更改文件弹出到新分支上
git add # 执行常规操作即可提交文件
- git reset modify_file
将指定文件 modify_file 恢复到上一个提交(commit)的状态。这个命令会撤销对该文件的所有本地修改,将其恢复到最近一次提交时的状态。这可以用于取消对文件的某些更改,或者在需要时重新开始对文件的修改。需要注意的是,使用 git reset 可能会丢失未提交的更改,因此在使用之前务必谨慎考虑。 - git checkout -- modify_file
通过 git checkout -- modify_file 还原至修改之前状态
bash
git checkout -- . # 回退多个修改文件
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0 # 跳转到指定版本
git checkout a99a439c7fb20d6e5c7a25162cb6c96eebcbd3f0 -- file # 跳转到指定版本的文件
- git clean -df
删除本地有但版本库中没有的文件
bash
git clean -df
三. git add 添加多余文件 撤销操作
git reset HEAD 后面什么都不跟的,就是上一次 add 里面的内容全部撤销
git reset HEAD XXX 后面跟文件名,就是对某个文件进行撤销
- git commit 撤销操作
bash
git reset --soft HEAD^
这样就成功的撤销了 commit 操作
注意,仅仅是撤回 commit 操作,您写的代码仍然保留。
- git reset 其他参数说明:
bash
--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 的全局配置:
bash
git config --global core.editor <editor>
将 editor 替换为你想要设置为默认编辑器的命令。例如,如果你想要将默认编辑器更改为 vim,可以输入以下命令:
bash
git config --global core.editor "vim"
2.保存更改后,Git 将使用设置的编辑器作为默认编辑器进行 commit 操作。
现在,当在执行 Git commit 操作时,Git 将自动启动设置的编辑器来编辑: commit message。
验证设置是否生效,可以使用以下命令查看当前的 Git 全局配置:
bash
git config --global --get core.editor
git如何撤销提交的commit
五. 撤销某个commit的变更
如果我们需要完全撤销某个commit及其对应的变更,可以使用git revert命令。
步骤如下:
- 使用git log命令查看提交历史,并找到需要撤销的commit的哈希值,例如"commit2"。
- 输入git revert commit2来撤销该commit及其对应的变更。
- Git会自动创建一个新的commit来记录撤销的更改。可以使用git log命令查看撤销后的提交历史。
- 最后使用git push命令将撤销后的commit推送到远程仓库。
这种方法是相对安全的,因为它会保留之前的commit记录,并且不会破坏其他人的代码库。
六. 回退到之前的commit状态
如果我们需要完全回退到某个commit之前的状态,可以使用git reset命令。
步骤如下:
- 使用git log命令查看提交历史,并找到需要回退到的commit的哈希值,例如"commit3"。
- 输入git reset commit3来回退到该commit之前的状态。
- Git会将当前分支指针指向到指定的commit,但是之后的commit会被丢弃。
- 最后使用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