2.Git基础--文件操作

1.git仓库初始化


1.本地初始化

        在我们的选定的文件夹中进行命令执行:git init,在该仓库出现一个.git文件夹,这个选定的文件夹就成为了我们的第一个git仓库,如下:
在这里插入图片描述


2.远程克隆

        远程克隆的命令是:git clone [url] [自定义文件名(可选)],同样是选定一个文件夹,克隆对应的代码到该文件夹下,通过网络去中心仓库克隆代码到本地,如下:
在这里插入图片描述


2.文件状态

1.文件相对git仓库状态

        git仓库的工作就是管理文件,而文件的状态,无疑是git非常关心的东西,那么在git仓库中文件究竟有几种状态呢。
总的来说,文件分为两个大的状态:1.被跟踪2.未被跟踪

  • 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录。(已被跟踪文件又分成下面几种状态)
    • 1.未修改状态:未被修改状态指的是本地文件和git远程仓库文件没有差异
    • 2.修改状态:修改状态指的是本地文件和git远程仓库文件有差异
    • 3.已存入暂存区:修改的文件通过命令存入暂存区(对于git仓库的分类可参考之后的文章)
  • 未被跟踪的文件就是指还没有纳入git版本控制的文件。

git文件状态:
Git的几种状态
git文件状态转换:


2.查询文件状态

1.没有文件变化

        通过git status查看我们刚刚创建的git仓库(没有任何变化):
在这里插入图片描述


2.创建未被跟踪文件

        在我们刚创建的仓库下面添加一个test.txt文件,在通过git status命令来查看一下现在仓库的情况(可以看到这边多了一个Untracked的文件,因为我们还没有把这个文件添加到版本控制中):
在这里插入图片描述


3.添加未被跟踪文件到版本控制

        这个时候我们再通过git add命令把我们刚才创建的文件添加到版本控制中,然后再查看一下仓库的状态(可以看到这边出现了一个changes的文件,就是我们刚刚添加到git版本控制的文件)
并且这边可以通过git rm --cached <文件名>来移除这个被添加到暂存区的文件
在这里插入图片描述


4.文件被修改之后的状态

        我们打开test.txt文件进行修改,然后查看该文件的状态(可以看到这边出现了两个记录,上面一个是我们刚才添加到版本控制的文件记录,下一个是我们修改了文件的当前文件的记录,显示是 change not stage,说明这个文件虽然进行了修改但是没有添加到暂存区)
        并且这边可以通过 git add命令将这个修改的文件添加到暂存区,可以通过git restore <文件名>把这个文件修改的内容回复到未修改之前
在这里插入图片描述
        我们先通过git restore <文件名>把修改回退回去看一下效果(这边可以看到的就是文件修改的内容被回退到未修改的状态,而此时的状态也是未修改的状态):
在这里插入图片描述
        我们再重复第一步的操作,然后通过git add把修改的文件添加到版本控制看一下效果(因为是同一个文件,现在我们的暂存区只剩下一个change的记录,但是我们把变化添加到暂存区了):
在这里插入图片描述


5.状态命令简览

        简览的状态命令是:git status -s,感觉这个命令的展示更加简洁,在文件前面会出现一些标识,来确认文件的状态,如下:

  • ??:新添加的未被跟踪的文件
  • A :新添加到暂存区的文件
  • M :修改过的文件
  • AM:修改之后添加到暂存区又被修改了

        我们这边通过实验来说明:
        添加一个AA.txt文件夹(未被跟踪文件),test.txt文件(新添加到暂存区),添加一个M.txt文件(设置为跟踪文件状态为修改,提交到仓库然后才能变成修改状态),添加一个MM.txt(添加到暂存区,再进行修改),然后我们通过git status -s来查看各个文件的状态显示:
在这里插入图片描述


