天天看點

git操作文檔速查

個人整理的一個git操作指令速查:

1.git安裝完成後,在指令行輸入:

git config --global user.name "Your Name"
     git config --global user.email "[email protected]

2.建立版本庫:

mkdir    codedir  
    cd       codedir
    pwd 
           

3.初始化版本庫

git    init  
    git    add     readme.txt         //  git add file2.txt file3.txt     添加多個檔案
    git    comment    -m    “write     logs”    // git commit -m "add 3 files”    送出兩個檔案
           

4.檢視倉庫狀态

git    status 
           

5.檢視檔案差異

git    diff    readme.txt
           

6.檢視曆史記錄

git    log 
    git     log     --pretty=oneline
           

6.回退到上一個版本

git reset --hard HEAD^      // 回退到上一個上一個版本
    git reset --hard 3628164    //  回退到指定版本    數字串是版本号的前幾位
           

7.檢視曆史指令

git    reflog     
           

8.檢視工作區和版本庫裡面最新版本的差別

git     diff     HEAD     --readme.txt 
           

9.丢棄工作區的修改

git    checkout     —readme.txt    // git checkout -- file指令中的--很重要,沒有--,就變成了“切換到另一個分支”的指令
           

10.把暫存區的修改撤銷掉(unstage),重新放回工作區

git     reset     HEAD     readme.txt
    git     checkout    --readme.txt    //  丢棄工作區
           

11.确實要從版本庫中删除該檔案

git     rm     test.txt
    git     commit     -m     "remove test.txt"
    git     checkout     --test.txt        // 把誤删的檔案恢複到最新版本
           

12.遠端倉庫

ssh-keygen -t rsa -C "[email protected]”      //  建立SSH Key
           

13.添加遠端倉庫

git     remote     add     origin     [email protected]:michaelliao/learngit.git        //    遠端庫的名字就是origin
           

14.把本地庫的所有内容推送到遠端庫上

git     push     -u     origin     master        //    first   push  
    git     push     origin     master                //   after   first   
           

15.遠端庫克隆

git     clone     [email protected]:michaelliao/gitskills.git
           

16.建立dev分支,然後切換到dev分支

git     checkout     -b     dev
           

17.建立dev分支,然後切換到dev分支

git     branch     dev
    git     checkout     dev
           

18.檢視目前分支(本地)

git     branch           //檢視本地分枝
    git     branch   -r     // 檢視遠端分支
           

19.把dev分支的工作成果合并到master分支上

git     checkout     master    //  切換回master分支
    git     merge     dev      // git     merge指令用于合并指定分支到目前分支
           

20.删除dev分支

git     branch     -d     dev
           

21.當Git無法自動合并分支時,就必須首先解決沖突。解決沖突後,再送出,合并完成

git     log    --graph    //  看到分支合并圖
    git     log     --graph     --pretty=oneline     --abbrev-commit
           

22.準備合并dev分支,請注意--no-ff參數,表示禁用Fast forward

git     merge     --no-ff     -m     "merge with no-ff”     dev
    git     log     --graph     --pretty=oneline     --abbrev-commit   // 合并分支時,加上--no-ff參數就可以用普通模式合并,合并後的曆史有分支,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
           

23.Git還提供了一個stash功能,可以把目前工作現場“儲藏”起來,等以後恢複現場後繼續工作:

git     stash
    git     stash     list    //檢視
    (1)   git     stash     pop  //  恢複的同時把stash内容也删了
    (2)   git stash apply   //  恢複
           git stash drop   //   删除
           

24.然後恢複指定的stash,用指令

git     stash     apply     stash@{0}
           

25.強行删除分支

git     branch     -D     feature-vulcan
           

26.要檢視遠端庫的資訊,

git     remote
     git     remote     -v
           

27.推送分支

git     push     origin     master    //推送主分支
    git     push     origin     dev        //推送開發分支

    注意:
        master分支是主分支,是以要時刻與遠端同步;
        dev分支是開發分支,團隊所有成員都需要在上面工作,是以也需要與遠端同步;
                bug分支隻用于在本地修複bug,就沒必要推到遠端了,除非老闆要看看你每周到底修複了幾個bug;
                feature分支是否推到遠端,取決于你是否和你的小夥伴合作在上面開發。
           

