GIT使用教程(十五步吃透,全网最详细)

一、安装GIT

到官网下载GIT:https://git-scm.com/downloads
在这里插入图片描述

二、创建仓库

在要创建仓库的文件夹空白地方点击右键
在这里插入图片描述
在弹出的菜单中点击"GIT Bash Here", 然后初始化仓库。

$ git init

在这里插入图片描述
成功后该文件夹中会多出一个".git"的隐藏文件夹,这个目录是GIT用来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
在这里插入图片描述
.git是隐藏文件夹,要设置显示隐藏文件夹后才可见。

1.打开文件夹选项
在这里插入图片描述

在这里插入图片描述
2.设置隐藏文件为显示
在这里插入图片描述
记住,确认有.git文件夹存在就行了,不要随便改动里面的内容。

三、GIT的分区和工作流程

在这里插入图片描述

  • Workspace:工作区
    就是程序员编辑代码的地方,就是.git(仓库)所在的那个目录(不是.git里面),所有的改动都在这个区进行,并先在这个区直接起作用。
  • Index / Stage:暂存区
    改动文件暂时存放的地方,所有要提交到仓库的改动(对工作区中文件的增、删、改)都要先添加(add)到这里,然后再提交(commit)。当然,也可以撤回(checkout)工作区。
  • Repository:仓库区(或本地仓库)
    每次提交都是一个版本,仓库区保存了之前提交的各个版本,可以push(推送)到远程仓库,也可以恢复(reset、revert、checkout)回工作区。
  • Remote:远程仓库
    远程仓库保存着由一个或多个作者从其本地仓库推送(push)上去的各个版本及分支。各个作者可以把master(主分支)的最新版本pull(拉取)下来自己本地,然后合并上自己的改动,再push(推送)到远程仓库的master分支上去供其它人使用。每个人都负责自己那部分,然后都把自己的成果合并到master分支,这样就可以轻松地进行分工合作了。

四、把文件添加到暂存区

4.1 先查看仓库当前状态

$ git status

在这里插入图片描述
红色的是未添加到暂存区的文件,如果是刚创建的仓库,git status后该文件夹中的所有文件都会是红色,因为这些文件还没加入过暂存区,都是"untracked files"(未被跟踪文件)。
在这里插入图片描述

4.2 把单个文件加入暂存区

$ git add source1.c

4.3 把多个文件加入暂存区

$ git add source1.c source2.c source3.c

4.4 把所有文件加入暂存区

$ git add .

添加到暂存区后,查看一下仓库状态,添加后的文件变成绿色
在这里插入图片描述

五、清除未加入暂存区的文件

如果想清除新增的文件,或从未track过(加入过暂存区)的文件,可以用下面的命令。
例如:新增了source4.c和source5.c,或者说创建本地仓库后从未加入过暂存区,现在想清除掉。

5.1 查看clean会删除哪些文件

$ git clean -n

在这里插入图片描述

5.2 删除当前目录下所有没有track过的文件,不会删除.gitignore文件里面指定的文件夹和文件

$ git clean -f

在这里插入图片描述
执行后,文件夹中的source4.c和source5.c会被删除掉,再次git status(查看仓库状态)就看不到这两个文件的提醒了

5.3 删除指定路径下的没有被track过的文件

$ git clean -f <路径>

5.4 删除当前目录下没有被track过的文件和文件夹

$ git clean -df

5.5 删除当前目录下所有没有track过的文件. 不管他是否是.gitignore文件里面指定的文件夹和文件

$ git clean -xf

5.6 添加.gitignore文件

一般我们总会有些文件无需纳入 Git 的管理,不需要添加和提交,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
例如,有个临时文件叫file1.txt,还有编译过程中生成汇编文件(*.o),我们想忽略掉。
在这里插入图片描述
在还没有.gitignore文件的时候,查看状态时会显示这个未跟踪文件。

5.6.1 创建一个.gitignore文件

先看下在window下创建的情形
在这里插入图片描述
新建文档后,出现下面文件。
在这里插入图片描述
改名。
在这里插入图片描述
出错!因为我们要创建名称为空,后缀为.gitignore的文件,而window中创建文件必须得有名称。
那咋整?

方法还是有的,我们可以到git base的黑框中创建。然后用vim或vi编辑器编辑,或者在目录中双击打开编辑也没问题。
在这里插入图片描述
创建并编辑好.gitignore文件(编辑过程放在本小节末尾)后,我们再查看一下仓库状态。
在这里插入图片描述
可见,之前显示未跟踪的文件已经被忽略掉了。
接下来我们可以把.gitignore添加并提交,这样我们最新版本中就有.gitignore文件了。
在这里插入图片描述
但是,如果该文件已经在仓库中,那忽略就无效了。

例如,source1.c已经是仓库中的文件,newfile.txt是新建但已加入暂存区的文件,我们现在要忽略它们。
在这里插入图片描述
可见,忽略是无效的,source1.c改动后,还是会有相应的提醒。暂存区的newfile.txt也还在,而且如果继续对newfile.txt有改动,还会出现相应的提醒。
在这里插入图片描述
可见,如果要忽略某文件,要先确保此时它不在仓库和暂存区中。
如果它们已经在仓库和暂存区中了,那唯一的办法就是将它们清除出来。
如下图:
在这里插入图片描述