3.通过规则忽略被修改文件

        我们可能会有这样的需求,就是有一些系统编译或者产生的文件是不需要提交到git仓库的,那么怎么办呢,我们可以配置规则来组织这些文件的提交。这边我们通过生成 .gitignore文件来配置规则,具体步骤如下:
        1.创建.gitignore文件,这边只能通过touch命令进行操作
在这里插入图片描述
        2.配置.gitignore文件,可以参考github.gitignore,这边配置了很多不同程序需要忽略的格式的文件
在这里插入图片描述
        3.我们这边配置的规则是.class,在目录中添加一个.class文件,看一下效果,发现.class文件没有被添加进来
在这里插入图片描述


4.查看修改之后的差异

1.查看文件前后差异

        我们这边把所有的文件都做了一个提交,然后再新创建一个文件叫做:new.txt,暂时先不添加到暂存区(也就是未跟踪文件),可以看到这个文件显示为未跟踪,但是我们输入git diff命令却看不到变化,这么看来git diff是针对被跟踪的文件才有信息的。
在这里插入图片描述
        那么我们这边把这个文件添加到暂存区在看一下这边的git diff的输出是没有东西的,但是我们通过git diff staged可以看到对应的暂存变化的输出:
在这里插入图片描述
        然后我们在尝试把这个文件进行提交,然后再修改,通过git diff命令来看一下输出,这边可以看到是git diff输出了对应的变化,而git diff --staged没有输出变化

在这里插入图片描述


2.图形界面查看

        图形界面查看的命令是:git difftool [文件名],这边可以看到因为没有设置difftool所以询问是否使用vim来进行查看
在这里插入图片描述
查看的效果:
在这里插入图片描述
退出命令::q!


5.提交更新

1.添加提交说明提交

        git的提交命令有两种方式,我们先说第一种,这种方式需要在提交的时候去填写提交信息,我们先修改new.txt文件,然后进行提交:
在这里插入图片描述

        回车之后出现提交界面,这边需要注意的是,提交记录是写在提交界面上modified下面的**#**那一行再起一行进行输入的(编辑命令为:i),具体我们看下图:
在这里插入图片描述

        然后再点击:esc按钮,退出编辑状态,输入命令::wq回车进行提交:
在这里插入图片描述


2.尾随提交说明提交

        第二种提交方式是直接把说明信息放在commit的后面提交,这样就不需要去修改提交信息的文本了,还是先修改一下new.txt文件再进行提交,同样是可以实现上面的提交效果的:
在这里插入图片描述


6.移除文件

1.删除暂存区文件

        删除暂存区的文件,相当于是git add的反操作,这个理解起来比较简单,我们这边的操作是新创建一个r.txt文件,然后添加到暂存区:git add,再通过git rm --cached [文件名]把这个文件移除(可以理解为变成原来的未跟踪文件)

在这里插入图片描述
        可以看到这边其实就是git add命令的反操作,而且这个操作只对暂存区生效。


2.从版本控制中删除文件

        从版本控制中删除文件的意思就是把远程仓库的某一些文件进行删除,之前可能有这个文件,但是我们的这次操作之后就会对这些文件进行删除,如果提交的话.
        我们这边要区分两个删除命令:git rm [文件名]git rm -f [文件名]
        git rm [文件名]:操作的是在远程分支并且本地没有进行修改的文件;
        git rm -f [文件名]:操作的是在远程分支并且本地进行了修改的文件;
        我们可以创建一个text.txt文件,提交到远程分支,然后进行两个命令的测试:
在这里插入图片描述
        这边的删除操作也必须是commit 提交之后才能生效.


7.文件重命名

        文件重命名应也是一个比较经常用到的功能,我们这边测试一下文件重命名的提交记录和效果,首先创建一个rename.txt,然后通过git mv [旧文件名] [新文件名]把rename.txt命名为newName.txt文件:
        可以看到这边其实还是比较简单的,就没必要赘述了。
在这里插入图片描述

发布了82 篇原创文章 · 获赞 15 · 访问量 3116

猜你喜欢

转载自blog.csdn.net/qq_34326321/article/details/104044760
今日推荐