GIT 实战命令操作大全,代码变动,推动,修改备注,撤销(篇幅一)

大家好,我是九逸,给大家分享git 实战操作命令

一、代码变动查看

1. 查看代码变动

shell 复制代码
git status

2. 查看工作区与最新提交之间的变动(未暂存/已暂存)

shell 复制代码
git diff <文件路径>

3. 查看某文件的完整修改历史(每次提交的变动)

shell 复制代码
git log -p <文件路径>

这个就不建议使用命令来查看了,直接使用工具来使用就挺好。

4. 查看某文件自某个提交以来的所有变动

shell 复制代码
git diff <commit-hash> HEAD -- <文件路径>
  • 比较从某个提交到当前 HEAD 版本之间的变化。

不常用

二、代码推送

如果第一次使用命令提交一定要注意当前分支,现在编译工具都集成了GIT,我们可以肆无忌惮的提交,但是使用命令一定要注意,可以使用下面的命令。

1. 查看当前分支

shell 复制代码
git  branch 
1. 第一次推送时设置上游分支(upstream)

使用编译器的可以不用看这个步骤,因为编译器已经集成好了

如果这是你第一次推送某个分支,可以这样:

shell 复制代码
git push -u origin <分支名>
  • -u 参数会将本地分支与远程分支关联 (设置上游),之后可以直接用 git pushgit pull,无需再指定分支。

做个演示

shell 复制代码
 git push -u origin dev
2. 后续推送(已设置 upstream)
shell 复制代码
git push

可以直接使用 推送命令将代码提交到远端,当前现在编译器都集成了git,所有不用担心这个,只要分支切换对就行。

2. 提交命令

1. 提交到本地仓库
shell 复制代码
git add .
git commit -m "你的提交信息"

这个都是最常见的提交步骤。

2. 推送代码到远程仓库

推送代码的时候一定要拉取 最新的代码

复制代码
git pull        # 先拉取最新代码
或
git pull origin dev        # 先拉取最新代码

如果按照上面已经设置了分支,可以直接进行 push

shell 复制代码
git push

或者可以指定分支进行代码提交

shell 复制代码
git push origin <分支名>

这样就提交好了。

3. 推送所有分支(扩展)
复制代码
git push --all origin

三、修改提交备注

如果代码提交了,但是发现自己的备注写错了怎么办呢?可以使用以下几种方式进行解决。

情况一:刚提交,还未推送到远程(最简单)

使用 --amend 修改最后一次提交的备注:

复制代码
git commit --amend -m "新的正确备注"

示例:

备注写错了两个字

发现写错,修正为:

注意:

  • 只能修改最后一次提交。
  • 如果已经 push 过,后续需要强制推送(见情况二)。

情况二:已推送到远程仓库

如果你已经执行过 git push,修改后需要强制推送

复制代码
# 1. 修改最后一次提交的备注
git commit --amend -m "正确的备注"

# 2. 强制推送到远程(谨慎操作!)
git push --force-with-lease origin <分支名>

📌 示例:

🔐 推荐使用 --force-with-lease 而不是 --force,更安全,避免覆盖他人提交。


情况三:修改更早的某次提交备注(历史提交)

需要使用交互式 rebase:

复制代码
# 查看最近3次提交,选择要修改的
git rebase -i HEAD~3

// 或者 直接输入当前已经提交的 版本id
git rebase -i <commit-id>

在弹出的编辑器中:

  1. 找到你要修改备注的那行,把 pick 改成 reword
  2. 保存退出
  3. Git 会打开编辑器让你输入新的备注

修改完成后,如果已推送到远程,仍需:

复制代码
git push --force-with-lease

⚠️ 警告:修改历史提交会影响协作

不建议使用 git push --force 你没有拉取最新代码,直接执行,有可能会覆盖掉代码。

git push --force-with-lease 会做一件事:"我本地认为远程分支应该是什么状态?如果不是,就拒绝推送。"

--force-with-lease 会检测到这个不一致,拒绝你的推送,提醒你先拉取合并。

命令 类比
git push --force "不管别人有没有改,我直接覆盖!" ⚠️ 危险
git push --force-with-lease "如果我没落后于远程,我才允许覆盖。" ✅ 更安全

举个例子

先看git提交记录,使用 git log 命令,或者 工具都行

然后执行 git rebase -i HEAD~3 命令

现在提交了两次记录

shell 复制代码
PICK 18d2459 打开等待时间
pick 0c0a7fc 增加备注2

