1. 程式人生 > >Git 備忘清單

Git 備忘清單

我每天都在使用 Git ,但是很多命令如果不是經常使用是很難記住的,於是整理了以下Git 命令清單,方便需要的時候查詢。
持續更新中…

基礎配置命令

  • 檢視圖形介面
    gitk --all&
    
  • 顯示log資訊
    git log --author=name  #顯示某個作者的資訊
    git log --graph --oneline --decorate --all #圖形化顯示
    git log --pretty=oneline  # 單行顯示
    git log --name-status  #顯示修改檔案詳情
    git shortlog # 顯示按字母順序排序的人名列表,以及他們對應的提交說明
    git shortlog -s -n  # 只顯示每個開發者的 commit 數量
    git log --oneline --author="Paul Lewis" #單行顯示"Paul Lewis"的所有commit
    git show 5966b66 #顯示SHA=5966b66的commit資訊
    git log --grep=bug #顯示提到bug一詞的commit
    
  • 檢視隱藏目錄.git
    ls -ah
    
  • Git config:
    git config --global color.ui true #彩色命令列顯示
    git config format.pretty oneline #單行顯示
    
  • 建立SSH key
    ssh-keygen -t rsa -C "[email protected]"
    cat ~/.ssh/id_rsa.pub
    

Git 檔案狀態切換:

本地操作

  • 不想追蹤某個檔案:

    1. Add the name to .git\info\exclude
    2. Add the name to .gitignore
  • 將改動加到staging區 stage

    git add .   #Stage all
    git add .gitignore   #stage .gitignore
    
  • 將改動移除staging區 unstage

    git reset HEAD api.c
    

    Paste_Image.png

  • 刪除工作區的改動 discard

    git checkout -- api.c #discard changes in working directory
    

    Paste_Image.png

  • 刪除追蹤的檔案 untracked

    git rm --cached api.c 
    

    Paste_Image.png

  • 恢復誤刪的檔案

    git checkout -- api.c
    

    Paste_Image.png

git checkout 其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

  • 刪除 untracked files
    git clean -f -n  #檢視可以被刪除的untracked files
    git clean -f
    

分支及遠端操作

  • 推送到遠端

    git remote add origin [email protected]:
    git push -u origin master
    
  • 新建分支dev

    git checkout -b dev
    
  • 推送分支

    git push origin <branch> 
    
  • 刪除分支

    git checkout master
    git branch -d dev  
    
  • 刪除遠端分支

    git push origin --delete dev
    

版本切換

  • 退回之前的版本
    在Git中,用HEAD表示當前版本,上一個版本就是HEAD^, 上上一個版本就是HEAD^^,往上100個版本HEAD~100。

    git reset --hard HEAD^
    

    Paste_Image.png

  • 恢復刪除的版本

    git reflog
    git reset --hard b6e2045
    

    Paste_Image.png

    Paste_Image.png

合併改動Merge

  • fast forward merge
    git checkout master
    git merge dev
    
  • 禁用Fast forward
    git merge --no-ff -m "merge with no-ff" dev  
    

Submodule

  • 新增submodule
    git submodule add ssh://myrep.git
    
  • 刪除submodule
    git submodule deinit -f -- submodule_folder/
    git rm -f submodule_folder/
    

Patch

  • 從某一個commit 生成patch

    git format-patch -1 <sha> --stdout > specific_commit.patch
    
  • 從當前HEAD生成包含x個commit的patch

    git format-patch -x --stdout > patch-ddmmyy.patch
    # where -x means how many commits back from the current head and it has to be integer.
    
  • 檢查patch狀態

    git apply --stat fix_bug.patch
    git apply --check fix_bug.patch
    
  • 打patch

    git am --signoff < fix_bug.patch
    

其他命令

  • 暫存未完成的改動

    git stash
    git stash list # 檢視list
    git stash pop #恢復stash
    

    Paste_Image.png

  • 標籤

    git tag V1.0 f1e9cf9 #新增
    git tag -d V0.1  #刪除
    
  • 比較差異:

    git diff    #everything unstaged diffed to the last  commit
    git diff --cached  #everything staged diffed to the last commit
    git diff HEAD  #everything unstaged and staged diffed to the last commit
    
  • rebase 命令:

    git rebase -i HEAD~3 # 互動式地將 commit 變基到我們當前所在的 commit 向前三個的 commit
    git rebase origin/master # 在 master 後直接新增一個新版本,令提交歷史更簡潔
    

