【Git操作】commit的提交、合并、修改、删除等操作

1、简介

在Git的使用过程中,每次完成代码修改过后,即需要将修改内容保存到本地的某个分支中,然后将其推送到远端分支中,而每一次的提交都将以一次commit的形式保存至分支中,使用人员既可以使用命令行进行提交内容的查看、编辑和修改,也可以在git的操作界面上进行相应的操作,同时也可以直接下载该提交下对应的所有代码内容,如下图所示,而本文主要是从命令行操作的角度来介绍Git的commit相关操作
在这里插入图片描述

2、使用

(1)提交

在完成代码修改后,可以通过git status来查看代码变更的基本情况,也可以通过git diff来查看变更文件的详细更改内容,当确认无误后,可以通过git add .来添加待提交的所有内容,也可以选择若干个文件git add filename来添加某个文件,当提交完毕过后,可以通过git commit -m "comment"来完成内容的提交,使得提交内容进入本地分支,当提交提示内容较长时,可以打开vim编辑器进行内容的增加,git commit即可打开vim编辑器,内容添加完毕之后保存退出
下图为Git的工作路径说明,Project为本地文件(也成为工作区),可通过git add添加到暂存区中,通过git commit添加到版本库中(本地分支中),通过git push添加到远端分支中,通过git pull可将远端分支上的内容拉取到本地分支上
在这里插入图片描述

(2)查看

当我们为借助git add将文件添加到暂存区时,可以通过git diffgit diff 文件名)来查看本次提交内容中的所有(某些)文件的变更内容,当我们已经通过git commit将变更内容添加到版本库之后,可以借助git show 版本id来查看本版本下的变更内容

(3)修改

①修改提交信息
场景一:修改最新commit的提交信息
git commit --amend,进入commit编辑界面,编辑后保存即可
场景二:修改前n次commit的提交信息
假设你需要修改倒数第n次commit的提交信息

$ git rebase -i HEAD~n
# 进入编辑模式,会出现类似以下的内容
pick 6608e22 修改代码结构调整导致不能正常显示的问题
pick 1d381cd 菜单切换可用
...

# 将需要修改的commit的那一行的pick修改为edit,然后保存退出
# 然后输入
$ git commit --amend
# 进入你需要修改的commit编辑界面,编辑后保存退出
# 修改结束后,输入以下命令返回到最新的commit
$ git rebase --continue

注意,你要修改几个commit,就要执行几次git commit --amendgit rebase --continue操作
②修改提交内容
step1:将当前分支无关的工作状态进行暂存

 git stash

step2:将HEAD移动到需要修改的commit上

 git rebase eb69bff96^ --interactive

step3:找到需要修改的 commit ,将首行的 pick 改成 edit 后保存
step4:开始修改文件内容
step5:将改动文件添加到残存

 git add

step6:追加改动到提交

 git commit --amend

step7:移动HEAD 回到最新的commit

 git rebase --continue

step8:恢复之前的工作状态

 git stash pop

(4)删除

例如我的提交历史如下

commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a

Author: test <[email protected]>

Date:   Fri Sep 22 20:55:38 2017 +0800

    add d.txt

commit 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c

Author: test <[email protected]>

Date:   Fri Sep 22 20:32:45 2017 +0800

    add c.txt

commit 7753f40d892a8e0d14176a42f6e12ae0179a3210

Author: test <[email protected]>

Date:   Fri Sep 22 20:31:39 2017 +0800

    init

假如要删除备注为add c.txt commit为0fb295fe0e0276f0c81df61c4fd853b7a000bb5c的这次提交

step1. 首先找到此次提交之前的一次提交的commit7753f40d892a8e0d14176a42f6e12ae0179a3210

step2. 执行如下命令

   git rebase -i  7753f40

弹出如下界面(原图丢失,下图类似)

img

step3. 将0fb295f这一行前面的pick改为drop,然后按照提示保存退出

step4. 至此已经删除了指定的commit,可以使用git log查看下

(5)合并

有时候在一个分支的多次意义相近的 commit,会把整个提交历史搞得很混乱,此时可以将一部分的 commit 合并为一个 commit,以美化整个 commit 历史,可以使用 rebase 的方法来合并多次 commit,主要步骤如下:

Step1:git log 查看当前的提交历史

比如需要将以下 3 个 ”请假应用客户端代码优化“ 的 commit 合并为一个 commit;
img
Step2: git rebase 进行 git 压缩
执行 git rebase -i HEAD~4 对最近的 4 个 commit 进行 rebase 操作;
img

具体的操作下面的 Commands 说明得很清楚了,对于 commit 合并可以使用 squash、fixup 指令,区别是 squash 会将该 commit 的注释添加到上一个 commit 注释中,fixup 是放弃当前 commit 的注释;

img
编辑后保存退出,git 会自动压缩提交历史,如果有冲突,记得解决冲突后,使用 git rebase --continue 重新回到当前的 git 压缩过程;
img

Step3: 推送到远程仓库 git push -f
重新查看提交提交历史,会发现这些 commit 已经合并了,整个提交历史简洁了很多:
img

(6)推送到远端

①不设置跟踪
在这里插入图片描述
git push origin t6
②设置跟踪
git push --set-upstream origin 分支名
git push
在这里插入图片描述

③强制推送
git push -f
常用于变基,合并、删除、修改提交内容之时

猜你喜欢

转载自blog.csdn.net/weixin_44704985/article/details/113977683