天天看點

Git常用指令

這篇文章主要是為了自己能快速翻找Git指令,不做具體介紹,想學習Git怎麼用,請移步 廖雪峰的《Git教程》 。這篇教程淺顯易懂,花個幾小時就能懂,上手非常快的。

Git配置:

//配置使用者名
    $ git config --global user.name "Your Name"

    //配置Email位址
    $ git config --global user.email "[email protected]"           

注意:git config指令的–global參數,表示你這台機器上所有的Git倉庫都會使用這個配置

下面是一些非必需的配置,看個人喜好。

//配置顯示顔色
    $ git config --global color.ui true

    //配置别名(非必須,可忽略)
    $ git config --global alias.st status 
        //将status配置為st = $ git status => $ git st
    $ git config --global alias.co checkout
    $ git config --global alias.ci commit
    $ git config --global alias.br branch
    $ git config --global alias.unstage 'reset HEAD' 
        //$ git reset HEAD file => $ git unstage file
    $ git config --global alias.last 'log -1'
        //顯示最後一次送出資訊 $ git last           

初始化/添加/送出:

//初始化Git倉庫
    $ git init

    //将檔案添加到倉庫
    $ git add <file>
    $ git add mx.txt

    //将檔案送出到倉庫
    $ git commit -m "送出描述"           

檢視狀态/曆史/對比:

//檢視倉庫目前狀态
    $ git status

    //檢視修改内容,對比
    $ git diff

    //檢視工作區和版本庫最新版本差別
    $ git diff HEAD -- mx.txt

    //顯示最近到最遠的送出日志,送出曆史
    $ git log
    $ git log --pretty=oneline

    //檢視分支合并情況
    $ git log --graph
    $ git log --graph --pretty=oneline --abbrev-commit

    //檢視指令操作曆史記錄
    $ git reflog           

回退/撤銷/删除:

//回退上一個版本
    $ git reset --hard HEAD^
        //上一個版本HEAD^
        //上上一個版本HEAD^^
        //上100個版本HEAD~100
        //HEAD指目前版本

    //回退某個指定版本
    $ git reset --hard <commit_id>
    $ git reset --hard 3628164
        //3628164 commit id,版本号可以不寫全,能找到就可以

    //把暫存區的修改回退到工作區
    $ git reset HEAD <file>

    //撤銷工作區檔案修改到最近一次commit或add
    $ git checkout -- <file>
    $ git checkout -- mx.txt

    //從版本庫中删除檔案
    $ git rm <file>
    $ git rm mx.txt           

遠端倉庫:

//本地倉庫和遠端倉庫關聯(GitHub倉庫)
    $ git remote add origin git@server-name:path/repo-name.git
    $ git remote add origin [email protected]:github使用者名/github倉庫
    $ git remote add origin [email protected]:mingsixue/mxue.git
        //origin 遠端倉庫名字,Git預設叫法

    //檢視遠端倉庫資訊
    $ git remote

    //檢視遠端倉庫更詳細資訊
    $ git remote -v

    //把本地倉庫内容推送到遠端倉庫
    $ git push -u origin master
    $ git push origin <branch_name>
    $ git push origin master
        //-u 參數會把本地master分支和遠端master分支關聯起來

    //把遠端倉庫内容拉到本地倉庫
    $ git pull

    //指定本地dev分支和遠端origin/dev分支連結
    $ git branch --set-upstream <branch_name> origin/<branch_name>
    $ git branch --set-upstream dev origin/dev

    //從遠端倉庫克隆
        //SSH方式
        $ git clone [email protected]:mingsixue/mxue.git
        //HTTPS方式
        $ git clone https://github.com/mingsixue/mxue.git           

分支管理:

//建立新的分支
    $ git branch <branch_name>
    $ git branch dev

    //建立新分支并切換
    $ git checkout -b <branch_name>
    $ git checkout -b dev
        //-b建立分支并切換,相當于下面指令
        //$ git branch dev
        //$ git checkout dev

    //切換分支
    $ git checkout <branch_name>
    $ git checkout dev

    //檢視目前分支
    $ git branch

    //把dev分支合并到master,快進模式Fast-forward,删除分支後會丢掉分支資訊
    $ git merge <branch_name>
    $ git merge dev

    $ git merge --no-ff -m "送出描述" dev
        //--no-ff表示禁用Fast-forward,普通合并模式,會建立一個新的commit

    //删除分支
    $ git branch -d <branch_name>
    $ git branch -d dev

    //強行删除分支
    $ git branch -D <branch_name>
    $ git branch -D dev

    //儲存工作現場
    $ git stash

    //檢視儲存的工作現場
    $ git stash list

    //恢複儲存的工作現場内容
    $ git stash apply
    $ git stash apply stash@{0}

    //删除儲存的工作現場
    $ git stash drop

    //恢複并删除工作現場
    $ git stash pop
        //相當于上面兩條指令           

标簽:

//建立标簽
    $ git tag <tag_name>
    $ git tag v1.0
        //預設标簽打在最新的commit上

    //建立指定commit id的标簽
    $ git tag <tag_name> <commit_id>
    $ git tag v0.9 6224937

    //建立帶說明的标簽
    $ git tag -a <tag_name> -m "标簽描述" <commit_id>
    $ git tag -a v0.1 -m "标簽描述"
    $ git tag -a v0.1 -m "标簽描述" 3628164

    //檢視所有标簽
    $ git tag

    //檢視标簽資訊
    $ git show <tag_name>
    $ git show v0.9

    //删除标簽
    $ git tag -d <tag_name>
    $ git tag -d v0.9

    //推送标簽到遠端倉庫
    $ git push origin <tag_name>
    $ git push origin v0.9

    //一次性推送标簽到遠端倉庫
    $ git push origin --tags

    //删除遠端倉庫标簽
    $ git push origin :refs/tags/<tag_name>
    $ git push origin :refs/tags/v0.9
        //本地要先删除标簽           

忽略特殊檔案

在Git工作區的根目錄建立 .gitignore 檔案,把要忽略的檔案名寫進去,一行一個,支援 * 比對。寫完後送出到Git。

具體怎麼忽略,看這裡

//檢視檔案被哪條規則忽略
    $ git check-ignore -v <file>

    //強制添加檔案
    $ git add -f <file>           

指令行:

一些常用的指令行指令。

//建立空目錄
    $ makir <dir_name>
    $ mkdir mxue

    //進入mxue目錄
    $ cd <dir_name>
    $ cd mxue

    //顯示目前目錄路徑
    $ pwd

    //檢視隐藏目錄
    $ ls -ah

    //檢視檔案内容
    $ cat <file>
    $ cat mx.txt

    //删除檔案
    $ rm <file>
    $ rm mx.txt           

git錯誤:

錯誤:fatal: refusing to merge unrelated histories

$ git pull origin master --allow-unrelated-histories           

參考文章:

git無法pull倉庫refusing to merge unrelated histories

錯誤:failed to push some refs to ‘[email protected]:mingsixue/Chrome-Plugin.git’

$ git pull --rebase origin master           

出現錯誤的主要原因是github中的README.md檔案不在本地代碼目錄中

如何解決failed to push some refs to git http://blog.mingsixue.com/it/git-command-line.html