Git命令整理

簡介

Git是一款免費、開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項目版本管理。目前開發(fā)中大部分開發(fā)者都是使用的Git。

如果是初學(xué)者要由淺入深的完成學(xué)習(xí)Git的話,首推就是廖雪峰的Git教程。

如果說書籍的話,看書比較少,不過覺得《Android群英傳:神兵利器》的第二章講的還不錯。書的PDF版 (侵刪)。

書中的這張圖覺得不錯,有助于對Git的理解:

iamge

本文并不是一個對git講解,而只是對常用的一些Git命令的整理。

盜一張圖:該圖將Git的常用操作已經(jīng)做了很詳盡的整理,使用的時候完全可以做在這張圖中找。下面我也只是對該圖做了一些整理,揀選了些更常用的。圖片在這里保存好使不是很清晰,網(wǎng)盤分享了下

Git命令.png


基本流程

  • 全局配置
    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    
  • 創(chuàng)建新庫,創(chuàng)建README.md并提交
    git clone https://github.com/GwindIT/Test.git
    cd Test
    touch README.md
    git add README.md
    git commit -m "add README"
    git push -u origin master
    
  • 已存在項目關(guān)聯(lián)遠(yuǎn)程Git庫
    cd existing_folder
    git init
    git remote add origin https://github.com/GwindIT/Test.git
    git add .
    git commit
    git push -u origin master
    

常用操作

該部分的命令是摘取的更為常用的命令。

git clone <url> (創(chuàng)建新庫)

git add .   (添加所有文件到版本庫)

git commit -m "msg"  (提交所有修改)

git merge <branchname> (合并分支)

git checkout -b <branchname> ( 基于當(dāng)前分支的末梢創(chuàng)建新分支并且檢出分支)

git checkout <branchname> (檢出分支)

git push (推入遠(yuǎn)程庫)

git pull (獲取并且合并到當(dāng)前本地分支)

git diff (比較的是工作目錄(Working tree)和暫存區(qū)域快照(index)之間的差異)

git status (列出當(dāng)前目錄所有還沒有被git管理的文件和被git管理且被修改但還未提交(git commit)的文件)

本地操作

初始化

  • Git用戶名郵箱的全局配置

    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    git config --global color.ui "always"
    
  • 初始化新版本庫

    git init 
    
    • 根目錄下創(chuàng)建一個名為.git的文件夾。如果你沒有看到.git目錄,那是因為這個目錄默認(rèn)是隱藏的,用ls -ah命令就可以看見。
  • 設(shè)置忽略文件

    • 在Git工作區(qū)的根目錄下創(chuàng)建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。
  • 添加文件到新版本庫

    • 添加單個文件:
    git add somefile.txt
    
    • 添加所有txt文件:
    git add *.txt
    
    • 添加所有文件,包括子目錄,但不包括空目錄:
    git add .
    
    • 僅監(jiān)控已經(jīng)被add的文件(即tracked file),會將被修改的文件提交到暫存區(qū)。add -u 不會提交新文件(git add -update)
     git add -u
    
  • 提交

    • 提交
    git commit -m "Message"
    
    • add與commit的合并操作
    git commit -am "Message"
    

    但需要注意改命令只是提交修改的文件,當(dāng)有新建的文件的時候是無法提交的。

