Git常用命令diff和mv

Git常用命令diff和mv

1、diff

shell 复制代码
# 查看工作区和暂存区所有文件的对比
# 该命令可以显示尚未添加到stage的文件的变更
$ git diff
shell 复制代码
# 查看工作区和暂存区单个文件的对比
$ git diff file
shell 复制代码
# 显示暂存区和上一个commit的差异
# 查看暂存区与指定提交版本的不同,版本可缺省为HEAD
$ git diff --cached commit
shell 复制代码
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 比较与上一个版本的差异
$ git diff HEAD^
shell 复制代码
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
shell 复制代码
# 显示添加到stage的文件与当前最新版本之间的差异
# 该命令可以显示添加到stage的文件与当前最新版本之间的差异
$ git diff --staged
shell 复制代码
# 查看工作区和暂存区所有文件的对比,并显示出所有有差异的文件列表
# 注意
# 1.你修改了某个文件,但是没有提交到暂存区,这时候会有对比的内容,一旦提交到暂存区,就不会有对比的内容(因为暂存区已经更新)
# 2.如果你新建了一个文件,但是没有提交到暂存区,这时候diff是没有结果的
$ git diff --stat
shell 复制代码
# 查看暂存区与上次提交到本地仓库的快照(即最新提交到本地仓库的快照)的对比
$ git diff --cached/--staged
shell 复制代码
# 查看工作区与上次提交到本地仓库的快照(即最新提交到本地仓库的快照)的对比
$ git diff branchname
shell 复制代码
# 查看两个本地分支中某一个文件的对比
$ git diff branchname..branchname filename
shell 复制代码
# 查看两个本地分支所有的对比
# 该命令可以显示两个分支之间的差异
$ git diff branchname..branchname
shell 复制代码
# 查看远程分支和远程分支的对比
$ git diff origin/branchname..origin/branchname
shell 复制代码
# 查看远程分支和本地分支的对比
$ git diff origin/branchname..branchname
# 比较远程分支master上有本地分支master上没有的
$ git diff origin/master..master                            
shell 复制代码
# 只显示差异的文件,不显示具体内容
$ git diff origin/master..master --stat
shell 复制代码
# 查看工作区与指定提交版本的不同
$ git diff commit

# 查看两个commit的对比,其中任一可缺省为HEAD
$ git diff commit1..commit2 

# 查看2个不同分支指定提交版本的不同,其中任一可缺省为HEAD
$ git diff commit...commit
# 该命令相当于
$ git diff $(git-merge-base A B) B
shell 复制代码
# 比较与HEAD版本lib目录的差异
git diff HEAD -- ./lib

2、mv

修改暂存区文件。

shell 复制代码
# 修改文件名字,并且将这个改名放入暂存区
$ git mv old_file_name new_file_name
shell 复制代码
# 文件必须纳入版本控制才可以执行git mv
$ touch old_file.txt

$ git mv old_file.txt new_file.txt
fatal: not under version control, source=old_file.txt, destination=new_file.txt
shell 复制代码
# git add之后修改
$ ls
a.txt  b.txt  c.txt  d.txt  f.txt  new.txt  test.txt

$ touch old_file.txt

$ git add old_file.txt

$ git mv old_file.txt new_file.txt

$ git status
On branch branch_a
Your branch is up-to-date with 'origin/branch_a'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   new_file.txt


$ ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt  new.txt  new_file.txt

$ git commit -m "rename file"
[branch_a b54a03a] rename file
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 new_file.txt

$ git status
On branch branch_a
Your branch is ahead of 'origin/branch_a' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
shell 复制代码
# git commit之后修改
$ ls
a.txt  b.txt  c.txt  d.txt  f.txt  new.txt  test.txt

$ touch old_file.txt

$ git add old_file.txt

$ git commit -m "add old_file.txt"
[develop 360e9c5] add old_file.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 old_file.txt

$ git mv old_file.txt new_file.txt

# 是执行完git add命令之后的结果
$ git status
On branch develop
Your branch is ahead of 'origin/develop' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        renamed:    old_file.txt -> new_file.txt
        
$ ls
a.txt  b.txt  c.txt  d.txt  f.txt  new.txt  new_file.txt  test.txt

$ git commit -m "rename file"
[develop a0ab796] rename file
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename old_file.txt => new_file.txt (100%)
相关推荐
满天星83035779 小时前
【Git】原理及使用(七) (多人协作 [下])
git
郡杰15 小时前
Git基础与开发平台搭建
git·后端
钟智强17 小时前
我警告了 329 天
git·php·wordpress·webshell
乐观的冷风19 小时前
我们需要将文件添加到暂存区才能提交,而移除文件后是无法添加到暂存区的,那么怎么移除一个文件让GIT不再将其纳入版本控制呢?上图中GIT已经给出了说明:
git
tjl521314_2120 小时前
Git SSH Host Key Verification Failed 问题排查与解决
运维·git·ssh
嘶哈哈哈1 天前
[特殊字符] Git 协作指南
git
say_fall1 天前
【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚
大数据·linux·服务器·git·学习·elasticsearch
江畔柳前堤2 天前
第13章:docker生产环境部署实战
运维·git·docker·容器·代码复审
GuHenryCheng2 天前
【ESP32】ESP-IDF开发环境搭建(cursor)
git·stm32·单片机·学习
kaka。。2 天前
GIT安装+代码推送
git