Git超详解二 基础操作(看不懂算我输)

1.git分区

在这里插入图片描述

2.commit操作

  • 1.在磁盘上创建的文件只是在工作区
  • 2.下一步需要把他提交到暂存区 :git add 文件名
  • 3.使用git commit -m "commit message"才能提交到仓库

3.各种添加操作

  1. git add .:会把当前仓库下所有的文件(包括子文件夹)做过的修改(增删改)都会提交到仓库中。(除在.gitignore设置的以外)。
  2. git add *:他会忽略所有以.开头的文件,但是子文件夹下的以.开头的文件,是不会被忽略的。
  3. git add -u:只会将那些已经被跟踪的文件进行更新。

4.删除操作

4.1已经添加到仓库,删除

  1. git rm 文件名:如果文件的修改已经被添加到仓库中了,那么可以使用git rm 文件名直接从工作区和暂存区中直接删除,相当于执行两个操作:
    • 在文件夹中手动删除文件。
    • 执行git add .操作。

4.2只添加到暂存区,删除

  1. git rm --cached 文件名:如果文件被修改(新增,修改内容)了,只添加到暂存区,我们想从暂存区中删掉这个文件,那么可以使用--cached参数,这个参数不会把硬盘中的文件删掉,只会从暂存区和仓库中删掉,让这个文件处于Untracked files状态。

5.重命名文件

5.“传统功夫”——步骤繁琐

如果想要重命名一个文件,按照正常的逻辑来。我们需要执行两个步骤:

  1. 在文件夹中重命名文件:mv abc.txt 111.txt
  2. 执行git add 111.txt
mv abc.txt 111.txt
git add 111.txt

5.2"点到为止"——一行代码解决

git mv abc.txt 111.txt

6.查看当前状态

  • 1.使用git status可以查看当前暂存区的状态。
  • 2.如果在工作区中添加了一个文件,那么这个文件是没有被git跟踪的。使用git status可以看到以下提示:
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)

    111.txt

在这里插入图片描述

  • 3.在执行完git add操作,已经把工作区的文件添加到暂存区了,那么这时候再使用git status就可以看到文件已经被跟踪了,但是处于等待提交的一个状态,会看到类似以下的信息:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

    new file:   111.txt
  • 4.在git commit操作后,把暂存区的数据已经提交到仓库中了,这时候使用git status可以看到暂存区是干净的,这是不需要做git add/commit操作。会看到类似以下的提示:
On branch master
nothing to commit, working tree clean

7.版本回退

7.1查看版本

git log --pretty=oneline

或者

git log --oneline

7.2版本回退

使用git reset命令,他有三个参数

  1. git reset --soft [commit_id]:会将HEAD指针指向给定的commitid,不会修改索引(暂存区),也不会修改工作区的数据。
  2. git reset --mixed [commit_id]:使用reset默认的方式。--mixed可以省略
    会将HEAD指针指向给定的commitid,然后也会修改索引(暂存区),这时候体现出来,就是会提示有文件没有被提交到暂存区,但不会修改工作区的数据。
  3. git reset --hard [commit_id]:会将指针指向指定commitid,然后会修改索引(暂存区),也会修改工作区的数据。这个命令直接就把所有的地方,都回退到之前指定的版本了。

如果想回到之前的版本继续写代码,就需要使用git reset --hard

7.3回退了但是后悔了咋办

如果版本回退了,然后又想回退到之前的版本,那么可以用git reflog查看HEAD指针移动的过程,可以找到对应的commit,进行版本回退。

8.忽略文件

有一些文件我们是不想要添加被git追踪的,比如日志文件等。这时候我们就可以通过.gitignore文件,把不需要追踪的,放到这个文件中。忽略文件中的规则如下:

  1. 空行或者以#开头的行会被忽略。
  2. 支持标准的glob模式(简化版的正则表达式)。
  3. 以斜杠(/)开头的模式可用于禁止递归匹配。
  4. 以斜杠(/)结尾的模式表示目录。
  5. 以感叹号(!)开始的模式表示取反操作。
  6. 直接写文件名表示忽略这个文件。
vim 打开.gitignore
-->
 `*.a`:表示所有以`.a`结尾的文件。
 
 `!lib.a`:仍然跟踪`lib.a`,即使上一行指令要忽略,lib.a也不会被忽略。
 
 `/TODO`:只忽略当前目录的`TODO`文件,而不忽略其他目录下的`TODO``build/`:忽略build/下的所有文件。
 
 `doc/*.txt`:忽略`doc/`下所有的`txt`文件,但是不忽略`/doc/server/notes.txt`文件。
 
 `doc/**/*.pdf`:忽略`doc/`目录下所有的`.pdf`文件。

(glob模式:glob模式类似于shell所使用的简化版正则表达式。具体来讲,星号*匹配任意多个字符,[abc]匹配方括号内的任意单个字符(在这个例子中是a,b或者c),而问号(?)则匹配任意单个字符。在方括号中使用短划线分割两个字符(例如[0-9])的模式能够匹配在这两个字符范围内的任何单个字符(在这个例子中是0到9之间的任何数字)。你还可以使用两个星号匹配嵌套目录,比如a**z能够匹配a/za/b/za/b/c/z等。)

注意:如果之前已经把不需要跟踪的文件进行了commit,需要先执行git rm --cached 文件名,把文件从仓库删掉,然后再添加到.gitignore中才能生效

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值