git追踪文件对文件进行版本控制-git基础(四)

通常,你会对文件做些修改,每当完成了一个阶段的目标,想要将记录下它时,就将它提交到到仓库。
  工作目录下的每一个文件都只有两种状态:已跟踪 或 未跟踪。 
  已跟踪的文件是指那些被纳入了版本控制的文件,它们的状态可能是未修改,已修改或已放入暂存区。
  初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们, 而你尚未编辑过它们。
  现在我们基于第三篇文章的自建 Git 仓库进行操作。

一、Git版本控制
1. 检查当前文件状态
git status 命令查看哪些文件处于什么状态。
我们在自己建的仓库下执行 git status 输出如下:

$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)

分支名是“master”这是默认的分支名。
现在我们的工作区什么文件都没有,我们新建一个 hello.txt 文件。内容为空。

再次执行 git status 命令,输出如下:

$ git status
On branch master
No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

未追踪文件(Untracked files)下面列出了 hello.txt。表示我们新建的文件,处于未追踪的状态,即Git没有管理。
因为此时,我们只是进行了如下操作:文件夹下新建了一个文本文件。

2. 跟踪新文件
git add <file> 命令,用于开始跟踪一个文件。
此时我们要追踪 hello.txt,则运行 git add hello.txt 命令。并查看文件状态。

$ git add hello.txt

$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

此时 hello.txt 已被跟踪,并处于暂存状态,保存到了暂存区。文件的状态此时为已暂存(staged)。git add 是我们最常用的命令了吧。
git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将跟踪该目录下的所有文件

3. 修改已追踪文件
hello.txt 已经加入了追踪,此时我们修改hello.txt,增加内容 hello world 并保存。
运行 git status 查看文件状态。

$ git status
On branch master
No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   hello.txt

文件 hello.txt 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。
此时文件的状态为 已修改(modified)。
要暂存这次更新,需要运行 git add 命令。
这是个多功能命令:
3.1 可以用它开始跟踪新文件
3.2 把已跟踪的文件放到暂存区
3.3 还能用于合并时把有冲突的文件标记为已解决状态等。

再次执行 git add 命令,将本次的修改,放入暂存区。并查看文件状态。

$ git add hello.txt

$ git status
On branch master
No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

这一步提醒我们,已追踪的文件,每次修改完毕后,都要进行一次 git add 操作,将文件放入暂存区。

4. git add的反操作。
git rm --cached <file> 命令
对于我们已经追踪的文件,即已经git add过的文件,我们想撤销 git add 操作,应该怎么办。
此时应该执行git rm --cached <file> 命令。我们将刚才已追踪的hello.txt从暂存区撤销,并查看文件状态。

$ git rm --cached hello.txt
rm ‘hello.txt‘

$ git status
On branch master
No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

此时,又回到了初始状态,等于我们刚刚新建了一个 hello.txt 文件,文件的状态为未追踪(Untracked)。

下图为文件的状态流转图:

总结:
这篇文章,我们练习了三个命令。
git status 命令查看哪些文件处于什么状态。
git add <file> 命令,用于开始跟踪一个文件。
git rm --cached <file> 命令,git add的反操作。

转载自:知优码  https://www.javaidea.cn/topic/1235.html

原文地址:https://www.cnblogs.com/beenupper/p/12526815.html

时间: 2024-08-30 00:41:58

git追踪文件对文件进行版本控制-git基础(四)的相关文章

Git 的 .gitignore 忽略文件受版本控制

忽略文件的三种方法: [方式一] .gitignore 配置文件用于配置不需要加入版本管理的文件.在项目根目录下创建.gitignore文件,然后把需要忽略的文件或文件夹名写进去.这样就可以忽略这些文件受版本控制啦.配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠"/"开头表示目录: 以星号"*"通配多个字符: 以问号"?"通配单个字符 以方括号"[]&quo

git移除某文件夹的版本控制

thinkphp框架,Apps/Runtime下目录移出版本控制. git rm -r -n --cached  */Runtime/\*      //-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览. git rm -r --cached  */Runtime/\*      //最终执行命令. git commit -m"移除Runtime目录下所有文件的版本控制"    //提交 git push origin master   //提交到

Git - .gitignore怎么忽略已经被版本控制的文件

问题 如果某个文件已经存在于远程仓库了,也就是说某个文件已经被版本控制了,如果将该文件添加到.gitignore中,是无法生效的.因为.gitignore是用来控制尚未被纳入版本控制的文件,如果文件已经存在于远程库中,自然也就无法生效了. 于是就此衍生了一个问题:.gitignore怎么忽略已经被版本控制的文件? 解决方法 方法一 直接在远程库里将想要忽略的文件删除掉,再将该文件写入.gitignore中即可. 这种做法的前提是,你确定该文件是允许从远程库删除掉的,然而有些时候,这种做法是不可能

Git忽略已追踪文件或文件夹

今天拉取代码,用vs生成后发现obj文件夹下自动生成的文件被同事提交了,这个本应该加入到ignore的 我就需要把这个文件夹加入到gitignore, 不过已经追踪的文件和文件夹,直接添加到gitignore是无效的 解决方法:找到obj路径,把obj文件夹删除掉.再把obj加到gitignore进行忽略,之后在sourcetree中把gitignore和删除都提交并push. 当然也可以用git命令行,这个网上有很多文章有介绍. 原文地址:https://www.cnblogs.com/day

git 如何忽略已经加入到版本控制的文件

增加 .gitignore 文件,里面添加需要忽略的文件(file_not_wanted): 执行命令 git rm -r --cached .   注意,最后的点.不要省略. 最后重新将所有文件添加到追踪项. git add -A 然后再 commit 即可. 最后重新将所有文件添加到追踪项. git add -A 然后再 commit 即可. 原文地址:https://www.cnblogs.com/yanglang/p/11802470.html

如何使git忽略某些文件或文件夹

为什么要忽略某些文件或文件夹的变化? git作为一款项目文件变更版本管理软件,其主要功能之一就是追踪项目文件夹内各种文件及文件夹的变更情况.但是,在日常使用中,并非项目文件夹下的所有文件及文件夹变更都需要纳入版本控制.例如我们使用自己的开发环境对项目进行开发时产生的项目配置文件.工作区配置文件.因为每个项目参与者的开发环境不尽相同,产生的项目配置文件及工作区配置也会有很大不同.如果将这些文件一并上传到服务器端,不仅无益于git对源代码的版本管理,反而会给其他项目参与者带来困扰.除此之外,还有我们

git重命名文件和文件夹

git mv -f oldfolder newfoldergit add -u newfolder (-u选项会更新已经追踪的文件和文件夹)git commit -m "changed the foldername whaddup" git mv foldername tempname && git mv tempname folderName (在大小写不敏感的系统中,如windows,重命名文件的大小写,使用临时文件名) git mv -n foldername f

Git中三种文件状态及其转换

Git作为一种版本控制解决方案,由于其具有的分布式特性,正被越来越多的用户熟知,一些有名的开源项目,如:Linux kernel,CakePHP,Ruby on Rails等,都在使用Git进行版本管理. 在Git中,文件状态是一个非常重要的概念,不同的状态对应不同的操作.因此,要想熟练掌握Git的用法,需要了解Git的几种文件状态. 为了说明的方便,现在初始化一个项目,也就是将项目所在目录纳入Git的管理之下.假设项目目录为hello_world,初始化之后,在目录下新建README.txt文

使用git删除远程仓库文件

git rm -r -f --cached 文件或文件夹 git commit -m "移除文件或文件夹" git push origin master 注意:要删除的文件或文件夹已处于git版本控制内.