1.版本回退 ?git reset--hard HEAD^ / ?git reset--hard commit_id
HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本
2.git add . git commit
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實際上就是把暫存區(qū)的所有內容提交到當前分支。
你可以簡單理解為,git add .需要提交的文件修改通通放到暫存區(qū),然后,git commit -m "提交的內容" 一次性提交暫存區(qū)的所有修改。 .
每次修改,如果不add到暫存區(qū),那就不會加入到commit中。
3.git checkout --file? git reset HEAD file
.命令git checkout --readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:
一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
總之,就是讓這個文件回到最近一次git commit或git add時的狀態(tài)。
場景1:當你改亂了工作區(qū)某個文件的內容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工作區(qū)某個文件的內容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,git reset--hard commit_id,不過前提是沒有推送到遠程庫。
4.git rm file
命令git rm用于刪除一個文件,如果一個文件已經(jīng)被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交后你修改的內容。
一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕松地把誤刪的文件恢復到最新版本:
$git checkout -- test.txt
git checkout其實是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”。
5.git remote add origin git@server-name:path/repo-name.git
要關聯(lián)一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;
關聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
6.創(chuàng)建與合并分支
查看分支:git branch
創(chuàng)建分支:git branch
切換分支:git checkout
創(chuàng)建+切換分支:git checkout -b
合并某分支到當前分支:git merge
刪除分支:git branch -d
git merge出現(xiàn)沖突后,git status查看沖突的文件,手動解決沖突后,git add . git commit操作
7. git stash緩存當前修改,git stash list查看緩存列表 git stash pop恢復緩存內容
修復bug時,我們會通過創(chuàng)建新的bug分支進行修復,然后合并,最后刪除;
當手頭工作沒有完成時,先把工作現(xiàn)場git stash一下,然后去修復bug,修復后,再git stash pop,回到工作現(xiàn)場。
8.git remote -v 查看遠程庫的信息
推送分支,就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上:
本地推送分支,使用git push origin branch-name