Git 經常使用命令集錦

文檔已儲存在 GitHub,這裏再也不更新校訂,請原諒。

遠程倉庫相關命令

克隆遠程倉庫:git clone git://github.com/jquery/jquery.git
查看遠程倉庫:git remote -v
添加遠程倉庫:git remote add [name] [url]
刪除遠程倉庫:git remote rm [name]
修改遠程倉庫:git remote set-url --push [remoteName] [newUrl]
拉取遠程倉庫:git pull [remoteName] [remoteBranchName]:[localBranchName]
推送遠程倉庫:git push [remoteName] [localBranchName]:[remoteBranchName]

分支命令(branch)

查看本地分支:git branch
查看遠程分支:git branch -r
查看全部分支:git branch -a
建立本地分支:git branch [name]         
    // 注意新分支建立後不會自動切換爲當前分支
切換分支:git checkout [branchName]
建立新分支並當即切換到新分支:git checkout -b [name]
合併分支:git merge [branchName]       
    // 將名稱爲[branchName]的分支合併到當前分支
將本地分支push到遠程:git push [remoteName] [localBranchName]:[remoteBranchName]    
    // 若是遠程分支不存在,則自動建立遠程分支
刪除本地分支:git branch -d [branchName]      
    // [-d]選項只能刪除已經參與了合併的分支,對於未有合併的分支是沒法刪除的。若是想強制刪除一個分支,可使用 [-D] 選項
刪除遠程分支:
在Git v1.7.0 以後,可使用這種語法刪除遠程分支:git push --delete origin branchName
不然,可使用這種語法,推送一個空分支到遠程分支,其實就至關於刪除遠程分支:git push origin :[remoteBranchName]

一、若是本地分支和遠程分支存在對應關係,則能夠直接在分支下使用 git pushgit pull 作相應操做。html

二、若是本地分支和遠程分支不存在對應關係,則能夠以下設置對應關係。node

若是是遠程建立的分支,pull / fetch 遠程信息到本地,分支間是存在對應關係的。

若是是本地新建分支提交到遠程上,是不會存在對應關係的。jquery

// 先提交本地建立的分支到遠程
git push origin test:test

// 再創建關聯
語法糖:git branch --set-upstream-to [remoteName]/[remoteBranch] [localBranch]
示例:git branch --set-upstream-to origin/test test

三、查看遠程倉庫分支與本地倉庫分支的對應關係(pull, push),如以 origin 倉庫爲例:git

亦顯示遠程庫 origin 裏的資源github

git remote show origin

四、本地的某個分支提交到遠程倉庫某個分支,以本地 test 分支爲例,以下:shell

git push [remoteName] test:master  // 提交本地 test 分支做爲遠程的 master 分支
git push [remoteName] test:test    // 提交本地 test 分支做爲遠程的 test 分支

五、將代碼提交到多個不一樣倉庫的不一樣分支: https://www.v2ex.com/t/95460緩存

git remote add github [url]
git remote add gitcafe [url]

git push github master:master
git push gitcafe master:cafe-pages

回撤命令(reset)

針對將已提交到版本庫或緩存區的文件恢復到以前的某個版本。編輯器

回撤命令模板:git reset [--param] [commit id]
回撤到指定版本:git reset --hard 9ca489438651f44cf65366e3bfab09527c8235ae 【日誌上的commit id】
回撤到上1個版本:git reset --hard HEAD^
回撤到上2個版本:git reset --hard HEAD^^
回撤到上10個版本:git reset --hard HEAD~10
回撤到上0個版本:git reset --hard HEAD
    // 即本地倉庫最新的版本
回撤到遠程的上0個版本: git reset –-hard [remoteName]/[branchName]
    // 即遠程倉庫最新的版本,如:git reset –-hard origin/master

回撤參數解釋:
--mixed               reset HEAD and index    默認選項。版本庫和緩存區都滾到指定的版本,但工做目錄不受影響
--soft                reset only HEAD        僅僅回撤版本庫,緩存區和工做目錄都不會被改變
--hard                reset HEAD, index and working tree        全部文件都不會保留
--merge               reset HEAD, index and working tree        合併指定版本與如今暫存區與工做區的文件
--keep                reset HEAD but keep local changes

回撤命令(checkout)

針對將已修改的工做區文件,但還未提交到版本庫或緩存區時,恢復到未修改的狀態。

