Git知識積累

  • 創始人: Linus Torvalds
  • Git官網:http://git-scm.com
  • 優勢:分佈式版本控制管理
  • 快照存取,不記錄不同版本之間具體的修改內容。
  • Git快照存取
  • 文件三種狀態:已提交(committed),已修改(modified),已暫存(stagged)Git文件的三種狀態
  • Git資源目錄:.git
    • 所有的版本控制信息存儲在此目錄,工作目錄中的內容也是從此目錄提取的。
  • 幫助命令:git help [command]
  • 初始化:git init [directory]
    • 添加具體目錄,對該目錄進行初始化,若未添加,默認當前目錄。
  • 設置例外文件:.git/info/exclude
    • 若在該文件中添加“mytest/”,git將會自動排出mytest文件夾。
  • 設置追蹤忽略的文件:.gitignore
    • 若添加“db/*.db”,將自動不對db目錄下所有.db後綴的文件進行追蹤。
  • 簡單設置Git:git config
    • 設置基本信息
      • git config --global user.name "your name"
      • git config --global user.email "your email"
      • git config --global color.ui true (設置log信息高亮顯示)
    • 設置命令別名
      • git config --global alias.st status
      • git config --global alias.co checkout
      • git config --global alias.mylog "log --pretty=format: '%h %s [%an]' --graph"
      • git config --global alias.br branch
      • git config --global alias.ci commit
    • 查看設置信息
      • 全部:git config --list
      • 具體:git config user.email
  • 添加:git add [-A] [directory or filename]
    • [-A]:對所有添加,修改以及刪除的操作放入暫存區。
    • 填寫目錄,將自動添加目錄下所有可被追蹤的文件。
    • 填寫文件路徑,將只添加選擇的文件。
    • 添加當前目錄下所有文本文件:git add '*.txt' 
    • 添加docs目錄下所有文本文件:git add docs/*.txt
  • 刪除:git rm  [filename]
    • 從本地目錄中刪除文件。
    • 刪除暫存區的文件(只是從git目錄中刪除,本地資源並未刪除):git rm --cached filename
  • 查看所在分支狀態:git status [-s]
    • [-s]:是否簡略顯示
  • 查看差異信息: 
    • 未放入暫存區:git diff
    • 放入暫存區:git diff --staged
    • 查看文件差異:git diff filename1 filename2
    • 查看當前狀態與最後一次提交的差異:git diff HEAD
    • 查看與最後第二次提交的差異:git diff HEAD^^
    • 查看與最後第五次提交的差異:git diff HEAD~5
    • 查看最後兩次之間的差異:git diff HEAD^..HEAD
    • 查看兩次提交之間的差異:git diff <commit1_SHA> <commit2_SHA>
    • 查看兩個分支之間的差異:git diff <branch1> <branch2>
  • 查看文件每行的修改信息:git blame index.html --date short
  • 提交:git commit  [-a] -m "some words"
    • [-a]:自動暫存已追蹤文件的修改,對新添加文件不暫存。
  • 日誌:
    • 查看:git log
    • 簡易查看:git log --pretty=oneline
    • 自定義查看:git log --pretty=format:"%h %ad- %s [%an]"
    • 查看簡易更新日誌:git log --oneline -p
    • 查看簡易狀態日誌:git log --oneline --stat
    • 查看簡易的圖形日誌:git log --oneline --graph
    • 查看一段時間的日誌:
      • git log --since=1.day.ago --unitl=1.minute.ago
      • git log --since=2010-6-29 --unitl=2014-12-12
  • 分支:
    • 查看本地分支:git branch
    • 查看遠程分支:git branch -r
    • 新建分支:git branch branch_name
    • 選擇分支:git checkout branch_name
    • 選擇+新建:git checkout -b branch_name
    • 刪除合併之後的分支:git branch -d branch_name
    • 刪除沒有合併的分支:git branch -D branch_name
    • 刪除遠程分支:git push remote_name :branch_name
  • 合併分支:git merge branch_name
    • 合併之前要選擇到目標分支上,一般爲項目master分支或開發分支
  • 遠程庫:
    • 查看遠程庫:git remote [-v]
      • [-v]:用於查看遠程庫地址
    • 添加遠程庫:git remote add remote_name some_url
      • your_name:隨意爲該遠程庫命一個自己知道的名稱
      • 常用的地址類型有https和ssh,前者需要在每次提交時填寫賬號和密碼,而後者在前期配置後提交將不需要額外信息。
    • 查看遠程庫詳細信息:git remote show remote_name 
  • 與遠程庫同步:
    • 拉取遠程庫:git fetch
      • fetch只是拉取到.git目錄,未和本地工作目錄內容進行合併。
    • 拉取遠程庫並與本地合併:git pull
  • 提交代碼到遠程庫:git push [-u] remote_name branch_name
    • [-u]:記錄此次遠程對象,再次同步時可以直接使用git push。
  • 克隆遠程庫代碼:git clone some_url
    • 建議克隆時就使用SSH地址,方便後續提交操作。
  • 檢測衝突:git pull --rebase remote_branch
    • 該步驟可以細分:
      • git checkout branch_name
      • git pull
      • git rebase  remote_branch
    • rebase:對所有當前分支的修改於遠程庫進行比較,將比較結果存儲於臨時區域,方便修改衝突文件。
    • 衝突文件格式:
      • <<<<<<< HEAD
      • remote version codes
      • =======
      • local version codes
      • >>>>>>>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章