假如现在要修改第一次提交的记录

输入 i 然后进入编辑模式,找到修改备注的这一行,把 pick 改成 reword

然后 wq! 保存

会有一个弹框出现

修改完成后,保存,仍需:

shell 复制代码
 git push --force-with-lease origin dev

可以上git看查

已经修改成功。

建议:写 commit message 时认真一点,遵循清晰、简洁、有意义的原则。

四、撤销提交记录

1. 撤销最近一次提交(保留更改到暂存区)

如果你想撤销最近一次提交,但保留所做的修改(文件在暂存区,可以再次提交),使用:

bash 复制代码
git reset --soft HEAD~1
  • HEAD~1 表示当前提交的前一个提交。
  • --soft 会保留修改在暂存区。

适用场景:提交了错误的 commit message 或想把更改合并到下一次提交中。


2. 撤销最近一次提交(保留更改到工作区)

如果你想撤销提交,并把修改带回工作区(需要重新 git add),使用:

bash 复制代码
git reset HEAD~1
# 或者
git reset --mixed HEAD~1
  • --mixed 是默认模式,修改会保留在工作目录中,但不会暂存。

适用场景:想重新编辑文件后再提交。


3. 彻底删除最近一次提交(危险!

如果你想完全删除最近一次提交及其所有更改(不可恢复),使用:

bash 复制代码
git reset --hard HEAD~1

⚠️ 警告:这会永久删除你最近一次提交的更改,请确保你不再需要这些内容。

适用场景:提交了敏感信息或临时测试代码,且不希望保留任何痕迹。


4. 创建一个"反向提交"来撤销(推荐用于已推送到远程的提交)

如果你已经将提交推送到远程仓库,不要使用 reset,因为会重写历史,影响他人协作。

应该使用 revert 命令,它会创建一个新的提交来"抵消"之前的更改:

bash 复制代码
git revert HEAD
  • 这会生成一个新提交,内容是把最后一次提交的更改"反过来"。
  • 安全,适合团队协作。

例如:你提交中添加了一行代码,revert 会生成一个删除该行的提交。


5. 撤销更早的某次提交

如果你想撤销更早的某个提交(不是最近的),使用:

bash 复制代码
git revert <commit-hash>
  • <commit-hash> 是你想撤销的那个提交的哈希值(如 a1b2c3d)。

Git 会创建一个新提交来抵消那次更改。


6. 强制推送到远程(仅在必要时)

如果你使用了 reset 修改了本地历史,并且想同步到远程仓库,需要强制推送:

bash 复制代码
git push --force-with-lease origin <branch-name>

⚠️ 警告:这会改写远程历史,仅在你确定没有其他人基于这些提交工作时使用


7. 实战举例

1. 撤销最近一次提交的记录

执行撤销命令

bash 复制代码
 git reset --soft HEAD~1 


但是这时候我们发现会提示这个

这时候需要强制推送一次

bash 复制代码
git push --force-with-lease 

这会儿就不会报错了。当然你可以重新add 然后强制推送。但是注意,一定要关注团队的提交记录,不要覆盖掉代码。

2. 撤销远端一次提交的记录

我们现在要回退这个提交记录

总结:

场景 推荐命令
撤销最近提交,保留修改用于重新提交 git reset --soft HEAD~1
撤销提交,修改回到工作区 git reset HEAD~1
彻底删除提交和更改 git reset --hard HEAD~1(慎用)
已推送到远程,想安全撤销 git revert HEAD
撤销历史中的某次提交 git revert <commit-hash>

篇幅二马上发布,主要是版本合并,如何合并代码冲突。

相关推荐
静心观复12 小时前
git revert 2
git
枫子有风12 小时前
Git 简介和基础使用
git
FrankYoou15 小时前
git stash push 命令作用及使用场景
git
眼小博1 天前
多人协作Git开发流程指南
git
lpfasd1231 天前
git-团队协作基础
chrome·git·elasticsearch
John Song1 天前
git多个账号管理
git·github
CV_J1 天前
解决Git 冲突后本地提交丢失/未推送问题
git
__Witheart__1 天前
Git 某个分支恢复到某个特定的 commit 状态
git
XU磊2602 天前
Git 实现github仓库管理-删除指定目录下的所有文件并保留目录结构
git·github
zhimingwen2 天前
解决 GitLab Token 轮换后 SourceTree 认证失败问题
git