廢話:Git,是分布式版本控制系統(tǒng)税娜,在多人開發(fā)的模式下坐搔,相信很多人都在用高大上的git,git是目前版本控制系統(tǒng)中非常非常好的敬矩。本文不會詳細(xì)介紹git的歷史概行、發(fā)展和功能,都是干貨弧岳,如果想詳細(xì)了解git可以看廖雪峰的文章凳忙,寫的非常好,我也是在這里學(xué)習(xí)的禽炬。
git命令列表:
git status
查看當(dāng)前倉庫的狀態(tài)涧卵,查看修改和未提交的文件。
git diff
查看工作區(qū)與暫存區(qū)的區(qū)別腹尖。
git diff fileName
查看對fileName文件做了哪些修改柳恐,不寫的話就會列出所有修改的文件。
git diff HEAD --fileName
查看工作區(qū)與上一條提交的區(qū)別热幔。注:從來沒有被 add 過 的文件乐设,untracked files 并不會顯示出來。
git diff --staged 或 git diff --cached
查看暫存區(qū)與最新提交的區(qū)別绎巨。
git add fileName
將fileName工作區(qū)的內(nèi)容添加到暫存區(qū)近尚,‘git add .’是將所有修改的文件的工作區(qū)內(nèi)容添加。(工作區(qū)和暫存區(qū)大家自行了解吧3∏凇)
git commit -m"備注"
將暫存區(qū)的內(nèi)容提交到當(dāng)前庫的當(dāng)前分支上戈锻。
git commit --amend
發(fā)現(xiàn)剛剛的提交內(nèi)容有錯誤時,并且不想再提交一次和媳,可以在修復(fù)后使用git commit --amend舶沛。該命令會將工作區(qū)與上次提交的內(nèi)容合并起來,并創(chuàng)建一個新的commit窗价,將當(dāng)前的commit替換掉。
git log
查看提交歷史記錄叹卷。
git log -p
查看每個提交中的詳細(xì)修改內(nèi)容撼港。
git log --stat
查看每個提交中修改的文件。
git show commitId
查看指定提交的修改內(nèi)容骤竹。不加commitId帝牡,即為最新的提交。
git show commitId 文件路徑
查看指定提交的指定文件的修改內(nèi)容蒙揣。
git reset --hard HEAD^
回退到上一版本靶溜。‘git reset --hard HEAD^^’回退到上兩個版本,以此類推罩息。
git reset --hard commitId
回退到指定的版本嗤详,commitId可以通過git log或git reflog獲取到。
git revert HEAD^
增加一個新的提交瓷炮,內(nèi)容與指定提交相反葱色,達(dá)到互相抵消的效果,從而實(shí)現(xiàn)撤銷提交娘香。
git reflog
git命令的歷史列表苍狰,記錄了每次執(zhí)行的git命令,包括commitId和提交信息烘绽。
git checkout --fileName
銷毀fileName工作去的內(nèi)容淋昭,讓文件回退到最近一次git commit或git add的狀態(tài)。
git checkout -b dev
在倉庫中創(chuàng)建并切換到dev分支安接,dev是自己起的分支名翔忽。
git branch
列出庫中的所有分支,*標(biāo)注的是當(dāng)前分支赫段。
git checkout master
切換到master分支呀打。
git merage dev
在master分支上執(zhí)行該命令,就是將dev分支的內(nèi)容合并到master上糯笙。
git branch -d dev
刪除dev分支贬丛。
git merage --no-ff -m"備注" dev
在執(zhí)行g(shù)it merage命令合并分支時,在沒有沖突的情況下给涕,默認(rèn)采用Fast forward模式進(jìn)行合并豺憔。該命令是禁止Fast forward模式,并會創(chuàng)建一個commit够庙。
git stash
將當(dāng)前分支的當(dāng)前工作現(xiàn)場儲藏恭应,儲藏后git status查看不到修改狀態(tài)。
git stash list
儲藏列表耘眨。
git stash apply
恢復(fù)儲藏的內(nèi)容昼榛,恢復(fù)后stash內(nèi)容不刪除,列表中還存在剔难。
git stash pop
恢復(fù)儲藏內(nèi)容胆屿,恢復(fù)后stash內(nèi)容刪除,列表中不存在偶宫。
git stash apply stash@{i}
恢復(fù)指定的儲藏內(nèi)容非迹,i是列表中的序號。
git branch -D dev
強(qiáng)行刪除dev分支纯趋,分支在未被合并的情況下執(zhí)行‘git branch -d dev’刪除會失敗憎兽,需要強(qiáng)行刪除冷离,刪除后dev的修改會丟掉。
git remote
查看遠(yuǎn)程庫的信息纯命。
git remote -v
查看遠(yuǎn)程庫更加詳細(xì)的信息西剥,抓取(fetch)和推送(push)的地址扎附。
git push origin dev
將本地倉庫分支的所有提交推送到遠(yuǎn)程倉庫對應(yīng)的分支上面蔫耽。
git push origin dev -f
強(qiáng)制將本次提交推送到遠(yuǎn)程倉庫。
git tag
查看當(dāng)前分支下所有的tag留夜。
git tag v1.0
打一個新的tag:v1.o匙铡,默認(rèn)是打在最新提交的commit上。
git tag v1.0 commitId
將tag打在指定的commit上碍粥。
git show v1.0
查看tag的信息鳖眼,如時間、作者嚼摩、commitId钦讳、說明等。
git tag - v1.0 -m“說明信息” commitId
創(chuàng)建帶有說明的tag枕面。
git tag -s v1.0 -m"說明信息" commitId
通過私鑰簽名打tag愿卒。
git tag -d v1.0
刪除指定的tag。(本地)
git push origin v1.0
將指定的tag推送到遠(yuǎn)程潮秘。
git push origin --tags
將本地所有為推送至遠(yuǎn)程的tag琼开,一次性推送至遠(yuǎn)程。
git tag -d v1.0
刪除本地的tag枕荞。
git push origin :refs/tags/v1.0
刪除已經(jīng)推送至遠(yuǎn)程的tag柜候,先要將本地的刪除。
git merge --abort
取消本次merge操作躏精。
git config --global alias.st status
配置git status命令的別名渣刷,--global表示全局有效,不寫的話就只在當(dāng)前庫有效矗烛。alias.st,st是自定義的辅柴,代替status,配置后git st = git status.
git config --global alias.co checkout
git checkout的別名瞭吃。
.gitignore
存放git提交忽略的文件碌识,在gitignore中配置過的文件,通過git status無修改狀態(tài)虱而,git commit也不會被提交,不過可能會沒用开泽,執(zhí)行g(shù)it rm --cached fileName從staged移除之后再試試牡拇。
.git/config
別名的配置都存在了這個文件中,可以在里面直接修改或刪除某個git命令的別名。
git clean -f
刪除當(dāng)前目錄下未被track的文件惠呼,但是不會刪除gitignore中指定的文件导俘。
git clean -df
刪除當(dāng)前目錄下未被track的文件和文件夾,但是不會刪除gitignore中指定的文件和文件夾剔蹋。
git clean -xf
刪除當(dāng)前目錄下所有未被track的文件和旅薄,不管是否是gitignore中指定的文件和文件夾。
git show commitid 或 git diff commitid^!
查看某次commit的具體修改泣崩。