GIT能干什么

  要想了解一个工具,我们就要知道工具的用途。git主要有一下两种用途:

1.版本管理

在我们日常生活中,经常要编辑大量文档,拿某一文档举例,若我们想保存本次对文档的更改,就要保存文件,这样我们就不能将文档回复到没修改之前的状态了,若想保存这两次的更改,则必须将原文建立一个副本,然后在副本里更改,若我们想保留所有的修改记录,则必须建立大量的副本,这不仅会浪费我们的磁盘空间,还非常不宜于管理。而git就解决了这个问题,我们可以建立一个.git文件,从而保存所有的版本。

2.自动合并文档

我们每个人在写程序代码时,往往写的是程序部分功能的代码,而并非全部,当我们每个人都完成各自负责的代码之后,就要将代码合并,若不使用工具的话,只能手动复制粘贴,非常的麻烦,使用git就可以很方便的将这些代码合并在一起,当然也可以合并其他类型的文件。

GIT使用

1). 建立本地仓库

1.1 新建一个空文件夹
	1.2 进入文件夹,在文件夹内右击选择“Git Bash Here”
	1.3 命令行内输入命令“ git init ”
 		  “ git init ” 命令用于新建一个本地仓库,此命令会在文件夹内建立一个名为" .git "的隐藏文件,需要手动设置才会显示在文件夹中。

2). 添加文件到本地仓库

2.1 将我们需要操做的文件复制到第一步新建的文件夹下(第一步也可以不用新建文件夹,直接在我们文档目录下建立本地仓库)
	2.2 " git status "查看文件状态
		输入命令后可以发现我们的文件名字为红色,文件名的颜色表示文件的状态,红色表示文件在暂存区中,而变为绿色才表示文件已存放到本地仓库中。
	2.3 " git add <文件名> " 将文件放入暂存区
		代码举例: git add a.txt
		我们的文件在git中,是先将文件通过命令存入暂存区,此时文件的版本并没有保存,需要从暂存区在存入本地仓库。虽然文件位置在硬盘中没有什么变化,但在git中的位置还是有区别的。
		" git add . "此命令表示将目录下所有文件放入暂存区,文件较多时使用
	2.4" git commit -m "[双引号里为对本次文件的描述,不能省略]"  "将暂存区内所有文件存入本地仓库
		代码举例:	git commit -m ”版本1.1.1“
		我们在git commit 之前若不想将某一文件添加到本地仓库,可使用命令: git reset <文件名> ,例如" git reset a.txt "。
  辅助操作命令之"git log"
"git log"查看本地仓库的commit。
	回显信息解释
		commit 945e85121ccfde1bbc93d29910e4eb661daccc94 (HEAD -> master)    --- commit  后面的一串代码为一串哈希值,就像我们的身份证号一样唯一,但与身份证号不同的是这串字符又可以作为本次commit的名字,后文会对这串字符的调用进行解释
		Author: git <git@git.com>	--- 谁提交的这次commit,前面是名字,<>内为邮箱地址
		Date:   Sat Aug 8 22:09:02 2020 +0800	---提交时间

			  版本1.1.2	---我们在执行commit命令时对本次commit的备注
在2.4中,虽然我们对暂存区的文件进行了commit操作,也就是将其添加到了本地仓库,但当我们对某一文件进行修改之后,就要重新对其进行commit操作,即添加到本地仓库。例如我们将2.3代码举例中的a.txt内容修改,就需要 git add a.txt ----> git commit -m "版本1.1.2"。
此时我们git log后可以发现有两个commit。备注分别为"版本1.1.1"和“版本1.1.2”
  GIT命令之git reset
reset命令用于回到某一commit
git reset <commit name> --<模式>	
代码举例:git reset 945e85 --hard
	<commit name>:在介绍git log的回显信息时,我们知道回显的第一行有一串字符,而这里只需输入字符的前7位即可。
	<模式>:reset 有三大模式,分别为mixed(默认)、soft、head。
		mixed:保留所有变更,且变更文件状态为红色			
		soft:保留所有变更,且变更之后文件状态为绿色
		hard:不保存变更。
		此处说的变更为两个commit中文件中内容的变更,若我们当前在commit"版本1.1.2"中,要切换到commit“版本1.1.1”中,若选择mixed和soft,更改commit“版本1.1.1”的内容使其与commit“版本1.1.2”中内容相同,若选hard模式,则保留commit“版本1.1.1”中的内容。
  GIT命令之git reflog
git reflog 相当于查看日志,执行此操作,我们执行过的操作都会显示出来。
值得注意的时我们执行reset之后,无论哪一个模式,commit“版本1.1.2”都会消失即git log后不再出现commit“版本1.1.2”的信息,若我们想在回到commit“版本1.1.2”但又不知道它的哈希值怎么办呢,我们就可以用命令git reflog来查看我们commit"版本1.1.2"的哈希值了,之后便可使用reset命令回到commit"版本1.1.2"的状态。

3). GIT中分支的概念

分支相当于树上的枝干,我们新建一个分支后,每条分支互不关联。
GIT中默认只有一个分支master,我们每次输入代码光标所在的上一行的末尾青色高亮处,就显示我们当前分支的名字。

git checkout -b <new-branch name> <modi-branch name>:新建一个分支
  <new-branch name>:我们新建分支的名字
  <modi-branch name>:根据哪一个分支当模板。意思就相当于为某一分支建立了副本,就相当于一个文件被复制粘贴成了另一个文件,两者中对内容的操作没有关联。

git checkout :切换到某一分支

git branch:查看所有分支

git merge
此命令用于分支的合并,常用作文档的合并。
在我们多人协同写代码时,代码的共享要用到远程仓库(github等),git merge可配合远程仓库使用。