Git使用说明

Github提供基于Git的版本托管服务。Git是一款开源的分布式版本控制系统,是Github上用来管理项目的工具。


简洁版

对于工具的学习,我认为应该多做减法,只捡最有用的学,那些奇技淫巧不学也罢,应该把时间投入更有价值的事情中。 -labuladong


详细版


Github系列


使用

labuladong 我用四个命令概括了 Git 的所有套路

本地git使用

需求一,如何把 work dir 中的修改加入 stage

git add

20211020110333

需求二,如何把 stage 中的修改还原到 work dir 中

git checkout

把本地文件已经添加到stage中了,然后修改了本地文件,但是后悔了。希望stage中的文件能够覆盖本地文件 (本地新增加的文件仍会被保留)

把 a.txt 添加到stage区,然后在 a.txt 中添加了一行 hello world。现在需要将 stage 中的空文件去覆盖work dir中的文件,用 git checkout a.txt
20211020120037

需求三,将 stage 区的文件添加到 history 区

git commit -m '一些描述'

当一些描述中有错别字时,可以用git commit --amend。就是把错别字的修改和之前的那个 commit 中的修改合并,作为一个 commit 提交到 history 区

20211020112743

需求四,不改变 work dir 中的任何数据,把stage中的 a.txt 变为 unstage 的状态。

git reset a.txt

不会改变 work dir 中的数据,会改变 stage 区的数据,所以应确保 stage 中被改动数据是可以抛弃的。
20211020113347

需求2中的git checkout是把stage中的文件覆盖到work dir中,因此会改变work dir中的内容。

  • 改了本地的代码,发现还没有之前放在stage中的代码好,于是用checkout覆盖

需求四中的git reset a.txt相当于把a.txt文件从索引状态变为非索引状态,这不会改变work dir中的内容

  • 已经把这个文件放到stage中了,但是还需要修改。于是把文件从stage变为unstage状态。除这个文件的其他文件都可以进行后续的commit

需求五,将 work dir 的修改提交到 history 区

git add 然后 git commit 就行了,或者一个快捷方法是使用命令 git commit - -m "一些描述"

20211020120311

需求六,将 history 区的历史提交还原到 work dir 中

git checkout HEAD .
比如从 GitHub 上 clone 了一个项目,然后乱改了一通代码,结果发现我写的代码根本跑不通,于是后悔了,干脆不改了,我想恢复成最初的模样。用git checkout HEAD .后,work dir 和 stage 中所有的「修改」都会被撤销,恢复成 HEAD 指向的那个 history commit。(注意:新增的文件不会被撤销)

当然,只要找到任意一个 commit 的 HASH 值,checkout 命令可就以将文件恢复成任一个 history commit 中的样子:git checkout 2bdf04a (HASH值可以用git log –oneline来查看 (或者git reflog))

  • 从stage到work dir的checkout git checkout a.txt:不想要work dir中的a.txt内容了,让stage中的内容把work dir中的内容覆盖

  • 从stage到work dir的reset git reset a.txt:把stage 中的a.txt移动到work dir,然后再git commit . m "my commit"时,提交到history中的是除了a.txt外的所有文件

  • 从 history到workdir的checkout git checkout HEAD . :比如我从 GitHub 上 clone 了一个项目,然后乱改了一通代码,结果发现我写的代码根本跑不通,于是后悔了,干脆不改了,我想恢复成最初的模样

需求七,合并多个 commit

git reset 17bd20c 到最开始的记录(而且不会改变work dir中的数据),然后git addgit commit
20211020121757


   转载规则


《Git使用说明》 M 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
在Ubuntu中使用gtest 在Ubuntu中使用gtest
GoogleTest User’s Guide官方教程Unit Testing C++ with Google Test,以及配套视频。教程简洁明了,非常推荐 安装在任意文件夹下打开终端,安装并编译gtest,并将产生的库拷贝到/usr
2020-10-12
下一篇 
狂神说MySQL 狂神说MySQL
Navicat 15.x for MySQL安装 MySQL (B站视频) MySQL (文档) MySQL01:初识MySQL MySQL02:数据库操作 MySQL03:DML语言 MySQL04:使用DQL查询数据 MySQL
2020-09-26
  目录