可參考視頻資料:b站搜索"git使用",up主"不咲貓"(音:xiao mao)
0.建立git目錄(倉庫/代碼庫)
git init (在本機電腦上新建的某個文件夾下執行此句,表示那個文件夾可以被git管理)
執行此句之後可以用ls -la看到多出了一個.git文件
1.創建版本
git add . (git add <filename>)
回車,然後再輸入:
git commit -m "提交說明,每次的說明內容可以一樣"
2.查看版本記錄
git log (git reflog)(有的時候一屏顯示不完,會用冒號開頭顯示,按上下鍵滾動,按q退出)
git log --pretty=oneline (以簡短形式顯示)
3.版本回退
git reset --hard HEAD^^^(表示回退到當前版本的前三個版本)
git reset --hard HEAD^^^^(表示回退到當前版本的前四個版本)
git reset --hard HEAD~100(表示回退到當前版本的前100個版本)
gir reset --hard 725b257ef (725b257ef爲想要回退到的那個版本的版本號的前幾位,版本號可以用git log 或git reflog查看)
4.查看狀態(git status)
git status ,查看暫存區的更新狀態。如果某次,新加了一個文件code3.txt,又更改了一個文件code2.txt.當我們執行git add code2.txt code3.txt之後,執行git status,變回顯示出:
然後git commit -m "xxxx" 就可以將 code2.txt和code3.txt提交。
5.工作區和暫存區
工作區是指編輯代碼的目錄,即當時git init執行的那個目錄。
暫存區是指git管理的目錄,在本地目錄和遠程目錄的中間地帶。git add命令可以使工作區的文件提交到暫存區,git commit命令可以使得暫存區的文件創建一個版本號。
git只會對提交暫存區的修改創建版本。(即如果對code3.txt的內容還未做git add的話,那麼cat code3.txt之後的內容實際和工作區的內容是不一樣的)
6.撤銷修改
git checkout --<filename>丟棄工作區的改動。
如果code3.txt已經通過git add添加到了暫存區,這時候想要撤銷的話,就要git reset HEAD code3.txt (即撤銷暫存區的修改),然後執行git status就發現又可以對code3.txt進行git checkout操作了.。
場景1:當你改亂了工作區的某個文件內容,想直接丟棄工作區的修改時,用git checkout --filename
場景2:不但改亂了工作區的內容,還添加到了暫存區,想丟棄修改。此時先要git reset HEAD filename,就回到場景1,按場景1操作。
場景3:已經提交了不適合的修改到版本庫時,想要撤銷修改時候,則要用第3條所示的版本回退。
7.對比文件差異
(1)對比工作區的文件和版本中的文件不同:git diff HEAD -- code3.txt
顯示的結果中,沒有加號或減號的表示兩個文件中都有的內容。 -減號後的內容,表示HEAD中的內容,加號+代表工作區中的內容,+xxxxx表示工作區的code3.txt比HEAD版本中多處的一行內容是xxxx;
(2)對比兩個版本之間某個文件的不同
如要對比HEAD和HEAD^的code3.txt的不同。輸入git diff HEAD HEAD^ -- code3.txt ,在結果中,沒有加號或減號表示兩個文件都有的內容。-代表HEAD中的內容,+代表HEAD^中的內容。如下圖,其結果的意思是,HEAD版本中的三行紅色內容與HEAD^版本的一行綠色內容差異,即HEAD^版本的一行加號綠色內容被改爲了HEAD版本的三行減號紅色內容
如把HEAD和HEAD^位置對調,即git diff HEAD^ HEAD -- code3.txt,則結果爲下圖,-減號代表HEAD^的內容,+加號代表HEAD的內容。顯示的內容雖然對調了,但內涵卻與上圖是一致的。
8.刪除文件
rm code3.txt
刪除或修改文件都是對工作區的內容做改動,因此都可以用git checkout撤銷;
如果確實要將它從工作區刪除,則可以把刪除的操作提交,即可以git add code3.txt.或git rm code3.txt.
若想將刪除提交,則git commit -m "刪除"
因爲刪除文件也是對工作區的改動,因此:
場景1:當你改亂了工作區的某個文件內容,想直接丟棄工作區的修改時,用git checkout --filename
場景2:不但改亂了工作區的內容,還添加到了暫存區,想丟棄修改。此時先要git reset HEAD filename,就回到場景1,按場景1操作。
場景3:已經提交了不適合的修改到版本庫時,想要撤銷修改時候,則要用第3條所示的版本回退。