2016-11-16 67 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

相關問題