git命令整理

git常用命令

GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/git-common-command/
Git遠程操作詳解 :https://microzz.com/2017/05/06/git/
一篇文章次酌,教你學(xué)會Git : https://juejin.im/post/599e14875188251240632702
如何在 Git 中使用撤消操作
git使用中碰到的問題,持續(xù)更新

9f148d2dfe9ba4fe63b08ecb95e322ea_large__=7712794.png

命令別名設(shè)置:
gitk --all & //打開git 圖形化界面
git fetch --all //刷新工作區(qū)
git remote -v //查看遠端地址
git checkout -b dbg_master -t origin/master //基于遠端master分支創(chuàng)建dbg_master分支
git merge --squash <branch>:將多次提交合并成一個狐赡,然后git add .;git commit -m "XXXXX";git push origin XXXX...

git push # push所有分支
git push origin master # 將本地主分支推到遠程主分支
git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則創(chuàng)建拍屑,用于初始化遠程倉庫)
git push origin <local_branch> # 創(chuàng)建遠程分支膜眠, origin是遠程倉庫名
git push origin local-branch #將當前l(fā)ocal-branch 分支推送一個遠程local-branch分支秒裕,本地分支和遠程分支同名
git push origin <local_branch>:<remote_branch> # 創(chuàng)建遠程分支埂息,將local_branch代碼推送到remote_branch分支
git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>)良蒸,然后再push刪除遠程分支

對最近一次commit的進行修改:git commit -a –amend

Git pull 強制覆蓋本地文件
git fetch --all
git reset --hard origin/master
git pull

git remote add origin https://git.oschina.net/duandaoke/os.git要求服務(wù)已經(jīng)建立同名倉庫
git remote # 顯示遠程倉庫
git remote -v # 顯示遠程倉庫詳情
git remote show origin # 顯示 origin 遠程庫的詳情

rebase的沖突解決

解決完一個補丁應(yīng)用的沖突后,執(zhí)行下面命令標記沖突已解決(也就是把修改內(nèi)容加入緩存)
git add -u //注:-u 表示把所有已track的文件的新的修改加入緩存粮呢,但不加入新的文件唾糯。
然后執(zhí)行下面命令繼續(xù)rebase:
git rebase --continue //有沖突繼續(xù)解決,重復(fù)這這些步驟鬼贱,直到rebase完成移怯。
如果中間遇到某個補丁不需要應(yīng)用,可以用下面命令忽略:
git rebase --skip
如果想回到rebase執(zhí)行之前的狀態(tài)这难,可以執(zhí)行:
git rebase --abort //放棄rebase
注:rebase之后舟误,不需要執(zhí)行commit,也不存在新的修改需要提交姻乓,都是git自動完成嵌溢。

cherry-pick的沖突解決

解決完一個補丁應(yīng)用的沖突后,執(zhí)行下面命令標記沖突已解決(也就是把修改內(nèi)容加入緩存)
git add -u //注:-u 表示把所有已track的文件的新的修改加入緩存蹋岩,但不加入新的文件赖草。
然后執(zhí)行下面命令繼續(xù)rebase:
git cherry-pick --continue //有沖突繼續(xù)解決,重復(fù)這這些步驟剪个,直到cherry-pick完成秧骑。
如果中間遇到某個補丁不需要應(yīng)用,可以用下面命令忽略:
git cherry-pick --skip
如果想回到rebase執(zhí)行之前的狀態(tài)扣囊,可以執(zhí)行:
git cherry-pick --abort //放棄cherry-pick
注:cherry-pick之后乎折,不需要執(zhí)行commit,也不存在新的修改需要提交侵歇,都是git自動完成骂澄。

   手動編輯沖突的文件,使其內(nèi)容和master_mlc分支上的內(nèi)容一致惕虑, 

然后git add此文件坟冲,最后執(zhí)行g(shù)it cherry-pick –continue即可。

1溃蔫、git刪除遠程分支
git push origin :branch-name //origin前面必須有空格健提,表示push一個空分支到遠程分支,即可刪除遠程分支酒唉。注意:這個操作需要擁有force push的權(quán)限
2矩桂、清空git暫存區(qū)
git reset HEAD //可以清空之前git add 的內(nèi)容

git clean命令用來從你的工作目錄中刪除所有沒有tracked過的文件. git clean經(jīng)常和git reset --hard一起結(jié)合使用. 記住reset只影響被track過的文件, 所以需要clean來刪除沒有track過的文件. 結(jié)合使用這兩個命令能讓你的工作目錄完全回到一個指定的<commit>的狀態(tài).用法刪除當前目錄下沒有被track過的文件和文件夾. git clean -xf下面的例子要刪除所有工作目錄下面的修改, 包括新添加的文件. 假設(shè)你已經(jīng)提交了一些快照了, 而且做了一些新的開發(fā).12git reset --hardgit clean -df運行后, 工作目錄和緩存區(qū)回到最近一次commit時候一摸一樣的狀態(tài), git status會告訴你這是一個干凈的工作目錄, 又是一個新的開始了.

git config --global gui.encoding utf-8 //在git GUI中使用UTF-8編碼

//git 回滾到之前某一commitgit reset –hard 8ff24a6803173208f3e606e32dfcf82db9ac84d8在使用Git的時候,經(jīng)過幾次提交后,發(fā)現(xiàn)需要回退到早些時候的狀態(tài).例如: 7edb8524a xxxxxxxxxxxxxxxxxx 83dae5691 xxxxxxxxxxxxxxxxxx 45eadd642 xxxxxxxxxxxxxxxxxx 657834ade xxxxxxxxxxxxxxxxxx假設(shè)現(xiàn)在處于7edb8524a 狀態(tài),現(xiàn)在我想回退到657834ade時的狀態(tài),此時可以 git reset –hard 7edb8524a 然后 git reset –soft 657834ade 會將之間的修改全部進行revert,然后在進行add commit操作就行了.另外權(quán)限足夠的話,可以從657834ade 拉一個分支出來,然后將遠程分支 刪除,再將拉出來的分支push到遠程倉庫上,成為原來的分支,也可以實現(xiàn)回退到 657834ade 的目的.此方法不會保留中間的各種修改信息和狀態(tài).根據(jù)–soft –mixed –hard沸移,會對working tree和index和HEAD進行重置: git reset –mixed:此為默認方式痪伦,不帶任何參數(shù)的git reset侄榴,即時這種方式,它回退到某個版本网沾,只保留源碼癞蚕,回退commit和index信息 git reset –soft:回退到某個版本,只回退了commit的信息辉哥,不會恢復(fù)到index file一級桦山。如果還要提交,直接commit即可 git reset –hard:徹底回退到某個版本醋旦,本地的源碼也會變?yōu)樯弦粋€版本的內(nèi)容

已經(jīng)push對于已經(jīng)把代碼push到線上倉庫,你回退本地代碼其實也想同時回退線上代碼,回滾到某個指定的版本,線上,線下代碼保持一致.你要用到下面的命令revertgit revert用于反轉(zhuǎn)提交,執(zhí)行evert命令時要求工作樹必須是干凈的.git revert用一個新提交來消除一個歷史提交所做的任何修改.revert 之后你的本地代碼會回滾到指定的歷史版本,這時你再 git push 既可以把線上的代碼更新.(這里不會像reset造成沖突的問題)revert 使用,需要先找到你想回滾版本唯一的commit標識代碼,可以用 git log 或者在adgit搭建的web環(huán)境歷史提交記錄里查看.git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61通常,前幾位即可git revert c011eb3git revert是用一次新的commit來回滾之前的commit恒水,git reset是直接刪除指定的commit看似達到的效果是一樣的,其實完全不同.

合理的命令別名設(shè)置可以大大減少輸入,有助于提高工作效率饲齐,建議遵守下述別名設(shè)置:

git config --global alias.ci commitgit config --global alias.co checkoutgit config --global alias.st statusgit config --global alias.rb rebasegit config --global alias.ll “l(fā)og --oneline --decorate --color”git config --global alias.lc “l(fā)og --graph --color”

 正確的回車換行設(shè)置钉凌,避免 Unix 和 Windows 下開發(fā)的回車換行的轉(zhuǎn)換問題。

(Windows 下)
git config --global core.autocrlf true
git config --global core. safecrlf warn

(Linux 下)
git config --global core.autocrlf input
git config --global core. safecrlf warn

752f9c931b7443f19025215cf2f2af15_large__=7712794.png

這篇文章的目的是給經(jīng)常使用git管理項目提供一個有益的提醒捂人。如果你是git新手,可以先閱讀文后的引用部分,然后在回頭閱讀此篇文章青团。在介紹git命令之前兔毒,你可以先看看來自 on-my-zsh 提供的別名。
基本命令
git config --global user.name "Your Name"

git config --global user.email "youremail@example.com"

git config --global core.editor <your favorite editor here>
Ex: git config --global core.editor vim

git init
:初始化一個repo瑟匆,初始化本地git倉庫(創(chuàng)建新倉庫)

Commit 結(jié)構(gòu)
git status
(gst
):查看 repo 狀態(tài)
工作區(qū):.git 目錄
暫存區(qū)
工作目錄

git add <filename>
(ga
):添加一個文件到暫存區(qū)
git add .
(gaa
):添加所有文件到暫存區(qū)
git add *.js
:添加所有后綴為js的文件到暫存區(qū)
git rm --cached <file>
:從暫存區(qū)刪除一個新文件
git commit -m "My first commit"
(gcmsg
):創(chuàng)建一次帶 message 的提交
git commit -v -a
(gca
):-v
是 verbose 的縮寫闽坡,會在底部顯示差異信息和更多有意義的信息
-a
類似于 git add .
,會添加所有被修改和刪除的文件愁溜,但會忽略新創(chuàng)建的文件

git help <command>
:查看對應(yīng)命令的幫助手冊
git log
(glg
,glgg
,glo
, glog
):查看項目的提交歷史

暫存區(qū)管理
git reset HEAD <filename>
(grh
):從暫存區(qū)刪除一個被修改的文件
git reset HEAD
(grh
):從暫存區(qū)刪除所有被修改的文件
git checkout <filename>
(gco
):從暫存區(qū)刪除一個被修改的文件无午,并撤銷文件的更改 // git checkout .
git commit -m "My first commit" --amend
:添加文件/更改在暫存區(qū)的最后一次提交
git commit -v -a --amend
(gca!
):添加文件/更改在暫存區(qū)的最后一次提交
.gitignore
:告訴git,哪些文件不被加入版本跟蹤可以使用 git add <filename> -f
命令添加一個不被版本跟蹤的文件

git diff <filename>
(gd
):查看基于當前文件的最后一次提交的更改差異
git diff
(gd
):查看基于所有文件的最后一次提交的更改差異
git reset HEAD~2 --soft
:從項目提交歷史中刪除最近兩次提交祝谚,但不丟棄文件的更改
git reset HEAD~2 --hard
:從項目提交歷史中刪除最近兩次提交宪迟,但會丟棄文件的更改和在(最后兩次)提交中創(chuàng)建的新文件
git reset <commit> --soft --hard
:--soft
:將所有被更改的文件回溯到“待提交”狀態(tài)
--hard
:commit
之后,對被git追蹤的文件的任何更改都被丟棄

git reflog
:顯示包括"被撤銷"在內(nèi)的所有提交
git merge <commit hash>
:重新提交(restore the commit)
git clean -f
:刪除工作目錄中不被git進行版本追蹤的文件

Stashed & BranchesStash
git stash
(gsta
):將所有暫存區(qū)的文件移動到“儲藏區(qū)”交惯,類似于另一種類型的工作區(qū)
git stash list
:查看儲藏隊列(Stash lists)
git stash apply
:將最近一次儲藏恢復(fù)到暫存區(qū)(可以用類似 git stash apply stash@{num}
(num從0開始計數(shù)) 的命令來使用在隊列中的任意一個儲藏(stashes))
git stash clear
:清空儲藏隊列
git stash save "name of the stash"
:為儲藏設(shè)置命名
git stash pop
(gstp
):將最近一次儲藏恢復(fù)到暫存區(qū)并從儲藏隊列刪除此儲藏
git stash drop
(gstd
):從儲藏隊列刪除最近一次儲藏(stash@{0}
)(git stash drop stash@{num}
從儲藏隊列刪除指定儲藏)

Branch
git checkout -b dev
(gco
):創(chuàng)建 dev 分支并從當前分支切換到 dev 分支 // git checkout -b dbg_master -t origin/master //基于master分支創(chuàng)建dbg_master分支
git branch
(gb
):查看所有分支
git checkout master
(gcm
):切換到主分支
git merge <branch>
(gm
):合并分支
git rebase master
:先將 master 上的更改合并到當前分支次泽,再添加當前分支的更改。如果有沖突席爽,解決沖突后加 --continue
參數(shù)繼續(xù)合并
git branch -d <branch>
: 刪除分支意荤,-D
則強制刪除分支
git merge <branch> --squash
:將多次提交合并成一個,其流程如下:

