Git学习笔记——3、文件的新建、暂存、提交及重新提交 - Go语言中文社区

Git学习笔记——3、文件的新建、暂存、提交及重新提交


本节在不考虑分支的情况,以game文件夹为例,来实际演示git的实际操作,为了好理解,先只模拟代码的增和补,至于回退一类的逆向操作则放在下一节。

1. 初始化本地库

假如我们的项目是game,新建并进入game目录,我们先执行git status命令,如图:
在这里插入图片描述
诶,严重错误:不是一个git仓库
执行git init命令,再次git status,如下:
在这里插入图片描述
有变化了,提示告诉我们已完成初始化,目前仓库还没有提交呢。
查看game目录里面,发现多了个隐藏文件夹:.git
在这里插入图片描述
里面的内容,则是git自动生成的
在这里插入图片描述
总结:

  • git init 用来初始化本地仓库,告诉git,这个文件夹需要版本控制啦。
  • .git文件夹则是版本库的数据文件。只有内含.git目录的文件夹才可被git识别。
  • git status用来查看文件状态的变化,在常用不过了。命令后跟文件名则是查看该文件的状态,若不加文件则显示目录下所有变更状态

2. 编辑文件并提交

新建list.md文件,开始编写我的“代码”。新建文件后,马上使用git status命令,可以看到list.md处于未追踪状态:
在这里插入图片描述

.DS_Store
是mac系统自动添加的,可以忽略,但是也被git检测到了。在日常使用中,IDE的一些配置文件、说明文件可以被加入到“忽略”列表中,告诉git此类文件无需管理。这点随后再总结。

编写我的“代码”,写入“全境封锁”四个字:
在这里插入图片描述
使用git add命令,让文件进入暂存区,再次查看状态:
在这里插入图片描述
可以看到,list.md已经被暂存(变黄),命令行提示我们这个文件的变化即将被提交。

接下来使用git commit 来将暂存态的list,md提交版本库:
在这里插入图片描述
其中 -m 选项指的是在命令中直接编写提交说明。如果不加-m选项,则git会打开vim编辑器来让你编写提交说明,编写完毕后,需要使用:wq退出,才可完成提交,如图:
在这里插入图片描述
注:如果不写提交说明,是无法提交成功的!(别懒!提代码写log是好习惯啊!!!!)

之后继续编辑我的list.md,再提交,步骤如上所述,很简单!


3. 查看提交记录

使用git log 命令来查看提交的情况:
在这里插入图片描述
git log 加上 -c 选项,用来显示本次提交的变更内容:
在这里插入图片描述
这里可以看到加号则是文件增加的内容,减号则对应删除了,如果是修改一行,可以看到实际上是先删除,再新加(这个属于文本编辑器的动作)。

如果将“全境封锁”改为“全境封锁1”,则git log -c如下图:
在这里插入图片描述


4. 暂存态变更内容的查看

标题3中所用的git log 命令,仅适用于已将变更提交至版本库时的情况,如果文件修改后仅执行暂存。这时候的变化则使用git diff 命令来查看:

我在文件中加入了“全境封锁1-季票”:
在这里插入图片描述
执行 git diff list.md ,可以看到list.md的变化在这里插入图片描述
git diff --staged 命令用来查看暂存后的变化
即:git add list.md 后,执行git diff 无内容,但执行git diff --staged list.md 则显示如上图。

以上两个命令我们没有后跟文件名,则会显示工程目录下所有文件的变化,如果我们还有一个cpu.md文件一起修改,则git diffgit diff --staged 会同时显示两个文件的所有变更:
在这里插入图片描述


5. 提交后的重新提交

这次我们要添加“全境封锁2”这个游戏,编辑list.md,提交,但是因为粗心,写成了“全境封锁3”,提交后,使用 git log -c 查看如下: 在这里插入图片描述
此时,我们完全可以重新来一次提交,提交时写提交日志:“修复手滑写错的全境封锁3”。

可是我偏偏不想再增加一个版本了,让人家看着很low,那么git commit --amend 可以帮你,修改错误,暂存,执行:git commit --amend -m '购买全境封锁2' ,执行git log -c,比较之下可以看到上次错误的提交已被覆盖了:
在这里插入图片描述
好的,这下完美了。

PS:如果我觉得提交日志写的不好,需要重新写一下,那么更简单,仅修改 -m 后面的内容,执行命令即可。

使用--amend,可以覆盖最新的提交,使用git log看到,即使提交了多次,log中显示也只看到一次提交:
在这里插入图片描述
那么,类似这种覆盖提交的操作真的再也无据可查了嘛?使用 git log -g 即可:
在这里插入图片描述
可以发现第一次是错误的提交,第二次是--amend的覆盖提交。

那么加上-c参数,可以看到多次--amend提交的变化了,执行git log -g -c如下:
在这里插入图片描述
可以看到,版本是从下到上递增的,第一次写的是“全境封锁3”,第二次则是“全境封锁2”了。

由此,可以看到,加上--amend 参数后并没有删除最新的提交,而是新生成了一个提交,重新commit了一次而已。也是有据可查的。


6. 我就是不想写提交日志

如果真的很赖,不想写提交日志,在commit时使用 --allow-empty-message 参数即可:
在这里插入图片描述
在弹出的vim编辑器中直接:q退出,就提交成功了。

使用 git log 来看,果然提交说明那块儿啥也没有啊:
在这里插入图片描述


7. 有些文件不想git来管

一些IDE的描述文件、class文件、mac系统自己添加的一些隐藏文件,在git status的时候,总会提示,很烦人:
在这里插入图片描述
那么只要在我们的目录下新建.gitignore(这是一个隐藏文件)文件来告诉git:“不要多管闲事儿”,把需要忽略的内容(文件或某个文件夹)加到这个忽略文件中:
在这里插入图片描述
具体 .gitignore有自己的语法,可以自行baidu,以下是一个项目中的示例:
*是通配符,名称可以匹配单个文件或文件夹名。
在这里插入图片描述

好了,把.gitignore提交之后,我们再看git status ,爽多了!
在这里插入图片描述


总结完毕,至于撤回的相关操作,下篇再说。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/k99sam/article/details/103243399
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