一、本地倉庫
1、git init
創(chuàng)建git空倉庫
2、git add <file>
添加文件到暫存區(qū)
3、git commit -m "提交的描述"
提交暫存區(qū)的內(nèi)容到工作區(qū)
4、git log? ? git log --pretty=oneline (格式化查看log日志)? ?
查看提交的日志
5、git reset --hard HEAD^? ? ? git reset --hard 提交的id
回退到上一個(gè)版本(工作區(qū)和版本庫一起修改)
6、git reflog
如果回退到上個(gè)版本后悔了,可以繼續(xù)使用這個(gè)reflog查看之前的版本在選擇回退到哪個(gè)版本
7、git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支
8、git diff HEAD -- <file>
查看工作區(qū)和版本庫里面最新版本的區(qū)別
9、git checkout -- <file>
兩種情況:
①:在工作區(qū)修改的內(nèi)容還沒有add到暫存區(qū),執(zhí)行后會(huì)回到與版本庫中的一模一樣的狀態(tài)
②:已經(jīng)把工作區(qū)的內(nèi)容add到暫存區(qū)后,再次修改工作區(qū)的內(nèi)容,執(zhí)行后會(huì)保持已經(jīng)添加到暫存區(qū)的狀態(tài)
10、git reset HEAD <file>
可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)。
11、git rm <file>
刪除工作區(qū)和暫緩區(qū)的文件
二、遠(yuǎn)程倉庫
1、git remote add origin 地址
關(guān)聯(lián)遠(yuǎn)程倉庫
2、git push -u origin master
第一次把本地內(nèi)容推送到遠(yuǎn)程倉庫
3、git push origin maste
把本地master分支的最新修改推送至遠(yuǎn)程倉庫(github)
4、 git clone 地址
如果想拷貝github上的項(xiàng)目用上面的命令(克隆下來以后只能看到master分支)
5、git remote
查看遠(yuǎn)程倉庫信息(當(dāng)你從遠(yuǎn)程倉庫克隆時(shí),實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin)
6、git remote -v
顯示更詳細(xì)的信息
7、git push origin <分支名>
這是分支的推送,可以把本地的分支推送到遠(yuǎn)程倉庫中的分支
8、git checkout -b dev origin/dev
當(dāng)你clone了一個(gè)項(xiàng)目之后是查看不到除了master以外的分支,所以需要用以上代碼創(chuàng)建并切換分支
9、git branch --set-upstream-to=origin/dev dev
關(guān)聯(lián)本地分支與遠(yuǎn)程分支,這樣就能采取git pull命令拉取遠(yuǎn)程倉庫的最新代碼(可能會(huì)有沖突)
10、git pull(git pull origin dev)
拉取分支代碼(在拉取之前可以用git diff進(jìn)行查看,避免沖突)
三、分支管理
1、git checkout -b <分支名>
git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:
$ git branch <分支名>
$ git checkout <分支名>
2、git branch
查看當(dāng)前的分支
3、git checkout master
切換分支,工作區(qū)的內(nèi)容也跟著一起切換。
4、git merge <分支名>
合并分支
5、git branch -d <分支名>
合并之后刪除分支
6、git log --graph --pretty=oneline --abbrev-commit
分支有沖突時(shí)查看分支情況
7、git merge --no-ff -m "merge with no-ff" dev
分支管理策略:因?yàn)楸敬魏喜⒁獎(jiǎng)?chuàng)建一個(gè)新的commit,所以加上-m參數(shù),把commit描述寫進(jìn)去。
合并分支時(shí),加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward合并就看不出來曾經(jīng)做過合并。
8、git stash
保存當(dāng)前分支的工作現(xiàn)場(chǎng),可以去修改著急的bug分支
9、git stash list
查看有多少個(gè)stash
10、git stash pop
恢復(fù)工作現(xiàn)場(chǎng)同時(shí)把stash刪除掉 (git stash apply 恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用git stash drop來刪除;)
11、git stash apply stash@{0}
可以有多次stash,恢復(fù)指定的stash
12、git branch -D <分支名>
開發(fā)新功能時(shí)需要新建個(gè)feature分支,強(qiáng)行刪除分支上的內(nèi)容。
三、標(biāo)簽
1、git tag <tag>
默認(rèn)標(biāo)簽是打在最新提交的commit上的
2、git tag
查看所有標(biāo)簽
3、git tag <tag> commitid
指定commitid打標(biāo)簽
4、git show <tag>
顯示對(duì)應(yīng)標(biāo)簽上提交的信息
5、$ git tag -a <tag> -m "說明" commitid
創(chuàng)建帶有說明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說明文字
標(biāo)簽總是和某個(gè)commit掛鉤。如果這個(gè)commit既出現(xiàn)在master分支,又出現(xiàn)在dev分支,那么在這兩個(gè)分支上都可以看到這個(gè)標(biāo)簽
6、git tag -d <tag>
刪除標(biāo)簽
7、git push origin <tag>
推送到遠(yuǎn)程標(biāo)簽
8、git push origin --tags
一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
9、git tag -d <tagname>
刪除遠(yuǎn)程標(biāo)簽先刪除一個(gè)本地標(biāo)簽,然后在刪除遠(yuǎn)程標(biāo)簽
10、git push origin :refs/tags/<tagname>
刪除遠(yuǎn)程標(biāo)簽