28.抓取分支

多人協作的工作模式通常是這樣:
           
  1. 首先,可以試圖用

    git push origin branch-name

推送自己的修改;

  1. 如果推送失敗,則因為遠端分支比你的本地更新,需要先用

    git pull

試圖合并;

  1. 如果合并有沖突,則解決沖突,并在本地送出;
  2. 沒有沖突或者解決掉沖突後,再用

    推送就能成功!

    如果git pull提示“no tracking information”,則說明本地分支和遠端分支的連結關系沒有建立,用指令

    git branch --set-upstream branch-name origin/branch-name。

這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

  • 檢視遠端庫資訊,使用

    git remote -v;

  • 本地建立的分支如果不推送到遠端,對其他人就是不可見的;
  • 從本地推送分支,使用

    git push origin branch-name,

    如果推送失敗,先用

    抓取遠端的新送出;

  • 在本地建立和遠端分支對應的分支,使用

    git checkout -b branch-name origin/branch-nama

    本地和遠端分支的名稱最好一緻;

  • 建立本地分支和遠端分支的關聯,使用

    git branch --set-upstream branch-name origin/branch-name

  • 從遠端抓取分支,使用

    如果有沖突,要先處理沖突。

29.打一個新标簽

git     tag     v1.0
           

30.檢視所有标簽

git     tag
           

31.指定版本号打标簽

git     tag     v0.9     6224937
           

32.檢視标簽資訊

git     show     v0.9
           

33.建立帶有說明的标簽,用-a指定标簽名,-m指定說明文字

git     tag     -a     v0.1     -m     "version 0.1 released”     3628164
           

34.可以通過-s用私鑰簽名一個标簽

git     tag     -s     v0.2     -m     "signed version 0.2 released”     fec145a
           

35.删除标簽

git     tag     -d     v0.1
           

36.推送某個标簽到遠端

git     push     origin     v1.0
           

37.一次性推送全部尚未推送到遠端的本地标簽

git     push     origin     —tags
           

38.删除遠端标簽就麻煩一點,先從本地删除,然後,從遠端删除

git     tag     -d     v0.9
    git     push     origin     :refs/tags/v0.9
           

39.讓Git顯示顔色,會讓指令輸出看起來更醒目

git     config     --global     color.ui     true
           

40.确實想添加該檔案,可以用-f強制添加到Git

git     add     -f     App.class
    git     check-ignore     -v     App.class    // 檢視gitignore
    忽略某些檔案時,需要編寫.gitignore;
    .gitignore檔案本身要放到版本庫裡,并且可以對.gitignore做版本管理!
           

41.設定指令别名

git     config     --global     alias.st     status
    git     config     --global     alias.unstage     'reset HEAD’
    git     config     --global     alias.last     'log -1’
    git     config     --global     alias.lg     "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”
           

42.每個倉庫的Git配置檔案都放在.git/config檔案中

cat     .git/config       # 别名就在[alias]後面,要删除别名,直接把對應的行删掉即可
           

43.目前使用者的Git配置檔案放在使用者主目錄下的一個隐藏檔案.gitconfig中

cat      .gitconfig
           

44.搭建Git伺服器

(1)    sudo     apt-get     install     git      #安裝git
    (2)    sudo     adduser     git                    #建立一個git使用者,用來運作git服務
    (3)    sudo     git     init     --bare     sample.git          #先標明一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入指令
    (4)    sudo     chown     -R     git:git     sample.git     #改owner
    (5)    禁用shell登入:
            出于安全考慮,第二步建立的git使用者不允許登入shell,這可以通過編輯/etc/passwd檔案完成。找到類似下面的一行:

    git:x:1001:1001:,,,:/home/git:/bin/bash
            改為:

    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
            這樣,git使用者可以正常通過ssh使用git,但無法登入shell,因為我們為git使用者指定的git-shell每次一登入就自動退出。
    (6)    克隆遠端倉庫
            
            git clone git@server:/srv/sample.git