前言:git是一個非常偉大的工具,這篇博客將從實際工作場景遇到的問題出發,運用git解決實際問題,同時配上圖文,力求作爲一個最好的git參考博客!(每日更新一個情景)
情景一:清除工作區untracked files (2018.6.19)
情景 :源碼的開發過程中,某一個項目git倉庫中經常會出現一些untracked files,這些文件是git倉庫沒有管理的,需要清理掉。使用git status查看有兩個文件沒有被git管理:
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
Test.md
Test2.md
解決方法:
git clean -df //清除當前目錄下所有git倉庫沒有管理的文件或目錄
git clean -df 文件路徑 //指定清除git倉庫中沒有管理的文件或目錄
清除完成後使用 git status查看,兩個untacking file 被刪除了:
On branch master
nothing to commit, working tree clean
情景二:暫存區回退到工作區(2018.6.20)
情景:有的時候我們需要把提交到暫存區的文件回退到工作區中。使用git status查看 Test文件現在存在於暫存區中,我們希望把Test回退到工作區中:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: Test
操作:
git已經智能的提示我們使用git reset HEAD <file>...來讓暫存區文件回退到工作區。
git reset HEAD 文件路徑 //回退指定的文件到工作區
例如: git reset HEAD Test
再次查看git倉庫狀態,文件處於工作區了:
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
Test
情景三:打patch(2018.6.21)
情景:團隊開發中,自己本地修改了一些代碼,還沒有驗證是否正確,此時不能往git服務器去推送。恰好同事也在跟這個問題,他希望在我的基礎上進行追蹤,希望我把我已經修改的代碼給他。這個時候我可以通過打patch的方式實現。
操作:
生成patch:
1>首先將自己的修改的代碼本地進行提交即commit
2>git format-patch <指定的commitId>//注意生成的patch是這個commitId以上的提交
比如有三個commitId: ac4f6d -- bcef67 -- adfc34
執行git format-patch adfc34 就會生成兩個patch
第一個patch是 bcef67 -- adfc34 這兩次提交的差異文件
第二個patch是 ac4f6d -- bcef67 這兩次提交的差異文件
所以打patch就是生成提交之間的差異文件
應用patch:
git am 指定的patch