下面是vim编辑器编辑的过程。
在这里插入图片描述
执行$ vim .gitignore命令后,vim编辑器打开.gitignore文件(空文件),此时是vim编辑器的正常模式,点击i即可进入插入模式(可编辑)。
在这里插入图片描述
在这里插入图片描述

5.6.2 gitignore文件的写法

1.所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
2.可以使用标准的 glob 模式匹配。
3.匹配模式最后跟反斜杠(/)说明要忽略的是目录。
4.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

  • 星号(*)匹配零个或多个任意字符;
  • [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
  • 问号(?)只匹配一个任意字符;
  • 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

例如:

# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

在这里插入图片描述

//*!
/OBJ/
表示忽略OBJ目录下的所有文件。
/OBJ/
!/OBJ/UWB.sct
*
表示忽略OBJ目录下的文件,UWB.sct除外。
“!”用来恢复追踪,但如果文件所在的目录被忽略了,这个文件无法恢复追踪。

***
/a/*/b 只能匹配a的二级子目录的b, 比如a/x/b
/a/**/b 可以匹配a的任意级子目录的b,比如a/b, a/x/b, a/x/y/b …

六、删除仓库中的文件

6.1 把删除仓库中某文件的请求添加到暂存区,且取消对该文件的跟踪,但不删除源文件

$ git rm --cached source1.c

提醒:如果要清除多个文件,列在后面即可。
在这里插入图片描述
执行后:
删除仓库中的文件的请求添加到暂存区,提交后生效。
取消对该文件的跟踪,立刻有效
工作区中的文件及其改动还在,只是这个改动没有添加到暂存区。

6.2 把删除仓库中某文件的请求添加到暂存区,并删除源文件

$ git rm source1.c

提醒:如果要清除多个文件,列在后面即可。
在这里插入图片描述
命令执行后:
源文件立即被删除,而删除仓库中的文件是提交后才生效。

七、撤销被跟踪的文件在工作区的变动

7.1 先查看仓库当前状态

$ git status

在这里插入图片描述
在这里插入图片描述
这个就是工作区中有变动的跟踪文件。

7.2 查看被跟踪的文件的具体改动

$ git diff 

在这里插入图片描述

7.3 查看某个被跟踪的文件修改了那些内容

$ git diff  soure1.c   

提醒:如果要查看多个文件,列在后面即可。
在这里插入图片描述
红色为删除的内容,绿色是增加的内容。

7.4 查看某类被跟踪的文件修改了那些内容

有时候可能只是改动了一两个文件,但编译后git status时发现一大堆文件有改动(标红),如果直接用git diff,下面的内容多到让你怀疑人生。所以,我们可以针对也看某类或某几类文件的改动。

提醒:如果要查看多个类,列在后面即可。

$ git diff *.c *.h

在这里插入图片描述
当然,更好的方法是用.gitignore文件到忽略那些中间文件,不去踪它们。具体操作请看5.6.1小节。

7.5 撤销某被跟踪文件在工作区的变动

$ git checkout -- source1.c   

提醒:如果要清除多个文件,列在后面即可。
在这里插入图片描述
例如:上图的"modified: source1.c"就表明暂存区中的文件source1.c已发生了改动,可用$ git checkout – source1.c来放弃这个改动。

7.6 撤销所有被跟踪的文件在工作区的变动

$ git checkout . 

7.7 取消上次git add后,本地工作区对被跟踪文件所有改动(增加、删除、修改),并删除未跟踪文件

$ git checkout . && git clean -df

例如:当前目录有source1.c、source2.c和source3.c,上次已全部加到暂存区。
在这里插入图片描述
后来,增加了source4.c,而且把source3.c的内容改为:333。
在这里插入图片描述
查看仓库状态,可以看到,当前目录与上次加入暂存区(git add)相比,所有的改动。
如果想丢弃这些改动,可以用:$ git checkout . && git clean -df
根据上面的内容可知:
$ git checkout . 是丢弃被跟踪的文件在工作区中的改动,如上面的source3.c的改动
$ git clean -df 是丢弃未跟踪过的文件,如上面新增的source4.c
这两个命令执行后,跟踪的文件就可以恢复上次git add后的状态。

八、提交到本地仓库

8.1 提交之前,先查看仓库状态,确保暂存区的文件没有变动

$ git status

在这里插入图片描述
上图中,"modified: source1.c"表示该文件有改动,要把这个提示处理掉才能提交。
方式1 把这个改动更新到暂存区,可以用:

$ git add source1.c "或 "$ git add .

方式2 把这个改动丢弃掉,可以用:

$ git checkout -- source1.c 

8.2 如果暂存区中有变动的文件,要先用添加命令更新到暂存区

$ git add sorce1.c		//把source1.c加到暂存区
或 
$ git add .					//把当前目录中所有文件加到暂存区

在这里插入图片描述

8.3 提交文件(–m后面的是注释)

$ git commit –m “注释内容”

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值