日常操作

  • 提交

    • 提交所有修改文件
    git commit -m "msg" -a
    
    • 提交單個文件
    git commit -m "add readme msg" readme.txt  
    
  • 撤銷修改

    • 撤銷尚未提交的修改

      • 撤銷某個文件
      git checkout head readme.txt 
      
      • 撤銷所有txt文件
      git checkout head *.txt
      
      • 撤銷所有文件
      git checkout head .
      
    • 撤銷提交的修改

      • 反轉(zhuǎn)提交
      git revert --no-commit head
      

      生成一個新的提交來撤銷某次提交,此次提交之前的commit都會被保留

      • 復(fù)位
      取消暫存:git reset head 或 git reset head <filename>
      復(fù)位到head之前的版本:git reset --hard head
      

      不會在版本中留下痕跡

  • 分支

    • 列出本地分支
    git branch
    
    • 列出所有分支
    git branch -a
    
    • 基于當(dāng)前分支末梢創(chuàng)建新分支
    git branch <branchname>
    
    • 檢出分支
    git checkout <branchname>
    
    • 基于當(dāng)前分支的末梢創(chuàng)建新分支并且檢出分支
    git checkout -b <branchname>
    
    • 合并分支

      • 普通合并
      git merge <branchname> 
      

      發(fā)生沖突不會自動提交,需要解決沖突。

      • 壓合合并
      git merge -squash <brachename>
      
      • 揀選合并
      git cherry-pick --no-commit <branchname>
      
    • 重命名分支

    git branch -m <branchname> <newname> (不會覆蓋已存在的同名分支)
    git branch -M <branchname> <newname> (覆蓋已存在的同名分支)
    
    • 刪除分支
    git branch -d new2 (如果分支沒有被合并會刪除失敗)
    git branch -D new2 (即使分支沒有被合并也照刪不誤)
    
  • 解決沖突

    • 沖突很少時,直接編輯沖突文件然后提交即可。
  • 標(biāo)簽

    • 創(chuàng)建標(biāo)簽
    git tag 1.0
    git tag -a v1.4 -m 'my version 1.4'
    
    • 將標(biāo)簽推送到遠(yuǎn)程倉庫
    git push origin [tagname](單個標(biāo)簽)
    git push [origin] --tags(所有標(biāo)簽)
    
    • 顯示標(biāo)簽列表
    git tag
    
    • 檢出標(biāo)簽
    git checkout 1.0
    
    • 由標(biāo)簽創(chuàng)建分支
    git checkout -b b1.0 1.0
    git branch b1.0 1.0
    
    • 通常的git push不會將標(biāo)簽對象提交到git服務(wù)器,我們需要進行顯式的操作:
      git push origin v0.1.2 # 將v0.1.2標(biāo)簽提交到git服務(wù)器
      git push origin –tags # 將本地所有標(biāo)簽一次性提交到git服務(wù)器
    
    • 刪除本地標(biāo)簽

      git tag -d 1.0
      
  • 刪除遠(yuǎn)程標(biāo)簽

    git push origin :refs/tags/標(biāo)簽名 
    git push origin :refs/tags/protobuf-2.5.0rc1 
    
  • 查看狀態(tài)

    • 當(dāng)前狀態(tài)
    git status
    
    • 歷史記錄
    git log
    gitk (查看當(dāng)前分支記錄)
    gitk <branchname> (查看某分支歷史記錄)
    gitk -all (查看所有分支)
    
    • 每個分支最后的提交
    git branch -v
    

遠(yuǎn)程操作

初始化

  • 克隆版本庫

    git clone <url>
    
  • 別名

    • 添加別名
    git remote add <別名> <遠(yuǎn)程庫URL>
    
    • 刪除別名
    git remote rm <別名>
    
  • 創(chuàng)建一個無本地分支的庫

    git branch -bare
    

日常操作

  • 分支

    • 列出遠(yuǎn)程分支
    git branch -r
    
    • 刪除遠(yuǎn)程分支
     git push origin --delete <BranchName>
    
    • 刪除遠(yuǎn)程已經(jīng)不存在的分支
    git remote prune origin
    
  • 從遠(yuǎn)程獲取

    • 獲取但不合并
    git fetch <遠(yuǎn)程版本庫>
    
    • 獲取并且合并到當(dāng)前本地分支
    git pull
    
  • 推入遠(yuǎn)程庫

    git push origin master
    
  • 本地分支與關(guān)聯(lián)遠(yuǎn)程分支

    git branch --set-upstream-to=origin/<branchename>
    

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容