git mv

行为:

  1.创建一个和之前文件内容一样的文件,文件名为新的文件名

  2.将原来的文件删除

  3.将删除的文件添加到暂存区

  4.将新建的文件添加到暂存区

$ git mv a a1
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
  renamed: a -> a1

提交:

  直接 git commit -m ''

$ git commit -m 'rename a to a1'
[master 863356d] rename a to a1
  1 file changed, 0 insertions(+), 0 deletions(-)
  rename a => a1 (100%)
$ git status
  On branch master
  nothing to commit, working directory clean

恢复:

  1. 恢复暂存区(git reset HEAD oldName)

  2. 将新添加的文件从暂存区移除(git reset HEAD newName)

  3. 将原来的文件从暂存区恢复到工作区(git checout -- oldName)

  3. 从工作区删除新添加的这个文件(rm newName)

$ git reset HEAD a
Unstaged changes after reset:
D a $ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) new file: a1 Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) deleted: a $ git reset HEAD a1
Unstaged changes after reset:
D a $ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) deleted: a Untracked files:
(use "git add <file>..." to include in what will be committed) a1 no changes added to commit (use "git add" and/or "git commit -a") $ git checkout -- a $ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed) a1 nothing added to commit but untracked files present (use "git add" to track) $ rm a1 $ git status
On branch master
nothing to commit, working directory clean

直接调用系统的mv

行为:

  只是重命名了一个文件

$ mv a a1

$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) deleted: a Untracked files:
(use "git add <file>..." to include in what will be committed) a1 no changes added to commit (use "git add" and/or "git commit -a")

提交:

  1.把新文件和旧文件加入暂存区

  2.提交暂存区的改动

$ git add a a1

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) renamed: a -> a1 $ git commit -m 'rename a to a1'
[master 8b02e6a] rename a to a1
file changed, insertions(+), deletions(-)
rename a => a1 (%) $ git status
On branch master
nothing to commit, working directory clean

恢复:

  1.将旧文件恢复到工作区,git checout -- oldName

  2.将新文件删除, rm newName

$ git checkout -- a
$ rm a1 $ git status
On branch master
nothing to commit, working directory clean

git mv与直接mv的区别的更多相关文章

  1. git 学习笔记5--rm & mv,undo

    rm 删除文件 rm <file> #Unix删除文件 git rm <file> # git删除文件 git rm -f <file> # git强制删除文件 g ...

  2. git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学

    小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone  应指定版本,它复制的这个版本的全部历史信息: 各个分支  git init 数据库 ...

  3. gitLab的使用 和 git 、 github、gitlab的区别

    一.git . github.gitlab的区别  (百度相关内容得到的理解) ​ ​ 二.git最基本作用:版本控制 ​ 三.有集成了git的GIT安装包 github和gitlab都使用git该版 ...

  4. 关于git和SVN的介绍和区别

    主要对git,svn进行一个简单的介绍. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜 ...

  5. 浅谈Linux下mv和cp命令的区别

    1.功能上的区别 mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.从inode角度来区分 mv:会 ...

  6. 对比git rm和rm的使用区别

    在这里说一下git rm和rm的区别,虽然觉得这个问题有点肤浅,但对于刚接触git不久的朋友来说还是有必要的. 用 git rm 来删除文件,同时还会将这个删除操作记录下来:用 rm 来删除文件,仅仅 ...

  7. git和其他版本控制系统的区别

    所有除了Git以外的版本控制系统都使用增量存储方式来保存不同版本,而Git则在每一个commit时,保存一个整个文件的content copy,除非那个文件没有做过改动.Git和其他版本系统的主要区别 ...

  8. git commit -m与-am的区别

    前面的话 使用git commit -am是不是就可以完全不使用git add命令呢?不是 理论 要了解git commit -m与git commit -am的区别,首先要明白它们的定义 字面解释的 ...

  9. Git分支merge和rebase的区别

    Git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 原理 如下: 假设你现在基于远程分支&quo ...

随机推荐

  1. php 模板框架之smarty 的下载和安装

    Smarty 官网: http://www.smarty.net/ Smarty 下载: https://github.com/smarty-php/smarty/releases/tag/v3.1. ...

  2. sqlServer的主键只能自增不能手动增加

    1. 2.找到相应的表,找到表设计.

  3. qtcreator 中文乱码

    qt输入法不能用,ui中不能显示中文,开发板不能显示中文,这几个一直困扰这我,网上查找资料,在代码中添加各种支持,都没有解决问题.今天刚好解决了,记录于此. 参考链接 http://blog.163. ...

  4. 输出JS代码中的变量内容

    一. 输出JS代码中的变量内容 1. 可以直接以提示框的形式输出 alert("输出的内容"); 2. 可以输出到网页的某个位置 a. 在显示输出的位置放一个标签 <a id ...

  5. Angular入门篇高速开发导航网

    简单介绍 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式.这样的方式能够让你扩展HTML的语法.以弥补在构建动态WEB应用时静态文本的不足.从而在web应用程 ...

  6. form 回车键(ENTER)

    <form class="clb_yyxx_nr" name="appointment_content" action="" onsu ...

  7. hdu 1232:畅通工程(数据结构,树,并查集)

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  8. python3----练习题(....)

    # 保存文件(文本,图片,视频...) 1 def save_file(): url = 'http://css.8684.cn/citys/images/line/45.jpg' root = r' ...

  9. ios应用, 设置不自己主动备份到iCloud

    原创文章,转载请注明出处 ios项目,假设有内置下载或者程序动态生成文件的话,就要注意所下载或生成的文件,要不要自己主动备份到iCloud 假设没有合适的理由就自己主动上传大文件的话,可能在不能通过应 ...

  10. 第二篇:CUDA 并行编程简介

    前言 并行就是让计算中相同或不同阶段的各个处理同时进行. 目前有很多种实现并行的手段,如多核处理器,分布式系统等,而本专题的文章将主要介绍使用 GPU 实现并行的方法. 参考本专题文章前请务必搭建好 ...