GIT 实战命令操作大全,代码变动,推动,修改备注,撤销(篇幅一)
大家好,我是九逸,给大家分享git 实战操作命令
一、代码变动查看
1. 查看代码变动
git status
2. 查看工作区与最新提交之间的变动(未暂存/已暂存)
git diff <文件路径>
3. 查看某文件的完整修改历史(每次提交的变动)
git log -p <文件路径>
这个就不建议使用命令来查看了,直接使用工具来使用就挺好。
4. 查看某文件自某个提交以来的所有变动
git diff <commit-hash> HEAD -- <文件路径>
- 比较从某个提交到当前 HEAD 版本之间的变化。
不常用
二、代码推送
如果第一次使用命令提交一定要注意当前分支,现在编译工具都集成了GIT,我们可以肆无忌惮的提交,但是使用命令一定要注意,可以使用下面的命令。
1. 查看当前分支
git branch
1. 第一次推送时设置上游分支(upstream)
使用编译器的可以不用看这个步骤,因为编译器已经集成好了
如果这是你第一次推送某个分支,可以这样:
git push -u origin <分支名>
-u
参数会将本地分支与远程分支关联(设置上游),之后可以直接用git push
和git pull
,无需再指定分支。
做个演示
git push -u origin dev
2. 后续推送(已设置 upstream)
git push
可以直接使用 推送命令将代码提交到远端,当前现在编译器都集成了git,所有不用担心这个,只要分支切换对就行。
2. 提交命令
1. 提交到本地仓库
git add .
git commit -m "你的提交信息"
这个都是最常见的提交步骤。
2. 推送代码到远程仓库
推送代码的时候一定要拉取 最新的代码,
git pull # 先拉取最新代码
或
git pull origin dev # 先拉取最新代码
如果按照上面已经设置了分支,可以直接进行 push
git push
或者可以指定分支进行代码提交
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>
在弹出的编辑器中:
- 找到你要修改备注的那行,把
pick
改成reword
- 保存退出
- 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 命令
现在提交了两次记录
PICK 18d2459 打开等待时间
pick 0c0a7fc 增加备注2
假如现在要修改第一次提交的记录
输入 i 然后进入编辑模式,找到修改备注的这一行,把 pick
改成 reword
然后 wq! 保存
会有一个弹框出现
修改完成后,保存,仍需:
git push --force-with-lease origin dev
可以上git看查
已经修改成功。
建议:写 commit message 时认真一点,遵循清晰、简洁、有意义的原则。
四、撤销提交记录
1. 撤销最近一次提交(保留更改到暂存区)
如果你想撤销最近一次提交,但保留所做的修改(文件在暂存区,可以再次提交),使用:
git reset --soft HEAD~1
HEAD~1
表示当前提交的前一个提交。--soft
会保留修改在暂存区。
适用场景:提交了错误的 commit message 或想把更改合并到下一次提交中。
2. 撤销最近一次提交(保留更改到工作区)
如果你想撤销提交,并把修改带回工作区(需要重新 git add
),使用:
git reset HEAD~1
# 或者
git reset --mixed HEAD~1
--mixed
是默认模式,修改会保留在工作目录中,但不会暂存。
适用场景:想重新编辑文件后再提交。
3. 彻底删除最近一次提交(危险!)
如果你想完全删除最近一次提交及其所有更改(不可恢复),使用:
git reset --hard HEAD~1
⚠️ 警告:这会永久删除你最近一次提交的更改,请确保你不再需要这些内容。
适用场景:提交了敏感信息或临时测试代码,且不希望保留任何痕迹。
4. 创建一个“反向提交”来撤销(推荐用于已推送到远程的提交)
如果你已经将提交推送到远程仓库,不要使用 reset
,因为会重写历史,影响他人协作。
应该使用 revert
命令,它会创建一个新的提交来“抵消”之前的更改:
git revert HEAD
- 这会生成一个新提交,内容是把最后一次提交的更改“反过来”。
- 安全,适合团队协作。
例如:你提交中添加了一行代码,
revert
会生成一个删除该行的提交。
5. 撤销更早的某次提交
如果你想撤销更早的某个提交(不是最近的),使用:
git revert <commit-hash>
<commit-hash>
是你想撤销的那个提交的哈希值(如a1b2c3d
)。
Git 会创建一个新提交来抵消那次更改。
6. 强制推送到远程(仅在必要时)
如果你使用了 reset
修改了本地历史,并且想同步到远程仓库,需要强制推送:
git push --force-with-lease origin <branch-name>
⚠️ 警告:这会改写远程历史,仅在你确定没有其他人基于这些提交工作时使用。
7. 实战举例
1. 撤销最近一次提交的记录
执行撤销命令
git reset --soft HEAD~1
但是这时候我们发现会提示这个
这时候需要强制推送一次
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> |
篇幅二马上发布,主要是版本合并,如何合并代码冲突。