主要是是一些常用的Git命令
Git Commands
開始使用git
- 設(shè)置用戶名
git config --global user.name "Your Name" - 設(shè)置郵箱
git config --global user.email "email@example.com" - 創(chuàng)建倉(cāng)庫(kù)(當(dāng)前目錄)
git init - 添加文件
git add <file>添加指定文件
git add .添加所有改變的文件
注:如果add后又修改了文件,還要再add一次之后再commit - 提交
git commit -m "提交說明" - 查看狀態(tài)
git status - 查看修改
git diff <file>查看單個(gè)文件的更改
git diff查看所有文件的更改 - 查看歷史提交
git log
git log --pretty=oneline一次提交顯示為一行
git blame <file>查看一個(gè)文件的修改記錄(誰在什么事件修改了什么) - 查看歷史命令
git reflog
版本控制
- 版本回退
git reset --hard HEAD撤銷所有未提交的操作,包括add
git reset --hard HEAD^回退到上一個(gè)版本
git reset --hard HEAD^^回退到上兩個(gè)版本
git reset --hard HEAD~100回退到上100個(gè)版本
git reset --hard <commit>回退到指定版本
git checkout -- <file>丟棄工作區(qū)的修改,如果文件add到了暫存區(qū)又做了修改,則恢復(fù)到暫存區(qū),否則恢復(fù)到版本庫(kù)的狀態(tài),如果文件刪除了,則回復(fù)到版本庫(kù)的文件
git reset HEAD <file>把暫存區(qū)的修改撤銷掉,重新放回工作區(qū)
注:
場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- <file>
場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD <file>,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作
場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷本次提交,參考版本回退,不過前提是沒有推送到遠(yuǎn)程庫(kù) - 刪除/重命名
git rm <file>刪除文件,盡管文件已經(jīng)添加到暫存區(qū)(add)
git rm --cached <file>把文件從版本庫(kù)、暫存區(qū)刪掉,但是保留硬盤文件
git mv <file> <other file>重命名文件
遠(yuǎn)程倉(cāng)庫(kù)
- 創(chuàng)建ssh密鑰
ssh-keygen -t rsa -C "youremail@example.com"
注:一路回車,在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個(gè)文件,這兩個(gè)就是SSH Key的秘鑰對(duì),id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人,復(fù)制內(nèi)容,在github上添加 - 遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin git@github.com:michaelliao/learngit.git關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù),遠(yuǎn)程庫(kù)的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)
git push -u origin master我們第一次推送master分支時(shí),加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令
git push origin master把本地master分支的最新修改推送至GitHub
git clone git@github.com:michaelliao/gitskills.git從遠(yuǎn)程倉(cāng)庫(kù)克隆,Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且,遠(yuǎn)程倉(cāng)庫(kù)的默認(rèn)名稱是origin
git remote查看遠(yuǎn)程庫(kù)的信息
git remote -v查看遠(yuǎn)程庫(kù)的詳細(xì)信息
git push origin master推送遠(yuǎn)程分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫(kù)
git pull從遠(yuǎn)程庫(kù)拉取
git checkout -b <branch> origin/<branch>創(chuàng)建遠(yuǎn)程origin的branch分支到本地
git branch --set-upstream <branch> origin/<branch>指定本地dev分支與遠(yuǎn)程origin/dev分支的鏈接
git push origin --delete <branch>刪除遠(yuǎn)程分支
分支管理
- 創(chuàng)建分支
git checkout -b <branch>創(chuàng)建分支并切換過去,相當(dāng)于執(zhí)行了git branch <branch>和git checkout <branch>
git branch查看當(dāng)前分支
git checkout <branch>切換分支
git merge <branch>合并分支到當(dāng)前分支,有沖突修改后再add、commit
git merge --no-ff -m "合并信息" <branch>禁止快速合并
git branch -d <branch>刪除分支
git branch -D <branch>強(qiáng)行刪除分支(未合并的分支) - BUG分支
git stash把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來,等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作
git stash list查看stash
git stash apply恢復(fù)現(xiàn)場(chǎng)
git stash drop刪除保存的stash
git stash pop恢復(fù)并刪除stash
git stash apply stash@{0}多次stash,恢復(fù)指定的stash
標(biāo)簽管理
- 創(chuàng)建標(biāo)簽
git tag <name>創(chuàng)建標(biāo)簽
git tag查看所有標(biāo)簽
git tag <name> <commit>在指定的版本版本id打標(biāo)簽
git show <name>查看標(biāo)簽信息
git tag -a <name> -m "說明" <commit>創(chuàng)建帶有說明的標(biāo)簽 - 操作標(biāo)簽
git tag -d <name>刪除標(biāo)簽
git push origin <name>推送某個(gè)標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)
git push origin --tags一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
git push origin :refs/tags/<name>刪除遠(yuǎn)程標(biāo)簽(刪除遠(yuǎn)程標(biāo)簽之前要先刪除本地標(biāo)簽)