git常用命令

來源:互聯網
上載者:User

標籤:style   blog   http   java   color   使用   

1、綜述

  git是分支開發,主幹發布,建立立的分支最好是基本master拉出去的。

2、branch

  git branch  -a #參考當前所有分支,前面有*標識的表示當前所在的分支

  git branch p1 origin/master 
  git branch dev  origin/master #建立dev分支,該分支是基於 origin 的遠程分支 master

  git checkout  dev#切換到dev分支

  git branch -d dev#刪除dev分支

  git push --set-upstream origin dev #將建立的dev分支push到遠端dev分支上

3、checkout和reset

  reset

    git reset HEAD <file>..." 撤出暫存區

    git reset HEAD -- filename  #將檔案filename的改動撤出暫存區,暫存區中其他檔案不該變.相當於git add filename的反向操作

    git reset --hard <commit> #替換引用的指向.引用指向新的提交ID(我的理解就是回到指定的曆史版本資訊)

  checkout

    git checkout -- filename
      用暫存區中的filename檔案來覆蓋工作區中的filename檔案.相當於取消自上次執行git add filename以來(如果執行過)的本地修改
    git checkout -- .或者git checkout .
      會取消本地所有修改,相當於用暫存區的所有檔案直接覆蓋本地檔案,
    git checkout 27d1bfd29b,回到這個提交點,git checkout dev,又會到最新的提交,而git  reset是不可以的。
    git checkout -- filename #用暫存區中的filename檔案來覆蓋工作區中的filename檔案.相當於取消自上次執行git add filename以來(如果執行過)的本地修改

    git checkout  HEAD <commit> #取消本地所有修改,相當於用暫存區的所有檔案直接覆蓋本地檔案

  區別

    git checkout 27d1bfd29b,回到這個提交點,git checkout dev,又會到最新的提交,而git  reset是不可以的。

4、log、reflog、cherr-pick

  git log

    執行過git reset --hard HEAD~1  刪除之前的commit提交資訊。git log只查看到之前的git commit提交版本資訊,恢複該提交點的commit看不到

  git reflog 

    git reflog可以查看所有的commit提交資訊。可以通過git reset --hard <commit>進行恢複之前誤恢複的操作

  example    假設有三個commit, git status:    commit3: add test3.c    commit2: add test2.c    commit1: add test1.c    類比丟失commit記錄的情況,執行git reset --hard HEAD~1,刪除了commit3,同時test3.c檔案已經在working tree裡看不到了,如果要恢複commit3,就要使用git reflog和git cherry-pick.  git reflog    502dd0f [email protected]{0}: HEAD~1: updating HEAD    147b3b5 [email protected]{1}: commit: test3    502dd0f [email protected]{2}: commit: test2    0692c03 [email protected]{3}: commit (initial): test1    [email protected]{0}: HEAD~1: updating HEAD    加粗的即是被刪除了的 commit3,運行git log則沒有這一行記錄,可以使用git reset --hard 502dd0f 將紅色記錄刪除,恢複cmmit3,需要用git cherry-pick.    
    git cherry-pick 147b3b5 #恢複到test3提交點    運行git log後可以看到:    commit3: add test3.c    commit2: add test2.c    commit1: add test1.c
5、遠程倉庫          git push origin dev 想把當前的代碼push到遠端的dev分支上,可是遇到奇怪的錯誤,可能因為沒有執行git pull origin master      

    執行git pull origin master後執行git push origin dev還是會報錯,可以繼續這樣解決:

    git pull --rebase origin dev  #rebase  分支衍合,待研究#

6、commit

    git commit --amend   #可以更改上一個提交的注釋

7、config alias

        git config --global alias.co checkout
        git config --global alias.br branch
        git config --global alias.ci commit
        git config --global alias.st status

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.