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>

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

相关推荐
哆哆啦0019 分钟前
obsidian远程同步方案:infiniCloud+remotely save方案
笔记·git·obsidian
西柚小萌新2 小时前
【计算机常识】--使用 Gitea 在本地/内网搭建 Git 私有服务器
服务器·git·gitea
zhangfeng11333 小时前
scp 命令的使用方法 什么软件支持 .git bash xshell .openssh
开发语言·git·bash
_君莫笑11 小时前
大厂Git使用规范
git
无心水17 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho
南境十里·墨染春水1 天前
linux学习进展 git详解
linux·git·学习
zhangfeng11331 天前
CodeBuddy ai对话框上面的git docs terminal Rulds 干嘛用的,以thinkphp fastadmin 为例,插件市场
人工智能·git·编程
OYangxf1 天前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇1 天前
Git全套流程
git
次元工程师!1 天前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow