標籤:

我所記錄的git命令(非常實用)

一、前言

記錄一下工作中常用到的git命令,只是簡單的筆記,歡迎大家交流...

[

順便問下園友們,怎麼感覺博客園發布的博客搜索有時都搜不到,後台編輯能填的都填寫了,還是覺得搜索排名不高?

相同的標題搜索到的都是被抓取工具抓取的另一個平台下的文章了...

]

還是先貼張圖(此圖來自阮大神的blog)

二、git branch 和 git checkout

git branch //查看當前分支git branch -r //列出遠程分支git branch -a //列出所有分支git branch branchName //創建分支git checkout branchName //切換分支git checkout -b branchName //創建並切換到分支git checkout //後面不跟任何參數,則就是對工作區進行檢查git checkout filename //從暫存區中恢復文件git status //查看狀態

三、git clone 和 git remote

git clone <版本庫的網址> <本地目錄名>git clone支持多種協議,除了HTTP(s)以外,還支持SSH、Git、本地文件協議等,下面是一些例子。$ git clone http[s]://example.com/path/to/repo.git/$ git clone ssh://example.com/path/to/repo.git/$ git clone git://example.com/path/to/repo.git/$ git clone /opt/git/project.git $ git clone file:///opt/git/project.git$ git clone ftp[s]://example.com/path/to/repo.git/$ git clone rsync://example.com/path/to/repo.git/SSH協議還有另一種寫法$ git clone [user@]example.com:path/to/repo.git/=========================================git remotegit remote -v //查看遠程主機的網址git remote show <主機名> //查看該主機的詳細信息git remote add <主機名> <網址> //添加遠程主機git remote rm <主機名> //刪除遠程主機git remote rename <原主機名> <新主機名> //重命名遠程主機

四、git pull 和 git push

$ git pull <遠程主機名> <遠程分支名>:<本地分支名>$ git push <遠程主機名> <本地分支名>:<遠程分支名> from to git pull origin master:master取回origin主機的master分支,與本地的master分支合併git push origin master:master推送本地的master分支,與origin主機的master分支合併git pull origin master如果遠程分支是與當前分支合併,則冒號後面的部分可以省略。git push origin master本地的master分支推送到origin主機的master分支。如果後者不存在,則會被新建git pull origin 本地的當前分支自動與對應的origin主機」追蹤分支」(remote-tracking branch)進行合併。追蹤分支 是 遠程的同名分支git push origin當前分支與遠程分支之間存在追蹤關係,則本地分支和遠程分支都可以省略git pull 當前分支自動與唯一一個追蹤分支進行合併git push當前分支只有一個追蹤分支,那麼主機名都可以省略

五、git merge 和 git rebase

git merge 用"pull"命令把"origin"分支上的修改拉下來並且和你的修改合併; 結果看起來就像一個新的"合併的提交"(merge commit)://使用 rebase 合併$ git checkout mywork$ git rebase origin這些命令會把你的"mywork"分支里的每個提交(commit)取消掉,並且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然後把"mywork"分支更新 到最新的"origin"分支,最後把保存的這些補丁應用到"mywork"分支上在rebase的過程中,也許會出現衝突(conflict). 在這種情況,Git會停止rebase並會讓你去解決 衝突;在解決完衝突後,用"git-add"命令去更新這些內容的索引(index), 然後,你無需執行 git-commit,只要執行:$ git rebase --continue這樣git會繼續應用(apply)餘下的補丁。在任何時候,你可以用--abort參數來終止rebase的行動,並且"mywork" 分支會回到rebase開始前的狀態。$ git rebase --abort

六、git log

git log --stat -n 5 // 簡單的列出了修改過的文件git log -p -n 5 // 詳細的列出修改過的文件,及提交文件的對比git log --graph // ASCII 字元串表示的簡單圖形,形象地展示了每個提交所在的分支及其分化衍合情況git log --all --decorate --graphgit log --pretty=oneline // 只顯示哈希值和提交說明git log --pretty=oneline/short/full/fuller/format:""(格式等)git log --name-only // 僅在提交信息後顯示已修改的文件清單git log --no-merges // 不顯示merge的log常用的命令:git log --name-status -n 5 path/filename --no-merges // 顯示新增、修改、刪除的文件清單(不包含merge的log)

七、git stash

保存工作現場git stash // 保存工作現場do some workgit pop // 返回工作現場git stash list //查看 stash 隊列git stash pop stash@{num} // num就是list中要恢復的工作現場編號// 使用pop命令恢復的工作現場,其對應的stash 在隊列中刪除git stash apply stash@{num} // num就是list中要恢復的工作現場編號// 使用apply命令恢復的工作現場,其對應的stash 在隊列中不刪除git stash clear // 情況 stash 隊列

八、分支合併

保存工作現場git stash // 保存工作現場do some workgit pop // 返回工作現場git stash list //查看 stash 隊列git stash pop stash@{num} // num就是list中要恢復的工作現場編號// 使用pop命令恢復的工作現場,其對應的stash 在隊列中刪除git stash apply stash@{num} // num就是list中要恢復的工作現場編號// 使用apply命令恢復的工作現場,其對應的stash 在隊列中不刪除git stash clear // 情況 stash 隊列

九、其他

$ git fetch <遠程主機名> <分支名>git fetch origin master取回origin主機的master分支

十、參考資料

http://www.ruanyifeng.com/blog/2014/06/git_remote.htmlhttp://gitbook.liuhui998.com/4_2.htmlhttp://www.tuicool.com/articles/A3Mn6f

推薦閱讀:

追女生4個必備技能, 實用可行, 讓她主動發起聊天
毛衣&襯衫:隨便來一件也能百搭實用,氣質翻倍!
風水必須簡單實用
形意雲錘打穴實用----燕俠
實用毛線編織DIY眼鏡盒 愛鉤包的姐妹也可以來看一看

TAG:記錄 | 實用 |