1.查看 git 仓库文件改动状态

Git 仓库内文件改动有 4 种状态,除了 Unmodified 状态的文件因为并未改动默认没有状态不做显示之外,其他文件改动状态都可以通过 git status 来查看

查看 Git 记录的状态 常用命令,

查看git仓库状态

git status

拿到一个git仓库,进入仓库,第一执行这个命令查看

[root@ci-node1 ~]# cd /data/git_test/
[root@ci-node1 git_test]#
[root@ci-node1 git_test]# git status
On branch master // 在master分支上 默认在master分支上 Initial commit // 初始化commit nothing to commit (create/copy files and use "git add" to track)
// 现在是空仓库 你可以创建,拷贝文件然后可以使用git add 命令

在工作区创建 a、b、c 三个文件。

[root@ci-node1 git_test]# touch a b c
[root@ci-node1 git_test]# ll
total
-rw-r--r-- root root Aug : a
-rw-r--r-- root root Aug : b
-rw-r--r-- root root Aug : c

看 Git 记录的状态,从下面结果可知,新增的 3 个文件在 Git 空间里都属于Untracked 文件,存放在工作区内

[root@ci-node1 git_test]# git status
On branch master Initial commit Untracked files:
(use "git add <file>..." to include in what will be committed) a
b
c nothing added to commit but untracked files present (use "git add" to track)

Git 仓库目录下的文件改动操作默认都发生在 Git 工作区内,Git 并不会主动管理。如果希望 Git 能够管理这些变动,你需要主动通知 Git。共有 3 种通知 Git 的命令(git add/rm/mv)

2. 将工作区文件改动添加到暂存区 git add

git add是第一种通知Git命令,这个命令用于告诉Git我们新增了文件改动,被git add命令操作过的文件(改动)便会处于 Git 暂存区

[root@ci-node1 git_test]# git add a // 添加单文件改动到暂存区
[root@ci-node1 git_test]# git status // 查看此时的文件状态,a 文件已在暂存区中了
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: a Untracked files:
(use "git add <file>..." to include in what will be committed) b
c

git add 把一个文件从工作目录移动到暂存区,从Untracked 状态到Staged状态

暂存区是在.git目录下index文件,初始化仓库时候index文件不存在,当使用git add 把文件移动到暂存区这个index文件就生成了

[root@ci-node1 git_test]# cd .git/
[root@ci-node1 .git]# ll
total
drwxr-xr-x root root Aug : branches
-rw-r--r-- root root Aug : config
-rw-r--r-- root root Aug : description
-rw-r--r-- root root Aug : HEAD
drwxr-xr-x root root Aug : hooks
-rw-r--r-- root root Aug : index // index文件生成
drwxr-xr-x root root Aug : info
drwxr-xr-x root root Aug : objects
drwxr-xr-x root root Aug : refs

我们可以使用 git add . git add * 可以一次将多个文件改动添加到暂存区

把工作目录所有文件都提交到暂存区

[root@ci-node1 git_test]# git add .

输出结果

// 查看此时的文件状态,3 个文件都已在暂存区中了

[root@ci-node1 git_test]# git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: a
new file: b
new file: c

3.将暂存区文件改动回退 git rm

Git rm 命令用于告诉 Git 我们想把之前用 git add 添加的文件改动从 Git 暂存区里拿出去,不需要 Git 记录了。拿出去有两种拿法,一种是从暂存区退回到工作区,另一种是直接丢弃文件改动。让我们试着将 c 退回到工作区,b 直接丢弃。

git rm 将文件从暂存区移回到工作目录,使状态Staged变成unstaged

git rm --cached

git rm -f

git rm --cached

//将 c 的改动从暂存区工作区

//将 c 的改动从暂存区工作区
[root@ci-node1 git_test]# git rm --cached c
rm 'c'
//查看 c 是否已经移回工作区
[root@ci-node1 git_test]# git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: a
new file: b Untracked files:
(use "git add <file>..." to include in what will be committed) c

git rm -f

//将 b 文件直接从 git 空间里删除,也是就是从暂存区和工作区都删除。

//将 b 文件直接从 git 空间里删除,也是就是从暂存区和工作区都删除。
[root@ci-node1 git_test]# git rm -f b
rm 'b' //查看状态
[root@ci-node1 git_test]# git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: a Untracked files:
(use "git add <file>..." to include in what will be committed) c //当前目录中已经没有文件 b
[root@ci-node1 git_test]# ll
total
-rw-r--r-- root root Aug : a
-rw-r--r-- root root Aug : c

4.提交 git commit

把文件从暂存区提交到本地仓库

当我们在仓库工作区下完成了文件增删改操作之后,并且使用 git add 将文件改动记录在暂存区之后,便可以开始将其提交到 Git 本地仓库。

将暂存区内容提交 git commit –m “”   

后面的“”是描述,描述这次提交内容是什么

[root@ci-node1 git_test]# git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: a

//将暂存区内的文件 a.txt 提交到本地仓库

//将暂存区内的文件 a.txt 提交到本地仓库
root@ci-node1 git_test]# git commit -m "commit a"
[master (root-commit) 73d7230] commit a
file changed, insertions(+), deletions(-)
create mode a // 查看工作区状态,现在工作区是干净的工作区,可以理解为工作目录、
//缓存区、本地仓库三个区域都存储内存是一样的,git三个区域缓存区、工作目录、本地仓库都保存着a文件,a文件在三个区域是一致的
[root@ci-node1 git_test]# git status
On branch master
nothing to commit, working tree clean // a文件被提交到本地仓库了,a文件才真正被git管理

