git commit(gitlab官网)

admin 219 0

很多朋友对于git commit和gitlab官网不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

一、git commit 是什么

1、 gitcommit”的意思为“git提交”,是git系统的一个命令,主要用于将暂存区里的改动内容提交到本地仓库中;语法为“gitcommit-m[message]”,“[message]”可以是一些备注信息。

2、 gitcommit命令的-a选项可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。如果只是修改或者删除了已被Git管理的文档,是没必要使用gitadd命令的。gitadd.命令除了能够判断出当前目录(包括其子目录)所有被修改或者已删除的文档,还能判断用户所添加的新文档,并将其信息追加到索引中。gitcommit--amend对于已经修改提交过的注释,如果需要修改,可以借助gitcommit--amend来进行。

3、 COMMIT(操作指令),COMMIT命令用于把事务所做的修改保存到数据库,它把上一个COMMIT或ROLLBACK命令之后的全部事务都保存到数据库。使用COMMIT提交当前事务,使事务中执行的变更永久化,所有事务的更改都将为其他事务可见,而且保证当崩溃发生时的可持续性。

二、git commit命令是做什么用的

1、git commit主要是将暂存区里的改动给提交到本地的版本库。

2、每次使用git commit命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。

3、git commit-a-m"提交的描述信息"

4、git commit命令的-a选项可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。如果只是修改或者删除了已被Git管理的文档,是没必要使用git add命令的。

5、git add.命令除了能够判断出当前目录(包括其子目录)所有被修改或者已删除的文档,还能判断用户所添加的新文档,并将其信息追加到索引中。

6、git commit--amend对于已经修改提交过的注释,如果需要修改,可以借助 git commit--amend来进行。

7、COMMIT命令用于把事务所做的修改保存到数据库,它把上一个COMMIT或ROLLBACK命令之后的全部事务都保存到数据库。

8、使用COMMIT提交当前事务,使事务中执行的变更永久化,所有事务的更改都将为其他事务可见,而且保证当崩溃发生时的可持续性。

9、通过修改的表,查看事务期间所作的任何更改,但其他用户不能看到所做的更改。

10、可以回滚ROLLBACK语句与事务过程中所做的任何更改。

11、可以使用此语句手动提交疑问在分布式的事务上。

12、可以使用此语句终止SET TRANSACTION语句的只读事务。

三、如何写好git commit message

每次提交,Commit message都包括两个核心部分:标题和内容。

<类型>(可选):<主题>//空一行<内容>

其中,标题是必需的,内容无需过多描述的话,正文内容部分可以省略。

不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。

标题部分只有一行,包括字段:类型和主题。

标题限制总字数在50个字符以内,以保证容易阅读。

feat: init LearnGit.gitI got a wrong-style git commit, so I init a.git for learninghow to write a git commit message in right way.And the last line just write here for a simple test,it's useless acturally.

类型用于说明 commit的类别,只允许使用下面7个标识。

init:项目初始化(用于项目初始化或其他某种行为的开始描述,不影响代码)

opt:优化和改善,比如弹窗进行确认提示等相关的,不会改动逻辑和具体功能等

style:格式(不影响代码运行的变动)

refactor:重构(即不是新增功能,也不是修改bug的代码变动)

other:用于难以分类的类别(不建议使用,但一些如删除不必要的文件,更新.ignore之类的可以使用)

(可选)类型后面可以加上括号,括号内填写主要变动的范围,比如按功能模块分,某模块;或按项目三层架构模式分,分数据层、控制层之类的。

#student-->表示学生模块(具体的模块开头字母小写,驼峰命名)

#ALL-->表示所有模块(特殊含义如ALL表所有,MOST表大部分,用大写字母表示)