Go to the master branchgit checkout master# Create a temp branchgit checkout -b temp# Merge the feature/x branch into the temp using --squashgit merge feature/x --squash# See the new modifications/files in the Staging Areagit status# Create the unified commitgit commit -m "Add feature/x"# Delete the feature/x branchgit branch -D feature/x

rebase 和 merge 的區(qū)別:rebase:提交歷史(的展示)是線性的
缺點:會刪除最近一個 commit只锻,然后創(chuàng)建一次新的 commit
如果已提交到遠程玖像,不要使用 rebase

merge:提交歷史(的展示)是分叉的
對于兩個分支的合并,會創(chuàng)建一個次新的 commit

遠程倉庫管理
git remote add <name> <url>
:添加一個將被追蹤的遠程倉庫
git remote rm <name>
:移除一個遠程倉庫
git push <remote> <remote-branch>
(gp
,ggp
):將當前分支的本地 commit 推送到遠程倉庫
git fetch <remote> <remote-branch>
:拉取遠程倉庫的最新 commit 到當前(本地)分支(<remote>/<branch>
)齐饮,不會合并
git pull <remote> <remote-branch>
(gl
,ggl
):拉取遠程倉庫的最新 commit 到當前(本地)分支捐寥,并自動 mergegit pull --rebase
(gup
):以 rebase 的方式進行合并笤昨,而不是 merge

其它有用的命令
git tag <name>
:創(chuàng)建一個 tag(如:v1.3)
git push --tags
:將本地 tags 推送到遠程倉庫
git push <tag>
:推送指定的本地 tag 到遠程

