1. 程式人生 > >Git經常使用命令總結

Git經常使用命令總結

lob bar har github 設置 日誌 origin 解決沖突 rec

1、基礎

  • git config --global user.name "Your Name"設置你的倉庫username(用於標識提交者)
  • git config --global user.email "[email protected]"設置你的倉庫郵箱(用於標識提交者)
  • git init 初始化一個git倉庫
  • git add --all 加入全部更改的文件
  • git add filename1 當然能夠指定加入filename1
  • git commit -m "commit message" 加入更改的信息,必需要有。不然報錯,不建議不加。
  • git status 查看git當前狀態
  • git diff filename1 查看filename1究竟改動了哪些內容
  • git log 查看近期的提交日誌
  • git log --pretty=oneline 單行顯示提交日誌
  • git reset --hard commitID 利用git log得到的commitID返回版本號
  • git reset --hard HEAD^回到上一個版本號
  • git reflog 查看命令的歷史,能夠找到git log看不到的commitID,由於git log僅僅顯示當前的提交日誌,假設你提交了一次。退回版本號後又懊悔了,就能查看上次提交的commitID
  • git checkout -- filename1 利用版本號庫中的版本號替換工作區中的文件。功能有2:
    • 撤銷文件改動,分兩種情況:
      • 撤銷工作區中的改動(沒有使用git add
        命令加入到暫存區)
      • 撤銷暫存區中的改動(加入到了暫存區又做了改動)
    • 找回刪除的文件
      • 工作區中文件誤刪了。能夠通過此命令從版本號庫中找回
  • git reset HEAD filename1 撤銷add,回到工作區
  • git rm filename1 刪除文件
  • git remote add origin https://github.com/pengloo53/learngit.git 將本地庫關聯到github遠程庫上
  • git push -u origin master 第一次推送的時候要加上-u參數,能夠將本地庫的master分支與遠程庫的master分支關聯起來;下次提交就不須要加-u了。

  • git clone https://github.com/pengloo53/learngit.git
    克隆遠程庫到本地

2、分支管理

  • git checkout -b dev創建dev分支並切換到dev。

    相當於git branch devgit checkout dev兩條命令。

  • git branch查看當前分支
  • git merge dev合並指定分支到當前分支,如,你如今master分支,那麽運行命令就將dev分支合並到了master分支上。
  • git branch -d dev刪除dev分支
  • git log --graph --pretty=oneline --abbrev-commit查看分支合並圖
  • git merge --no-ff -m "merge with no-ff" dev禁用「Fast forward」。也就是保留分支的相關信息。
  • git stash 將工作區現場儲藏起來。等以後恢復後繼續工作。

    通經常使用於處理更為著急的任務時,比如:bug。

  • git stash list 查看保存的工作現場
  • git stash apply恢復工作現場
  • git stash drop 刪除stash內容
  • git stash pop 恢復的同一時候直接刪除stash內容
  • git stash apply stash@{0} 恢復指定的工作現場,當你保存了不僅僅一份工作現場時。

  • git branch -D feature-vulcan 強行刪除分支。

    用於不須要合並,就地刪除的情況。

  • git remote 查看遠程庫的信息,一般返回origin。
  • git remote -v 查看遠程庫的具體信息。
  • git push origin master 將本地master分支推送到遠程master分支。
    • master分支為主分支,因此要時刻與遠程同步。
    • dev分支為開發分支,團隊成員都須要在上面工作。所以也須要與遠程同步;
    • bug分支僅僅用於在本地修復bug,沒有必要推送到遠程;
    • feature新功能分支是否推送到遠程,取決於你是否和其它人合作在上面開發。

  • git clone https://github.com/pengloo53/learngit.git 將遠程庫克隆到本地,默認僅僅能看到master分支。
  • git checkout -b dev origin/dev 創建遠程dev分支到本地
  • git pull 將遠程分支的最新內容抓取下來。

  • git branch --set-upstream dev origin/dev將本地dev分支與遠程dev分支之間建立鏈接。

多人協作工作模式
  1. 首先,能夠試圖用git push origin branch-name推送自己的改動。
  2. 假設推送失敗,則由於遠程分支比你的本地更新,須要先用git pull試圖合並(假設git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建。用命令git branch --set-upstream branch-name origin/branch-name);
  3. 假設合並有沖突。則解決沖突。並在本地提交;
  4. 沒有沖突或者解決掉沖突後,再用git push origin branch-name推送就能成功。

3、標簽管理

  • git tag v1.0 給當前分支打上標簽
  • git tag 查看全部的標簽,按時間順序列出。

  • git log --pretty=oneline --abbrev-commit縮略commitID並單行顯示提交信息
  • git tag v0.9 commitID通過上一條命令查看commitID,然後打上標簽。

    用於忘記打標簽的情況。由於標簽事實上就是僅僅想某個commitID的指針,默認情況下,標簽打在最新的提交上。

  • git show v0.9 查看標簽信息。
  • git tag -a v0.1 -m "version 0.1 released" commitID創建帶有說明的標簽,-a指定標簽名,-m指定說明文字。

  • git tag -d v0.1 刪除標簽v0.1
  • git push origin v1.0 推送標簽1.0到遠程
  • git push origin --tags 推送全部的標簽到遠程
  • git push origin :refs/tags/v0.9 刪除遠程標簽,可是前提是要先在本地刪除相應標簽。

4、自己定義Git

  • git config --global color.ui true 讓Git顯示顏色
  • .gitignore在這個文件中編輯你要忽略的文件。並提交到Git中,就能夠忽略特殊文件的檢查。如將*.db寫入.gitignore文件中,將忽略全部db文件。

    能夠參考github收集的全部.gitignore

  • git config --global alias.st status將status的別名設置成st。那麽git st=git status

  • git config --global alias.unstage ‘reset HEAD‘ 那麽git reset HEAD filename=git unstage filename
  • git config --global alias.last ‘log -1‘git last就顯示最後一次提交了。

5、搭建Gitserver

  1. sudo apt-get install git 安裝Git;
  2. sudo adduser git 加入Git用戶;
  3. sudo git init --bare sample.git 初始化git倉庫。
  4. sudo chown -R git:git sample.git改動倉庫的所屬用戶為git;
  5. 將git用戶的信息git:x:1001:1001:,,,:/home/git:/bin/bash改成git:x:1001:1001:,,,:/home/git:/bin/git-shell,為了禁用shell登錄。
  6. git clone [email protected]:/director/sample.git 克隆Git服務器上的倉庫

Git經常使用命令總結