1. 程式人生 > >我所記錄的git命令(非常實用)

我所記錄的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 //從暫存區中恢復檔案(確保filename與branch名稱不同)

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 [
[email protected]
]example.com:path/to/repo.git/ ========================================= git remote git 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 --graph

git 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 --author='fanfan'  // 按作者篩選

git log --name-status -n 5 --grep='commit desc'  //按提交描述內容篩選

git log --name-status -n 5 -- path/file1 path/file2  //按提交的檔案篩選

git log --name-status -n 5 -S"hello world"  //按檔案內容篩選

git log --name-status -n 5 -G"xxx" //按檔案內容篩選(正則匹配)

常用的命令:

git log --name-status -n 5 --no-merges path/filename // 顯示新增、修改、刪除的檔案清單(不包含merge的log)
git log --name-status --skip=5 -n 5 --no-merges path/filename // 略過5條,從第6條開始取5條log

七、git stash

儲存工作現場

git stash     // 儲存工作現場

do some work

git pop // 返回工作現場



git stash list //檢視 stash 佇列

git stash pop [email protected]{num}  
// num就是list中要恢復的工作現場編號
// 使用pop命令恢復的工作現場,其對應的stash 在佇列中刪除

git stash apply [email protected]{num} 
// num就是list中要恢復的工作現場編號
// 使用apply命令恢復的工作現場,其對應的stash 在佇列中不刪除


git stash clear // 情況 stash 佇列

八、分支合併

分支合併:

1.保持工作目錄 clean
2.git checkout master  //切換到主幹
3.git merge subscribeQY  //在主幹上合併分支
4.如果有衝突就解決一下

master push前,在分支上merge master
然後,在master上,merge 分支,在 push

九、衝突解決

[Tips]:發生衝突時,你可以手工將需要合併的這個分支/版本merge到自己的分支上,解決衝突後提交,可避免此情況的發生.
[Tips]:你可以根據如下步驟解決衝突:
1、git fetch
2、git checkout releases/xxx (注:如本地還未檢出過釋出分支,請執行 git checkout -b releases/xxx origin/releases/xxx)
3、git pull
4、使用版本號合併,將出現的衝突一一解決
   git merge --no-ff b109eff1348a2fcf9a793deb81f3981d691e453c
5、git status 檢視衝突,並按命令提示進行修復
6、git add xxx  
   git commit xxx
7、git push origin releases/xx

十、其他

$ git fetch <遠端主機名> <分支名>

git fetch origin master
取回origin主機的master分支


git checkout . #本地所有修改的。沒有的提交的,都返回到原來的狀態
git stash #把所有沒有提交的修改暫存到stash裡面。可用git stash pop回覆。
git reset --hard HASH #返回到某個節點,不保留修改。
git reset --soft HASH #返回到某個節點。保留修改

十一、參考資料

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

相關推薦

記錄git命令非常實用

一、前言   記錄一下工作中常用到的git命令,只是簡單的筆記,歡迎大家交流...   [   順便問下園友們,怎麼感覺部落格園釋出的部落格搜尋有時都搜不到,後臺編輯能填的都填寫了,還是覺得搜尋排名不高?   相同的標題搜尋到的都是被抓取工具抓取的另一個平臺下的文章了...   ]   還是先貼張

xshell的快捷鍵非常實用

crt 現在 one last 次數 variable use shel arc 刪除ctrl + d 刪除光標所在位置上的字符相當於VIM裏x或者dlctrl + h 刪除光標所在位置前的字符相當於VIM裏hx或者dhctrl + k 刪除

ERP 國企集團管理創新指標群非常實用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python程式碼異常範圍檢查方法非常實用

對於python程式設計的程式碼,如果需要進行相應的檢查其中的錯誤或者異常,並且確定出現異常語句的大致範圍,主要有以下四種方法: 1、第一種方法:遇錯即止(告知原因) try    ......(所需檢查語句)   ......(出錯語句)   ......(後面的程式碼)%將不進行執行

資料庫優化設計非常實用

一、樹型關係的資料表        不少程式設計師在進行資料庫設計的時候都遇到過樹型關係的資料,例如常見的類別表,即一個大類,下面有若干個子類,某些子類又有子類這樣的情況。當類別不確定,使用者希望可以在任意類別下新增新的子類,或者刪除某個類別和其下的所有子類,而且預計以後其