展示幫助信息git help -g回到遠程倉庫的狀態(tài)拋棄本地所有的修改,回到遠程倉庫的狀態(tài)握恳。git fetch --all && git reset --hard origin/master重設(shè)第一個commit也就是把所有的改動都重新放回工作區(qū)瞒窒,并清空所有的commit,這樣就可以重新提交第一個commit了git update-ref -d HEAD展示工作區(qū)和暫存區(qū)的不同輸出工作區(qū)和暫存區(qū)的different(不同)乡洼。git diff還可以展示本地倉庫中任意兩個commit之間的文件變動:git diff <commit-id> <commit-id>展示暫存區(qū)和最近版本的不同輸出暫存區(qū)和本地最近的版本(commit)的different(不同)崇裁。git diff --cached展示暫存區(qū)、工作區(qū)和最近版本的不同輸出工作區(qū)束昵、暫存區(qū) 和本地最近的版本(commit)的different(不同)拔稳。git diff HEAD快速切換分支git checkout -刪除已經(jīng)合并到master的分支git branch --merged master | grep -v '^*| master' | xargs -n 1 git branch -d展示本地分支關(guān)聯(lián)遠程倉庫的情況git branch -vv關(guān)聯(lián)遠程分支關(guān)聯(lián)之后,git branch -vv就可以展示關(guān)聯(lián)的遠程分支名了锹雏,同時推送到遠程倉庫直接:git push壳炎,不需要指定遠程倉庫了。git branch -u origin/mybranch或者在push時加上-u參數(shù)git push origin/mybranch -u列出所有本地分支-l參數(shù)相當于:localgit branch -l列出所有遠程分支-r參數(shù)相當于:remotegit branch -r列出本地和遠程分支-a參數(shù)相當于:allgit branch -a創(chuàng)建并切換到本地分支git checkout -b <branch-name>創(chuàng)建并切換到遠程分支git checkout -b <branch-name> -t origin/<branch-name>刪除本地分支git branch -d <local-branchname>刪除遠程分支git push origin --delete <remote-branchname>或者git push origin :<remote-branchname>重命名本地分支git branch -m <new-branch-name>git branch -m <oldbranchname> <newbranchname>:嘗試修改git branch -M <oldbranchname> <newbranchname>:強制修改查看標簽git tag展示當前分支的最近的taggit describe --tags --abbrev=0本地創(chuàng)建標簽git tag <version-number>默認tag是打在最近的一次commit上逼侦,如果需要指定commit打tag:$ git tag -a <version-number> -m "v1.0 發(fā)布(描述)" <commit-id>推送標簽到遠程倉庫首先要保證本地創(chuàng)建好了標簽才可以推送標簽到遠程倉庫:git push origin <local-version-number>一次性推送所有標簽匿辩,同步到遠程倉庫:git push origin --tags刪除本地標簽git tag -d <tag-name>刪除遠程標簽刪除遠程標簽需要先刪除本地標簽,再執(zhí)行下面的命令:git push origin :refs/tags/<tag-name>切回到某個標簽一般上線之前都會打tag榛丢,就是為了防止上線后出現(xiàn)問題铲球,方便快速回退到上一版本。下面的命令是回到某一標簽下的狀態(tài):git checkout -b branch_name tag_name放棄工作區(qū)的修改git checkout <file-name>放棄所有修改:git checkout .恢復(fù)刪除的文件git rev-list -n 1 HEAD -- <file_path> #得到 deleting_commitgit checkout <deleting_commit>^ -- <file_path> #回到刪除文件 deleting_commit 之前的狀態(tài)回到某一個commit的狀態(tài)晰赞,并重新增添一個commit //回退稼病,有記錄git revert <commit-id>回到某個commit的狀態(tài),并刪除后面的commit和revert的區(qū)別:reset命令會抹去某個commit id之后的所有commitgit reset <commit-id>修改上一個commit的描述git commit --amend查看commit歷史git log查看某段代碼是誰寫的blame的意思為‘責(zé)怪’掖鱼,你懂的然走。git blame <file-name>顯示本地執(zhí)行過git命令就像shell的history一樣git reflog修改作者名git commit --amend --author='Author Name email@address.com'修改遠程倉庫的urlgit remote set-url origin <URL>增加遠程倉庫git remote add origin <remote-url>列出所有遠程倉庫git remote // git remote -v查看兩個星期內(nèi)的改動git whatchanged --since='2 weeks ago'把A分支的某一個commit,放到B分支上這個過程需要cherry-pick命令戏挡,參考git checkout <branch-name> && git cherry-pick <commit-id>給git命令起別名簡化命令git config --global alias.<handle> <command>比如:git status 改成 git st芍瑞,這樣可以簡化命令git config --global alias.st status存儲當前的修改,但不用提交commit詳解可以參考廖雪峰老師的git教程git stash保存當前狀態(tài)褐墅,包括untracked的文件untracked文件:新建的文件git stash -u展示所有stashesgit stash list回到某個stash的狀態(tài)git stash apply <stash@{n}>回到最后一個stash的狀態(tài)拆檬,并刪除這個stashgit stash pop刪除所有的stashgit stash clear從stash中拿出某個文件的修改git checkout <stash@{n}> -- <file-path>展示所有tracked的文件git ls-files -t展示所有untracked的文件git ls-files --others展示所有忽略的文件git ls-files --others -i --exclude-standard強制刪除untracked的文件可以用來刪除新建的文件。如果不指定文件文件名妥凳,則清空所有工作的untracked文件竟贯。clean命令,注意兩點:clean后逝钥,刪除的文件無法找回不會影響tracked的文件的改動屑那,只會刪除untracked的文件git clean <file-name> -f強制刪除untracked的目錄可以用來刪除新建的目錄,注意:這個命令也可以用來刪除untracked的文件。詳情見上一條git clean <directory-name> -df展示簡化的commit歷史git log --pretty=oneline --graph --decorate --all把某一個分支到導(dǎo)出成一個文件git bundle create <file> <branch-name>從包中導(dǎo)入分支新建一個分支持际,分支內(nèi)容就是上面git bundle create命令導(dǎo)出的內(nèi)容git clone repo.bundle <repo-dir> -b <branch-name>執(zhí)行rebase之前自動stashgit rebase --autostash從遠程倉庫根據(jù)ID沃琅,拉下某一狀態(tài),到本地分支git fetch origin pull/<id>/head:<branch-name>詳細展示一行中的修改git diff --word-diff清除gitignore文件中記錄的文件git clean -X -f展示所有alias和configs注意: config分為:當前目錄(local)和全局(golbal)的config选酗,默認為當前目錄的configgit config --local --list (當前目錄)git config --global --list (全局)展示忽略的文件git status --ignoredcommit歷史中顯示Branch1有的阵难,但是Branch2沒有commitgit log Branch1 ^Branch2在commit log中顯示GPG簽名git log --show-signature刪除全局設(shè)置git config --global --unset <entry-name>新建并切換到新分支上岳枷,同時這個分支沒有任何commit相當于保存修改芒填,但是重寫commit歷史git checkout --orphan <branch-name>展示任意分支某一文件的內(nèi)容git show <branch-name>:<file-name>clone下來指定的單一分支git clone -b <branch-name> --single-branch https://github.com/user/repo.git忽略某個文件的改動關(guān)閉 track 指定文件的改動,也就是 Git 將不會在記錄這個文件的改動git update-index --assume-unchanged path/to/file恢復(fù) track 指定文件的改動git update-index --no-assume-unchanged path/to/file忽略文件的權(quán)限變化不再將文件的權(quán)限變化視作改動git config core.fileMode false展示本地所有的分支的commit最新的放在最上面git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/在commit log中查找相關(guān)內(nèi)容通過grep查找空繁,given-text:所需要查找的字段git log --all --grep='<given-text>'把暫存區(qū)的指定file放到工作區(qū)中g(shù)it reset <file-name>強制推送git push -f <remote-name> <branch-name>列出所有遠程分支-r參數(shù)相當于:remotegit branch -r更新到本地# 源 + 分支名git pull origin master

