检查 git 当前文件版本以及如何处理已删除的文件

Check git current file version and how to handle removed files

我有一个 git 存储库,其日志历史记录如下所示。

../mypapers/Doc_thesis$ git log 
commit 5bbb3681e1630a423f143a2e97350f463669c214
Author: ShijieXu <shijiexu@yahoo.com>
Date:   Wed Nov 16 14:10:16 2016 -0400

    Revist GraphJIT

commit e8ccd771208c5d328936422d60dcae2d3850e3a1
Author: ShijieXu <shijiexu@yahoo.com>
Date:   Tue Nov 8 15:04:22 2016 -0400

    version

commit c8f2313c324cd0a07e67eb07f060d319bb4faa69
Author: ShijieXu <shijiexu@yahoo.com>
Date:   Wed Apr 13 11:03:53 2016 -0300

    another chapter

我的问题是:

  1. 如何查看文件的当前版本?比如我一般都是用git checkout c8f2313c324cd0a07e67eb07f060d319bb4faa69来切换文件版本,那么在多次修改后,有什么办法可以查看当前文件是哪个版本?
  2. 更改提交号时如何处理一些删除的文件。例如,提交 e8ccd771208c5d328936422d60dcae2d3850e3a1 包含删除多个文件。在签出此提交然后返回 5bbb3681e1630a423f143a2e97350f463669c214 后,git status 将显示一些新文件,这些文件已全部删除。

    git status 
    On branch final_thesis
    Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
    new file:   #introduction.tex#
    new file:   UNBThesis2-1101.tex
    new file:   UNBThesis2_0430.pdf
    new file:   UNBThesis2_bak.tex
    

谢谢

  1. 这取决于您如何检出旧版本的文件:

    • git checkout SHA1:您的索引处于分离的 HEAD 模式(您不再处于分支中)。 git diff yourBranch 应该向您展示分离的 HEAD 和分支之间的区别。
    • git checkout SHA1 -- afile: 你只改变了一个文件的内容
      git diff 在那种情况下就足够了。
  2. 如果您没有任何正在进行的工作,您可以(硬)重置为原始 SHA1:

    git reset --hard original_SHA1 
    

如果reset leaves untracked files behind,加一个git clean -fdx