Git本地操作2

移除文件

  • 从Git仓库和本地目录中删除文件(git rm)

gitrm.png
命令执行完成后git仓库中yy.txt文件被删除,同时本地目录中的也被删除,然后在执行git status命令查看状态:
rmwaitcommit.png
下次执行提交命令时该文件就不在纳入版本控制了
注意:如果要被删除的文件已经缓存但为为未提交时,如果此时执行git rm会失败:
删除已暂存未提交文件.png
此时可以加 -f 参数强行删除,这也就意味着本次未提交缓存丢失,Git无法在恢复这次未提交缓存:
强制删除已缓存未提交的文件.png
如果未执行git rm命令,直接从目录中删除文件,那么Git仓库中此文件任然存在:
直接从工作目录删除.png
此时在执行git rm命令从git仓库中移除:
直接删除后rm.png

  • 从Git仓库中删除,但本地目录中依然保留文件
    例:从仓库中删除Test.txt,但是本地目录中保留
    gitrmcached.png
    此时Test.txt由之前的已跟踪变成未跟踪文件

文件重命名

如果想要重命名Git仓库中某个文件,需要进行如下操作:
A)将原文件另存为
B)git rm 原文件
C)git add 另存为的文件
Git提供了git mv SourceFile DestFile这条命令,一次性完成上述三条指令,例:
gitmov.png

查看提交历史

《pro git》中给了一个github仓库的url:git://github.com/schacon/simplegit-progit.git,我以这个仓 库为例学习如何查看Git仓库的提交历史,首先先将项目克隆下来,然后使用git log命令查看提交历史:
gitlog.png
git log命令会列出每次提交的校验和,作者以及电子邮件地址,提交时间,提交说明

加上-p参数,则可以查看每次提交时的变化,-n参数则可以查看最近n次的提交记录:
例如:查看最近一次的提交记录以及提交时的变化差异
gitlogp1.png

现在来看一下差异输出结果:
一般+++表示目标文件,---表示源文件,+表示该行内容只出现在目标文件中,-表示该行内容只出现原文件中,既无"+"也无"-"的行
是表示原文件和目标文件中都存在,每个差异小结以@@开头,以@@结尾

--- a/Rakefile表示上次提交的文件(源文件) ,+++ b/Rakefile本次提交的文件(目标文件),两个文件有差异
@@ -5,7 +5,7 @@ 则表示原文件中从第5行开始向下的7行与目标文件中的第五行开始向下7行有差异,并且还列出
了局部差异:
require 'rake/gempackagetask'
spec = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = "simplegit"
- s.version = "0.1.0"
+ s.version = "0.1.1"
s.author = "Scott Chacon"
s.email = "schacon@gmail.com"
s.summary = "A simple gem for using Git in Ruby code."
可以看出原文件中为s.version = "0.1.0",本次提交后变为s.version = "0.1.1"

git log命令的更多详细参数,可以参考《pro git》https://gitee.com/progit/2-Git-基础.html#2.3-查看提交历史

撤销操作

  • 取消被暂存的文件

    git reset 文件名称
    

    例:修改一个文件,然后暂存,然后在取消对该文件的暂存
    gitrest.png

  • 撤销对文件的修改

    git checkout -- 文件名称
    

    我们先修改工作目录中的某个文件,然后将其添加到暂存区,然后执行git checkout命令:
    gitcheckout.png

    执行撤销后本地文件中的内容被上次提交过的文件快照覆盖,同时该文件暂存区中的内容也和快照一致

原文地址:https://www.cnblogs.com/UnknowCodeMaker/p/11194157.html