初始化本地git倉庫(創(chuàng)建新倉庫)
git init

初始化 git 項目git init安裝好 Git 之后殿衰,配置你的資料:# 配置用戶名git config --global user.name "Your Real Name"# 配置郵箱地址git config --global user.email you@email.address

配置用戶名
git config --global user.name "xxx"

配置郵件
git config --global user.email "xxx@xxx.com"

git status等命令自動著色
git config --global color.ui true

git config --global color.status auto

git config --global color.diff auto

git config --global color.branch auto

git config --global color.interactive auto

clone遠程倉庫
git clone git+ssh://git@192.168.53.168/VT.git

查看當前版本狀態(tài)(是否修改)
git status

添加xyz文件至index
git add xyz

增加當前子目錄下所有更改過的文件至index
git add .

提交
git commit -m 'xxx'

合并上一次提交(用于反復(fù)修改)
git commit --amend -m 'xxx'

將add和commit合為一步
git commit -am 'xxx'

刪除index中的文件
git rm xxx

遞歸刪除
git rm -r *

顯示提交日志
git log

顯示1行日志 -n為n行
git log -1

git log -5

顯示提交日志及相關(guān)變動文件
git log --stat

git log -p -m

顯示某個提交的詳細內(nèi)容
git show dfb02e6e4f2f7b573337763e5c0013802e392818

可只用commitid的前幾位
git show dfb02

顯示HEAD提交日志
git show HEAD

顯示HEAD的父(上一個版本)的提交日志 ^^為上兩個版本 ^5為上5個版本
git show HEAD^

顯示已存在的tag
git tag

增加v2.0的tag
git tag -a v2.0 -m 'xxx'

顯示v2.0的日志及詳細內(nèi)容
git show v2.0

顯示v2.0的日志
git log v2.0

顯示所有未添加至index的變更
git diff

顯示所有已添加index但還未commit的變更
git diff --cached

比較與上一個版本的差異
git diff HEAD^

比較與HEAD版本lib目錄的差異
git diff HEAD -- ./lib

比較遠程分支master上有本地分支master上沒有的
git diff origin/master..master

只顯示差異的文件,不顯示具體內(nèi)容
git diff origin/master..master --stat

增加遠程定義(用于push/pull/fetch)
git remote add origin git+ssh://git@192.168.53.168/VT.git

顯示本地分支
git branch

顯示包含提交50089的分支
git branch --contains 50089

顯示所有分支
git branch -a

顯示所有原創(chuàng)分支
git branch -r

顯示所有已合并到當前分支的分支
git branch --merged

顯示所有未合并到當前分支的分支
git branch --no-merged

本地分支改名
git branch -m master master_copy

從當前分支創(chuàng)建新分支master_copy并檢出
git checkout -b master_copy

上面的完整版
git checkout -b master master_copy

檢出已存在的features/performance分支
git checkout features/performance

檢出遠程分支hotfixes/BJVEP933并創(chuàng)建本地跟蹤分支
git checkout --track hotfixes/BJVEP933

檢出版本v2.0
git checkout v2.0

從遠程分支develop創(chuàng)建新本地分支devel并檢出
git checkout -b devel origin/develop

檢出head版本的README文件(可用于修改錯誤回退)
git checkout -- README

合并遠程master分支至當前分支
git merge origin/master

合并提交ff44785404a8e的修改
git cherry-pick ff44785404a8e

將當前分支push到遠程master分支
git push origin master

刪除遠程倉庫的hotfixes/BJVEP933分支
git push origin :hotfixes/BJVEP933

把所有tag推送到遠程倉庫
git push --tags

獲取所有遠程分支(不更新本地分支盛泡,另需merge)
git fetch

獲取所有原創(chuàng)分支并清除服務(wù)器上已刪掉的分支
git fetch --prune

獲取遠程分支master并merge到當前分支
git pull origin master

重命名文件README為README2
git mv README README2

將當前版本重置為HEAD(通常用于merge失敗回退)
git reset --hard HEAD

git rebase

刪除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -d hotfixes/BJVEP933

強制刪除分支hotfixes/BJVEP933
git branch -D hotfixes/BJVEP933

列出git index包含的文件
git ls-files

圖示當前分支歷史
git show-branch

圖示所有分支歷史
git show-branch --all

顯示提交歷史對應(yīng)的文件修改
git whatchanged

撤銷提交dfb02e6e4f2f7b573337763e5c0013802e392818
git revert dfb02e6e4f2f7b573337763e5c0013802e392818

內(nèi)部命令:顯示某個git對象
git ls-tree HEAD

內(nèi)部命令:顯示某個ref對于的SHA1 HASH
git rev-parse v2.0

顯示所有提交闷祥,包括孤立節(jié)點
git reflog

git show HEAD@{5}

顯示master分支昨天的狀態(tài)
git show master@{yesterday}

圖示提交日志
git log --pretty=format:'%h %s' --graph

git show HEAD~3

git show -s --pretty=raw 2be7fcb476

暫存當前修改,將所有至為HEAD狀態(tài)
git stash

查看所有暫存
git stash list

參考第一次暫存
git stash show -p stash@{0}

應(yīng)用第一次暫存
git stash apply stash@{0}

文件中搜索文本“delete from”
git grep "delete from"

git grep -e '#define' --and -e SORT_DIRENT

git gc

git fsck

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傲诵,一起剝皮案震驚了整個濱河市凯砍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拴竹,老刑警劉巖悟衩,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異栓拜,居然都是意外死亡座泳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門幕与,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挑势,“玉大人,你說我怎么就攤上這事啦鸣〕北ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵诫给,是天一觀的道長饼齿。 經(jīng)常有香客問我,道長蝙搔,這世上最難降的妖魔是什么缕溉? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮吃型,結(jié)果婚禮上证鸥,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好枉层,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布泉褐。 她就那樣靜靜地躺著,像睡著了一般鸟蜡。 火紅的嫁衣襯著肌膚如雪膜赃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天揉忘,我揣著相機與錄音跳座,去河邊找鬼。 笑死泣矛,一個胖子當著我的面吹牛疲眷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播您朽,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼狂丝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哗总?” 一聲冷哼從身側(cè)響起几颜,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讯屈,沒想到半個月后蛋哭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耻煤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年具壮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哈蝇。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡棺妓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炮赦,到底是詐尸還是另有隱情怜跑,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布吠勘,位于F島的核電站性芬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剧防。R本人自食惡果不足惜植锉,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峭拘。 院中可真熱鬧俊庇,春花似錦狮暑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至彭沼,卻和暖如春缔逛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姓惑。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工褐奴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挺益。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓歉糜,卻偏偏與公主長得像乘寒,于是被迫代替她去往敵國和親望众。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 今天上線了一個項目伞辛,感覺有點復(fù)雜烂翰,主要是使用git命令進行的,那就總結(jié)一下常用的git命令蚤氏,方便以后自己查找甘耿。 p...
    cyuamber閱讀 304評論 0 0
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,632評論 9 163
  • 起來!不愿做奴隸的人們! 把我們的血肉竿滨, 筑起我們新的長城佳恬! 。于游。毁葱。。贰剥。倾剿。 唱起這首歌,就收不住蚌成,非得一直唱完才罷...
    80天旅行閱讀 252評論 0 0
  • 你們外表冷漠前痘,內(nèi)心柔軟。你們不太善于表達自己的感情担忧。于是當你們某一天毫無戒備地把小腦袋擱在我們掌心時芹缔,我們就整顆心...
    _Magnolia__閱讀 248評論 3 7
  • “死筱綃!”迎面而來的就是邱瑩瑩帶著她的邱式大熊抱像曲筱綃撲去瓶盛。誰料最欠,曲筱綃機靈的一讓坡锡,duang,邱瑩瑩摔地上了...
    LYD佳閱讀 427評論 0 1