用慣了tfs,剛一接觸git感覺很不順手,特別是一些很基本的操作,用起來都怪怪的(可能是不習慣命令行的原因吧)。
下面把查看文件歷史的用例小結一下。
查看某個文件的修改歷史
在git中查看歷史的命令主要是git log,要查看某個文件的修改歷史可以這樣:
$ git log -- begin.txt
可以添加不同的選項讓輸出的內容或格式有所不同。
$ git log -p -- begin.txt
-p 選項可以輸出每次提交中的diff, 但個人感覺會把輸出搞得很長、很亂,不容易找到重點。
個人比較喜歡的方式是:
$ git log --pretty=oneline -- filename
在log 命令中加入 --pretty=oneline 選項會讓結果看起來清爽一些,但是只能看到comments,看不到提交的用戶和日期。
這也能夠讓我們集中注意力快速找到關注的提交記錄。
然后使用 git show命令查看完整的提交內容。
當然,除了命令行工具您也可以使用GUI程序查看文件的歷史記錄:
gitk filename
查看歷史中的文件內容
當我們使用 git log 命令找到了某次提交,並且想看看這次提交時文件的完整內容。
這時,我們需要使用 git show 命令:
$ git show xxxxx:filename
也許此時你並不是看看就算了,你想要使用這個版本的文件更新工作區中的文件。
直接從 git show 命令的輸出中拷貝內容是個不錯的選擇。
但也可以通過組合使用不同的命令來實現:
$ git checkout <commit> --filename
$ git reset filename
此時只有工作區被更新了(你也可以把他當做是一次回滾操作)。
比較歷史中不同的文件版本
我們經常使用版本控制工具來對比提交歷史中的兩個文件,下面看看用 git 怎么做:
$ git diff xxxx1 xxxx2 -- filename