debug 技巧 包括各種場景的debug方法非常實用

debug是ABAP開發裡面非常重要的一項技能,下面介紹一些小的技巧,可以提高debug的效率: 1、通過對SE16 debug修改某條資料(這個方法比較靠譜):(這個方法和SM30一樣只能修改非key值的欄位)      

PostgreSQL使用建議非常實用

一、命名規範 1. DB object: database, schema, table, view, index, function, trigger等名稱 (1) 建議使用小寫字母、數字、下劃線的組合 (2) 建議不使用雙引號即"包圍,除非必須包含大寫字母或空格等特殊字

Pycharm使用教程 非常實用

一,PyChram下載官網:http://www.jetbrains.com/pycharmWindows:http://www.jetbrains.com/pycharm/download/#section=windowsLinux:http://www.jetbrains

hibernate的多條件動態查詢非常實用

在hibernate中是支援多條件動態查詢的。這種問題是非常實用的。比如說你做一個專案要實現一個複合查詢。 例如有這麼一個介面: 那麼要實現這個查詢,對於使用者來說他的查詢條件可能不健全。有可能只填寫其中的1-3項。那麼要實現這個查詢。我們可以用hibernate的動態

Spring NoSuchBeanDefinitionException六大原因總結非常實用【新增第三方jar的類 作Service層的依賴失敗 因為此錯。xml定義“同名bean”解決】

=====給了我思路。【新增第三方jar的類 作Service層的依賴失敗 因為此錯。xml定義“同名bean”解決】======1. OverviewIn this article, we are discussing the Springorg.springframewo

[轉]xshell的快捷鍵非常實用

#c+l  清屏先 [email protected]:~>str1 str2 str3  #輸入三個單詞發現第一單詞需要大寫好按c+a跳到開頭按a+c [email protected]:~> Str1 str2 str3  #好現在單詞就變成了現在這個樣子,又發現第二個單

2. github創建 git倉庫,克隆,拉取和推送操作有的git命令前提是一定在當前項目目錄下

push mit 什麽 one alt class 所有 -m 註冊 步驟:   1.點擊小貓,回到初始頁面   2.點擊start a project,首先會出現一個驗證email地址(我們註冊的時候,有一個email輸入,進去郵箱驗證一下) 3.重新點擊sta

Git常用命令總結實用【轉】

轉自:https://www.linuxprobe.com/git-common-commands.html 本文由LinuxProbe.Com團隊成員逄增寶整理髮布,原文來自:Linux就這麼學。 導讀 Git是一款免費、開源的分散式版本控制系統,用於敏捷高效地

Git命令檢視倉庫歷史記錄

git log 命令 // 終端顯示 git log 命令的輸出結果 zhanghuabin-mac:course-git-blog-project zhanghuabin$ git log commit a3dc99a197c66ccb87e3f49055

git命令大全非常齊全

$ git init  // 初始化一個Git倉庫 $ git status   // 檢視倉庫的狀態 $ git add .   // 將所有修改新增到暫存區 $ git add *  // Ant風格新增修改 $ git add *Controller   // 將以C

git常用命令持續更新

git pull java com mit res mail dsa 切換 設置 1、設置用戶名和郵箱: git config --global user.name ""; git config --global user.email ""; git config --li

Shell記錄-Shell命令其他

時間設置 buffer idt 不顯示 secure 單個 包括 too 工作方式 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。 .命令格式 top [參數] Shell 2.命令功能 顯示當

git命令9: 常見問題cover

簡單 就刪除 轉變 當前 mit 文件內容 全部 out 遠程倉庫 轉載地址: https://blog.csdn.net/kkkkkxiaofei/article/details/41483039 情景1:多人協作之如何建立本地分支? 假若你已經clone了別人的倉庫並且

零基礎學習linux需掌握的簡單命令 第二周

linuxumask 003 目錄權限為774 文件為664 文件為奇數的時候計算結果默認在加上1 目錄 文件rwx rwx rwx 777 rw- rw- rw- 666-

零基礎學習linux需掌握的簡單命令 第一周

linux命令符後面是# 表示是超級管理員命令符後面是$ 表示是普通用戶tty 查看所在哪個終端[root@centos6 ~]# cat /etc/shells 查看當前系統所安裝的shell[root@centos6 ~]# echo $SHELL 查看當前使用的何種shellA=123$變量echo