e.g. feat(#student):新增添加学生的功能——表示student模块新增功能,功能是添加学生

主题是 commit目的的简短描述,不超过50个字符。

以动词开头,使用第一人称现在时,比如change,而不是changed或changes

内容部分是对本次 commit的详细描述,可以分成多行,正文在 72个字符处换行。

使用正文解释是什么(what)和为什么(why),而不是如何做,以及与以前行为的对比。

2.2格式化后Commit message的好处

2.2.1提供更多的历史信息,方便快速浏览

比如,下面的命令显示上次发布后的变动,每个commit占据一行。你只看行首,就知道某次 commit的目的。

关于更多git log的输出格式,参考以下:

2.2.2可以过滤某些commit(比如文档改动),便于快速查找信息

比如,下面的命令仅仅显示feat类型的commit。

5.3 Git log高级用法过滤提交历史

四、《Git/Gitlab进阶》十三:多样化处理本地commit记录

测试过程内容较多,每个步骤都逐一截图以便真实说明,也有列示用法。若不感兴趣,可直接查看总结部分。

在本地开发时,有提交很多次,但是其中提交信息,可能有些是可以合并到一起,有的可能没必要可以删除,有的需要修改 commit measssge……

这些都可以使用 git rebase命令的相关参数指令实现。

在本地的 tensorflow项目中添加几次提交

假如需要修改 commit id为 699b10610的 commit message。

因为这不是最近的一条 commit,所以 git commit--amend无法使用。

需要使用 git rebase指令相关参数

输入 git rebase-i<commit id>,进入 interactive模式

其中<commit id="" style="box-sizing: border-box;">为此次想要调整这个节点(commit id)开始至 HEAD中间的提交纪录。</commit>

因为我们要修改 commit id为 699b10610的 commit message,所以此处 git rebase-i后面的 commit id,可以是 699b10610的前一个 4f092caa。

输入指令后,会弹出文件,编辑需要调整的 commit记录,以及指令说明,如下图

注意:在 Rebase状态看到的这个纪录是跟我们平常看的纪录是反过来的,越新的 Commit在越下面。

所以,我需要修改 commit id为 699b10610的 commit message,只需要把这份文件中第一行改为 reword+修改后的message再保存执行即可

保存并关闭文件之后,会弹出一份新的文件,主要用于确认和修改 commit meassge,如下图

保存并退出后,可以看到 git rebase命令执行完成

查看日志,之前 commit id为 699b10610的提交,已经被修改为 commit id为 11d4ec53,内容也为修改后的内容。但是其它内容没有异动。

同上,使用 git rebase-i指令即可修改

根据上述指令说明,这可能需要执行多次。如果需要一并修改 commit message,要使用 squash,用第一条代替合并后的 commit message,使用 fixup。

示例:合并 commit id aa0312a和 c78d4fe和 026345ca,并修改 commit meassge为:“修改 tensorflow1.txt内容”

使用 git rebase-i进入 interactive模式

修改弹出文件第三句指令为 squash(注意,这个 commit的 squash,需要从下往上合并,否则可能会报 error: cannot'squash' without a previous commit错误)

然后会弹出合并 commit message的确认和修改画面

此时查看日志,就发现之前的 3条 commit,变成两条了

所以,再执行一次,即可达到最开始的需求,3合 1

这个不再赘述,同样使用 git rebase-i<commit id>进入 interactive模式,把需要删除的信息从 pick改为 drop,或者直接删除掉,再保存即可。

rebase的<commit id>要在被删除提交信息之前,不然看不到;

如果删除的那次提交会导致冲突,根据解决冲突的效果,影响对应 commit信息保留结果。

其它指令不再一一说明,简单带过。例如

想要调整提交信息顺序,直接把 interactive模式中看到的信息对应调整即可,诸如此类。

想要在已提交信息中间添加新的 commit信息,在新增起点的<commit id>的 interactive,模式改为 edit,

这会中止 rebase,然后就可以使用 git commit--amend修改当前信息,

或者实际修改文件/夹,再使用 git add和 git commit命令去添加新的 commit信息。

直到添加完成,再使用 git rebase--continue即可。

不要一定要注意,慎重,因为有一些提交和后续的提交是相互依存的,删除或者变动之前的可能会导致后续的提交出现异常,导致项目出现问题。

使用 git rebase-i<commit id>,可以对本地的提交记录做很多变动。

在进入 interactive模式后,对该文件(git-rebase-todo)做相应修改:

关于git commit到此分享完毕,希望能帮助到您。