提交到本地仓库的文件在三个区域 工作目录,暂存区,本地仓库  分别存储一份,副本

5.将暂存区文件移动位置/重命名 git mv

Git mv 命令用于告诉 Git 我们想把之前用 git add 添加的文件直接在暂存区里重新命名或移动到新位置。

git mv 对缓存区和工作目录的文件命名和移动到新位置

//将 a 文件改名为 a.txt

//将 a 文件改名为 a.txt
[root@ci-node1 git_test]# git mv a a.txt
[root@ci-node1 git_test]# git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) renamed: a -> a.txt // 直接告诉状态renamed [root@ci-node1 git_test]# ll
total
-rw-r--r-- root root Aug : a.txt

再提交

[root@ci-node1 git_test]# git commit -m "rename a to a.txt"
[master cc8bd80] rename a to a.txt
file changed, insertions(+), deletions(-)
rename a => a.txt (%) [root@ci-node1 git_test]# git status
On branch master
nothing to commit, working tree clean

git 命令 git status add rm commit mv的更多相关文章

  1. git命令——git rm、git mv

    git rm git rm命令官方解释 删除的本质 在git中删除一个文件,本质上是从tracked files中移除对这些文件的跟踪.更具体地说,就是将这些文件从staging area移除.然后c ...

  2. git基本命令--status, add, diff, commit, log

    git status: git status命令的输出十分详细,但其用语有些繁琐. 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格 ...

  3. git命令——git commit

    功能 将暂存区中的更改记录到仓库. 加到staging area里面的文件,是表示已经准备好commit的.所以在commit修改之前,务必确定所有修改文件都是staged的.对于unstaged的文 ...

  4. git命令——git status、git diff

    前言 当对项目做了更改时,我们通常需要知道具体改了哪些文件,哪些文件更改了没有暂存,哪些文件改了并且已加入到暂存区等待下次commit.上述任务使用git status都可以帮我们解决.但是想要知道文 ...

  5. git命令——git add

    如何理解git add git add命令本身并不复杂,字面意义上理解是“将一个文件添加到项目中“.但是这种理解有缺陷,有时候可能会出现某个文件同时存在暂存区域 和 非暂存区域(staged and ...

  6. Git命令git update-index --assume-unchanged,忽略不想提交的文件(忽略跟踪)

    场景 我们在自己的私有测试分支上调试项目逻辑,给文件做了一些特定的修改,但是文件不想被git提交,不想执行git status命令时出现在modified列表里:再比如,我们本地的数据库和测试环境的数 ...

  7. git 命令 git diff 查看 Git 区域文件的具体改动

    查看 Git 区域文件的具体改动 git diff git status 只能让我们知道文件在 Git 区域内的改动状态,但如果我们想查看某个文件内具体改了什么(也可以理解为在不同 Git 区域中的差 ...

  8. git命令--git checkout 之 撤销提交到暂存区的更改

    SYJ@WIN-95I6OG3AT1N /D/gitlab/ihr-kafka-produce (master) $ git status [由于工作区文件被修改了,所以显示为红色] On branc ...

  9. git命令——git log

    功能 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的方法是 使用git log 命令. 参数 不带任何参数 $ git log commit ca8 ...

随机推荐

  1. hdu 6141 I am your Father!

    题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6141 (2017 Multi-University Training Contest - Team ...

  2. ec20 queclocator V1. 0 test

    AT+QICSGP=1,1,"UNIWAP","","",1 AT+QIACT=1 AT+QLOCCFG="contextid&q ...

  3. Java中properties可以读取,但是里面的数据读取不到

    今天配置一个项目jdbc.properties这个文件里面的键值总是读取不到,刚开始以为是文件没有读取到,但是测试是读取到的,再排查键值是不是写错了, 后来发现键值是对的,这就很奇怪了 比较是没有任何 ...

  4. mac使用php-version切换PHP版本

    在开发过程中,有时候我们的程序对某个php版本有着极为重要的限制,特别是大型项目. 因此,我们就需要切换多个php版本来满足我们的需求. 我们使用php-version来达到这个目的. 首先我们先使用 ...

  5. js中的时间显示

    var approveTime; approveTime=new Date(da[i].approveTime).toLocaleDateString(); 结果是 xxxx年xx月xx日

  6. Spring Cloud Eureka(一): 开篇说明及目录汇总

    开篇简述 基于Spring Boot 和 Spring Cloud 的微服务应用,本人在工作中已经使用两年有余了,伴随着个人学习计划的实施,希望借助博文的方式,将工作中使用到的技术点体系化的总结出来, ...

  7. in和exists的区别

    表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询 ...

  8. 使用 suspend 和 resume 暂停和恢复线程

    suspend 和 resume 的使用 在 Thread 类中有这样两个方法:suspend 和 resume,这两个方法是成对出现的. suspend() 方法的作用是将一个线程挂起(暂停), r ...

  9. Consider defining a bean of type `xxx` in your configuration问题解决

    在使用SpringBoot装配mybatis时出现了异常 *************************** APPLICATION FAILED TO START *************** ...

  10. 删除Linux系统多余的引导

    问题: 电脑中安装了多个Linux系统,需要删除不用的Linux系统的引导 解决方法: open terminal: su -     切换root用户 cd /boot/ ls ... grub  ...