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

最新文章

  1. 译:DOM2中的高级事件处理(转)
  2. SQL Server Reporting Service(SSRS) 第二篇 SSRS数据分组Parent Group
  3. poj 2142 拓展欧几里得
  4. RxJava 的使用入门
  5. 【高德地图开发4】---增加覆盖物setMapTextZIndex
  6. 2014-9-17二班----11 web project
  7. Java程序员25个必备的Eclipse插件
  8. JSON 和 JSONP
  9. Unity问答——请问一下动画状态机怎么判断动画是否播完了?
  10. 在一个apk中调用另外一个apk中的activity
  11. PHP实反向代理-收藏
  12. 1.各个浏览器内核?经常遇到的浏览器兼容性有哪些?解决办法?常用的hack技巧?
  13. 使用three.js实现机器人手臂的运动效果
  14. SQL基础-----DDL
  15. springboot 使用Filter
  16. CentOS7部署Flask+Gunicorn+Nginx+Supervisor
  17. ssl证书过期问题
  18. nginx配置多个域名
  19. 基于Ubuntu系统XAMPP环境安装以及DVWA渗透测试系统安装(详解的不能再详解了)
  20. VSCode 汉化

热门文章

  1. 解决从其他地方拷贝过来的Android项目在本机不能运行(报错)的问题
  2. Failed to start MariaDB database server. (已解决) 之前配过主从
  3. Codeforces Round #455 (Div. 2) D题(花了一个早自习补了昨晚的一道模拟QAQ)
  4. Linux长格式文件属性介绍
  5. pydub音频处理库的使用
  6. 手把手教你设置MongoDB密码
  7. shell 从键盘读取输入时删除输入的字符
  8. Linux设备驱动程序 之 read和write
  9. VMware配置NAT方式下的静态ip
  10. HTTP之Cookie和Session