( 相似 WebStorm 編輯器裏的 revert,這裏的 revert 還能夠回撤已經提交到緩存區的文件)工具

撤銷未提交的某個修改:git checkout dev/filename.js
撤銷全部未提交的修改:git checkout .

配置命令(config)

查看當前項目的配置信息:git config --list
設置當前項目做者名稱:git config user.name [userName]
設置當前項目做者郵箱:git config user.email [email]
設置別名,簡寫操做:git config --global alias.[aliasName] [commandName]
    // 如:git config --global alias.st status, 這樣,之前用 git status 查看文件狀態,如今就能夠用 git st。

本地配置路徑: [當前項目]/.git/config
全局配置路徑: [用戶]/.gitconfig
配置能夠直接編輯 .gitconfig 文件,更方便,以下:
    [user]
        name = Barrior
        email = barrior@qq.com
    [alias]
        st = status
        co = checkout
        br = branch
        ci = commit

差別對比命令(diff)

這個應該用工具看才更直觀。字體

查看工做區與版本之間的差別:git diff [file]
查看緩存區與版本之間的差別:git diff --cached [file] 或 git diff --staged [file]
    // 若是沒有file,則列出全部文件的差別

其餘命令

查看當前狀態:git status
提交某個文件(工做區)到緩存區:git add [path]
    // [path]能夠是文件也能夠是目錄
提交全部文件到緩存區:git add .
提交緩存區文件到版本庫:git commit -m 'message'    
直接提交工做區文件到版本庫:git commit -am 'message'        
    // [-a]表明add,注:這個命令會提交全部修改的文件,但不會提交新建的文件

查看提交日誌:git log
查看指定文件的提交歷史:git log -p [file]

將文件push到一個臨時空間:git stash push
將文件從臨時空間pop下來:git stash pop

文件忽略(.gitignore)

.gitignore 配置文件用於配置不須要加入版本管理的文件,可在 Git Bash 中使用shell命令 touch .gitignore 建立這個文件

一、配置語法:

  • 以井號 「#」 開頭的行視爲註釋。

  • 以斜槓 「/」 開頭表示目錄。

  • 以星號 「*」 通配多個字符。

  • 以問號 「?」 通配單個字符。

  • 以方括號 「[]」 包含單個字符的匹配列表。

  • 以感嘆號 「!」 表示不忽略先前模式排除的文件或目錄,若是排除該文件的父目錄,則沒法從新包括該文件。

二、示例:

規則:test/*
說明:忽略 test 目錄下的所有內容;注意,不論是根目錄下的 /test/ 目錄,仍是某個子目錄 /child/test/ 目錄,都會被忽略

規則:/test/*
說明:忽略根目錄下的 /test/ 目錄的所有內容

規則:test
說明:忽略 test 文件和 test 目錄

規則:test/
說明:只忽略 test 目錄,不忽略 test 文件

規則:test
     !test/
說明:只忽略 test 文件,不忽略 test 目錄

規則:/test
說明:只忽略當前目錄下的 test 文件和目錄,子目錄的 test 不在忽略範圍內

規則:*.[oa]
說明:忽略全部以 .o 或 .a 結束的文件

規則:**/node_modules/
說明:忽略全部文件夾下命名爲 node_modules 的文件夾,和直接寫 node_modules/ 同樣

三、示例:

規則:
    /*
    !/test
    /test/*
    !/test/inner.js

說明:忽略所有內容,可是不忽略根目錄下的 /test 目錄和 /test/inner.js 文件

Git終端偏好設置

  1. 在 Git Bash 命令行終端,右鍵選擇 Options, 裏面有不少顯示設置,如設置默認終端尺寸,透明度,字體大小等,可讓視覺更舒服。

  2. 設置完畢後,在 [用戶] 文件夾下會生成一個 .minttyrc 文件,保存文件到雲上,之後重裝系統或其餘電腦用,直接黏貼到機子 [用戶] 文件夾下就能夠用了。

圖片描述

參考:

Git 經常使用命令大全:http://blog.csdn.net/dengsilinming/article/details/8000622

Git 官網:https://git-scm.com/book/zh/v2

http://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html

http://blog.csdn.net/benkaoya/article/details/7932370

其餘資源

相關文章
相關標籤/搜索