2016-11-16 66 views
1

我有一个git存储库,其日志历史记录如下所示。检查git当前文件版本以及如何处理删除的文件

../mypapers/Doc_thesis$ git log 
commit 5bbb3681e1630a423f143a2e97350f463669c214 
Author: ShijieXu <[email protected]> 
Date: Wed Nov 16 14:10:16 2016 -0400 

    Revist GraphJIT 

commit e8ccd771208c5d328936422d60dcae2d3850e3a1 
Author: ShijieXu <[email protected]> 
Date: Tue Nov 8 15:04:22 2016 -0400 

    version 

commit c8f2313c324cd0a07e67eb07f060d319bb4faa69 
Author: ShijieXu <[email protected]> 
Date: Wed Apr 13 11:03:53 2016 -0300 

    another chapter 

我的问题是:

  1. 如何检查文件的当前版本?例如,我通常使用git checkout c8f2313c324cd0a07e67eb07f060d319bb4faa69来切换文件版本,所以经过几次版本更改后,有什么方法可以检查当前文件是哪个版本?
  2. 如何在更改提交编号时处理一些已删除的文件。例如,提交e8ccd771208c5d328936422d60dcae2d3850e3a1包含删除多个文件。在签出此提交后,然后回到5bbb3681e1630a423f143a2e97350f463669c214git 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 
    

感谢

+0

如果你在Linux上,安装'gitg' - 它会给你一个可视化的表示,我认为这会对你有很大的帮助。 – bcmcfc

+0

您真的对*文件*版本特别感兴趣,或者您更关心* commit *版本吗?你的'git checkout '的例子选择了一个特定的* commit *,它代表了潜在的许多文件。 – torek

回答

2
  1. 这取决于你如何结帐旧版本的文件:

    • git checkout SHA1:你的指数是在一个分离的头模式(也就是你没有在abranch更长)。 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

相关问题