參考:

相關推薦

Git 清單

我每天都在使用 Git ,但是很多命令如果不是經常使用是很難記住的,於是整理了以下Git 命令清單,方便需要的時候查詢。 持續更新中… 基礎配置命令 檢視圖形介面gitk --all& 顯示log資訊git log --author=name #

git & ProGit筆記

windows 是我 amp -s use 使用 找到 nbsp 筆記 git configgit config xxxxx xxxx可以是 --global(使用的是~/.gitconfig) --system(據說在linux下面使用的是/etc/gitconf

git hub 操作步驟

title 終端 gen gmail fetch 新版本 ble 備忘 ber 我是在碼雲上申請了 github賬號。用法和官方的一樣,只不過碼雲可以設置私有項目。 ------------------------------------------------------

git命令

chan add {0} app list clas stash smi apply git log git status git stash list git status git add . git stash save ‘jsmind‘ git status gi

git命令整理

git命令 ant xxx over set data- pan jad 回滾 git命令整理備忘 參考https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

自動輸入Git密碼的小程式(僅做用)

開發中用到Git,我用的是TortoiseGit,經常需要輸入密碼,很煩人,就隨手寫了個檢測密碼視窗並自動輸入的程式。 (當然,也可以用生成自動驗證金鑰,不過我沒有服務端的許可權,沒辦法產生) 下面把程式碼貼下來備忘,其中有註釋部分沒搞明白,有誰知道為啥不行的告訴我一下啊!本人剛不勝感激

筆記 Git

初始化使用者(--global表示設定為全域性配置): git config [--global] user.name "Vince" git config [--global] user.email "[email protected]" 初始化倉庫: git init

Git常用命令整理

增刪查改+遠端 增: 初始化git倉庫: git init 設定使用者名稱和使用者郵箱: git config --global user.name "使用者名稱"

實用收藏Linux命令

屏幕 ssh 狀態 標準輸出 系統 play mkdir ger rdquo 系統操作 #使用shutdown命令馬上重啟系統[[email protected]/* */ ~]# shutdown –r now #使用shutdown命令馬上

cpan安裝perl module的方法和步驟(帖)

roo for lora pre permanent help base -i rmi 適用場景:不具備root權限且沒有sudo權限的普通用戶安裝perl module安裝步驟:1)刪除/.cpan/.lockrm -rf /home/users/.cpan/.lock2

linux

blog mage 技術分享 img src http image alt logs linux備忘

Python

class 安裝 ont 備忘 org 開源 ron 自己的 color Python 庫索引中包含了大量開源的庫,你可以在你自己的程序中使用它們。 要想了解如何安裝並使用這些庫,你可以使用 pip。Python備忘

ajax基礎------

user odi blog www action writer word nal urlencode 1:register.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"

[2017.5.29] 買書 挑戰程序設計競賽

nio com html 備忘 %d gda .html amp click http://product.dangdang.com/23272528.html?_utm_sem_id=231367&_ddclickunion=422-kw-4-%CD%BC%CA%

nginx發布靜態目錄

centos nginx 靜態目錄 發布靜態文件前陣子配一個靜態目錄,想當然的覺得相當簡單,不就是寫個目錄嗎。配完以後怎麽都不行,一直出404。找了一些文章,看來看去,我的配置是對的呀,這實在奇怪。今天中午吃飯時候突然想到,可能是因為目錄多寫了一級,飯後一試,果然。原先配置文件裏是這樣寫的:server /

awk

.... 其中 改變 tor 程序設計語言 次數 state 對數 http awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進

inode

自動 生成 nbsp 12g 隱藏 日期 device 源文件 100% 文件名 -> inode -> device block 轉自:http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

Laravel之項(不定期更新)

自定義字段 ida 不定 blog red color request validate 打印sql 1.自定義字段驗證錯誤信息 $this->validate($request, [‘name‘ => ‘required|max:5

JQuery

checked can 獲取值 ont tor undefined blog 及其 節點 一、.on() .bind() .delegate() .live()的區別   jquery 1.7之後建議綁定事件用 .on( ),移除事件處理函數用 .off( ) $(

MySQL點(下)

update 虛擬 主鍵 ble str 內聯 完全 語句 innodb 聯結表   創建聯結  FROM 表1,表2    與內連接作用相同類似;如果失去WHERE子句,會出現笛卡爾積現象   內聯結   INNER JOIN     高級聯結   自聯結   例子: