Git常用命令

211 阅读3分钟

Git是一個分佈式版本控制系統

常用命令

  • 首次運行Git需配置姓名郵箱

    $ git config --global user.name "Your Name"  
    $ git config --global user.email "email@example.com"
    

    git config命令的--global參數表示該臺機器上所有的倉庫都會使用這個配置

  • 創建倉庫

    $ mkdir learnGit #創建learnGit目錄
    $ cd learnGit #進入learnGit目錄
    $ git init #將當前目錄初始化為Git倉庫
    
  • 添加文件至版本庫

    新增一個文件(需在Git倉庫目錄),例如readme.txt

    $ git add readme.txt  #把文件添加到Git的暫存區
    $ git commit -m "add a readme file"  #把文件提交到倉庫
    

    注意: git add <file>命令可反復多次使用,添加多個文件。例如:

    $ git add file1.txt  
    $ git add file2.txt file3.txt
    
  • 提交修改文件

    與提交新文件的步驟相同,都是先git addgit commit -m,修改文件的常用命令:

    $ git status  #查看倉庫當前狀態
    $ git diff readme.txt  #查看readme.txt文件的修改內容
    
  • 版本切換

    $ git reset --hard commit_id   #切換至版本號為commit_id的版本
    

    注:HEAD是當前版本,也就是最新提交的版本,HEAD^表示上個版本,HEAD^^表示上上個版本,HEAD~100表示往上100個版本,例如$ git reset --hard HEAD^

  • 撤銷修改

    $ git checkout -- readme.txt  #用於撤銷工作區的修改(將工作區的readme.txt文件回到最近一次git commit或git add时的状态。若修改後未添加到暫存區則回到最近git commit的狀態,若添加到了暫存區後又做了修改則回到添加到暫存區後的狀態)
    $ git reset HEAD readme.txt  #用於撤銷暫存區的修改(先將暫存區的修改放回到工作區,再將暫存區的該文件刪掉)
    
  • 刪除文件

    刪除工作區的文件,例如test.txt,然後執行如下命令

    $ git rm test.txt   #此命令用  $ git add test.txt  命令代替,效果也是一樣
    $ git commit -m "remove test.txt"
    

    倘若误删了工作區的文件,則執行$ git checkout -- test.txt即可恢復,因為版本庫裡有此文件,git checkout其实是用版本库里的版本替换工作区的版本;

  • 查看Git提交日誌

    $ git log  #查看當前版本及之前的版本的log
    $ git log --pretty=oneline  #是git log命令結果的簡化顯示
    $ git reflog  #查看命令歷史
    
  • 遠程倉庫

    $ git remote -v  #查看遠程倉庫的信息
    $ git remote add origin https://gitee.com/用户个性地址/倉庫名.git  #關聯遠程倉庫
        #注意:origin是遠程倉庫名,可以換成其他名字。當從遠程倉庫克隆時,git為遠程倉庫默認起名origin
    $ git remote rm origin  #取消與遠程庫的關聯
    
  • 從遠程庫克隆

    以下兩個命令都可以
    $ git clone git@gitee.com:用户个性地址/倉庫名.git
    $ git clone https://gitee.com/用户个性地址/倉庫名.git
    
  • 推送和抓取

    $ git push -u origin master  #推送到遠程庫 & 建立本地分支與遠程分支的關聯
    $ git push origin master  #推送最新修改
    $ git pull  #抓取遠程的新提交
    $ git checkout -b branch-name origin/branch-name  #在本地創建和遠程分支對應的分支(本地和遠程分支的名稱最好一致)
    $ git branch --set-upstream branch-name origin/branch-name  #建立本地分支和遠程分支的關聯(使用git branch --set-upstream-to=origin/branch-name branch-name也是一樣,當執行git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關係沒有創建)
    
  • 分支

    • 查看分支

      • 查看本地倉庫分支git branch
        該命令会列出所有分支,当前分支前面会标一个*
      • 查看遠端倉庫分支git branch --remote
    • 創建分支 git branch <name>
      例如 git branch dev 創建dev分支

    • 切換分支 git checkout <branch-name> 或者 git switch <branch-name>
      例如 git switch master 切換到master分支

    • 創建+切換分支 git checkout -b <branch-name> 或者 git switch -c <branch-name>
      例如 git switch -c dev 創建並切換到新的dev分支

    • 合併某分支到當前分支(Fast forward模式) git merge <branch-name>
      例如 git merge dev 合併dev分支到當前分支

    • 合併某分支到當前分支(禁用Fast forward模式)git merge --no-ff -m "merge with no-ff" <branch-name>

    • 刪除分支 git branch -d <name>

    • 查看分支合併圖 git log --graph
      也可以 git log --graph --pretty=oneline --abbrev-commit

    • BUG分支

         修復bug過程: 
         1. 確定在哪個分支上修復,在此分支上創建新的臨時分支
         2. 合併分支(禁用Fast forward模式)
         3. 刪除臨時分支  
      
      • 隱藏當前工作現場 git stash
      • 回到工作現場 git stash pop
        此命令等同於分別執行git stash applygit stash drop
      • 查看隱藏的工作區內容 git stash list
      • 把提交複製到當前分支 git cherry-pick <commit_id>
    • 刪除未合併過的分支 git branch -D <name>

  • 整理未push的分叉提交

    $ git rebase  #把本地未push的分叉提交整理成直線,使歷史提交看起來更整齊
    
  • 標籤

    • 打標籤 git tag <name>
      默認標籤打在最新提交的commit上,命令git tag <tag-name> <commitId>是將標籤打在指定的commitId上

    • 查看所有標籤 git tag

    • 查看標籤信息 git show <tag-name>

    • 創建帶說明的標籤 git tag -a <tag-name> -m "version 0.1 released" <commitId>
      -a指定標籤名,-m指定說明文字

    • 刪除本地標籤 git tag -d <tag-name>

    • 推送本地標籤到遠程 git push origin <tagname>
      git push origin --tags一次性推送全部尚未推送到遠程的本地標籤

    • 刪除遠程標籤,分兩步

      1. git tag -d <tag-name> 從本地刪除
      2. git push origin :refs/tags/<tag-name> 從遠程刪除
  • 獲取Git幫助

    $ git help config  #獲取config命令怎麼用
    



參考:Git入門教程--廖雪峰