git 命令 git status add rm commit mv
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的更多相关文章
- git命令——git rm、git mv
git rm git rm命令官方解释 删除的本质 在git中删除一个文件,本质上是从tracked files中移除对这些文件的跟踪.更具体地说,就是将这些文件从staging area移除.然后c ...
- git基本命令--status, add, diff, commit, log
git status: git status命令的输出十分详细,但其用语有些繁琐. 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格 ...
- git命令——git commit
功能 将暂存区中的更改记录到仓库. 加到staging area里面的文件,是表示已经准备好commit的.所以在commit修改之前,务必确定所有修改文件都是staged的.对于unstaged的文 ...
- git命令——git status、git diff
前言 当对项目做了更改时,我们通常需要知道具体改了哪些文件,哪些文件更改了没有暂存,哪些文件改了并且已加入到暂存区等待下次commit.上述任务使用git status都可以帮我们解决.但是想要知道文 ...
- git命令——git add
如何理解git add git add命令本身并不复杂,字面意义上理解是“将一个文件添加到项目中“.但是这种理解有缺陷,有时候可能会出现某个文件同时存在暂存区域 和 非暂存区域(staged and ...
- Git命令git update-index --assume-unchanged,忽略不想提交的文件(忽略跟踪)
场景 我们在自己的私有测试分支上调试项目逻辑,给文件做了一些特定的修改,但是文件不想被git提交,不想执行git status命令时出现在modified列表里:再比如,我们本地的数据库和测试环境的数 ...
- git 命令 git diff 查看 Git 区域文件的具体改动
查看 Git 区域文件的具体改动 git diff git status 只能让我们知道文件在 Git 区域内的改动状态,但如果我们想查看某个文件内具体改了什么(也可以理解为在不同 Git 区域中的差 ...
- git命令--git checkout 之 撤销提交到暂存区的更改
SYJ@WIN-95I6OG3AT1N /D/gitlab/ihr-kafka-produce (master) $ git status [由于工作区文件被修改了,所以显示为红色] On branc ...
- git命令——git log
功能 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的方法是 使用git log 命令. 参数 不带任何参数 $ git log commit ca8 ...
随机推荐
- JavaScript创建函数的三种方式
㈠函数(function) ⑴函数也是一个对象 ⑵函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) ⑶函数中可以保存一些代码在需要的时候调用 ⑷使用typeof检查一个函数对象时,会返 ...
- luogu P2585 [ZJOI2006]三色二叉树
P2585 [ZJOI2006]三色二叉树 题目描述 输入输出格式 输入格式: 输入文件名:TRO.IN 输入文件仅有一行,不超过10000个字符,表示一个二叉树序列. 输出格式: 输出文件名:TRO ...
- Linux命令行学习日志-ps ax
当我们需要查询某个运行中的进程的时候,这个命令就显得很有用了,可以查看当前进程的PID和状态(S代表睡眠,SW代表睡眠和等待,R表示运行中) ps ax //查看当前运行中的进程
- array_column()用法
<?php $arr = [ [ 'id' => 1, 'name' => 'a' ],[ 'id' => 2, 'name' => 'b', ], [ 'id' =&g ...
- 内部排序总结之----插入类排序(插入和Shell)
一.直接插入排序 直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序. 第一趟比较前两个数,然后把第二 ...
- Java虚拟机与平台无关性
概述 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. --<深入理解Java虚拟机>(从这里可以看到,字节码是一种文件格式) 我们都知道计算机只 ...
- Centos7 yum安装mysql(完整版)
1.下载mysql 地址:https://dev.mysql.com/downloads/repo/yum/.选择对应版本下载.
- vue 无法覆盖vant的UI组件的样式
vue 无法覆盖vant的UI组件的样式 有时候UI组件提供的默认的样式不能满足项目的需要,就需要我们对它的样式进行修改,但是发现加了scoped后修改的样式不起作用. 解决方法: 使用深度选择器,将 ...
- arcgis 面或线要素类上的搜索游标
import arcpy infc = arcpy.GetParameterAsText(0) # Identify the geometry field # desc = arcpy.Describ ...
- springboot发送邮件,以及携带邮件附件简单使用
可以通过springboot官方文档中Sending Email,找到类似如下java mail的使用文档 https://docs.spring.io/spring/docs/5.1.9.RELEA ...