GitHub官方的入門教程(中字) && 非官方 GitNote

fitzeng發表於2017-12-17

0. 前言

在使用 Git 時有一種感覺就是隻會 add | commit | push 三個命令。因為這三個命令似乎足以把程式碼提交到 GitHub 上,即使是碰到某個問題,也可以直接 Google。但是對於其中的邏輯和版本管理的精髓沒有體會到,而只是作為一個線上程式碼倉庫在使用,這樣做也沒有什麼不可以,但是如果能系統的瞭解為什麼要有版本管理工具,以及版本管理工具能夠給我們提供怎麼樣的管理服務,對於使用工具的我們來說有很大幫助。不用記住命令,只是以後遇到問題時知道這個工具有實現的方式就足夠了。

現在我係統的看了一下官方的 Git 入門教程 Git 官方教程(中字) 裡面通過描述對命令的使用情景進而選擇命令進行操作的方式,使得命令很容易理解也容易加深記憶。比起單一的命令用文字解釋這種方式,對於不熟悉 Git 的人來說是十分友好的。但是,看完容易忘,所以寫了這篇整理筆記用作輔助查詢。

1. 基本命令

1.1 瞭解幫助命令

  • git help : 檢視命令
  • git help add : 檢視 git add 命令的具體解釋

1.2 倉庫初始化

  • git init : 建立 .git, 適合在已存在專案追加版本控制
  • git init projectname : 建立 projectname/.git, 適合專案開始時加入版本控制

1.3 檔案基本操作

  • git add filename/* : 新增檔案[產生暫存檔案]
  • git commmit -m "message" : 將新增的檔案提交到本地倉庫[產生提交檔案]
  • git rm filename : 移除檔案,使用 rm filename 的有暫存
  • git add -u . : 如果之前使用非 git 命令刪除檔案,可以使用這個命令把當前目錄的檔案重新遍歷清除
  • git rm --cache filename : 暫存但是不參與跟蹤
  • git mv filepath newfilepath : 移動檔案
  • git rm filepath && git add newfilepath : 移動檔案,之前使用非 git 命令移動檔案
  • git add -A . : 如果之前使用非 git 命令移動檔案,可以使用這個命令把當前目錄的檔案重新遍歷移動,和 rm 命令類似
  • git reset etc... : 歷史提交管理(回退,合併...),checkout 更關注檔案

1.4 檢視檔案修改

  • git status : 檢視檔案資訊
  • git diff : 檢視修改[工作樹和暫存檔案]
  • git diff --staged : 檢視修改[暫存檔案和最近提交檔案]
  • git diff HEAD : 檢視修改[工作樹和最近提交檔案]
  • git diff --word-diff : 檢視修改的單詞用顏色標出
  • git diff --stat : 檢視修改的檔名

參考資料 0. Git 學習(三)本地倉庫操作——git add & commit 瞭解 git 版本庫實現

1.5 檢視提交 Log

  • git log : 顯示提交資訊
  • git log --oneline : 顯示提交 Message
  • git log --stat : 顯示提交檔名級詳細修改資訊
  • git log --patch : 顯示提交檔案內容級詳細修改資訊
  • git log --graph : 用圖顯示提交記錄
  • git log --graph --all --decorate --oneline : 去除冗餘資訊,更加直觀顯示每條分支每次提交
  • git log --stat -- filename : 檔案提交記錄(不記錄路徑移動)
  • git log --stat -M --follow -- filename : 看到完整的檔案操作過程

1.6 忽略檔案

  • touch .gitignore : 建立檔案(次級目錄也可以建立)
  • vim .gitignore : 編輯檔案新增 ignore 檔案。*.log | tmp/ | .sass-cache etc...
  • git ls-files --others --ignored --exclude-standard : 檢視被 ignore 的檔案
  • git reflog : 詳細修改日誌

1.7 分支操作

  • git branch branchname : 建立分支
  • git branch : 顯示分支
  • git branch -d branchname : 刪除分支
  • git branch -D branchname : 刪除未合併分支
  • git checkout branchname : 切換分支
  • git checkout commitID : 工作樹切換到 commitID 時
  • git checkout -- filename : 清理掉最後一次提交內容
  • git checkout -b branchname : 建立新分支並且進入該分支
  • git merge branchname : 和並 branchname 分支到目前所在分支(合併時檔案衝突要手動解決)
  • git merge --abort : 清除工作目錄和暫存區
  • git merge squash branchname : 將合併的分支改變變成一個 commit
  • git rebase branchname : 將當前分支歷史提交合併到 branchname 分支

參考資料 2. 程式碼合併:Merge、Rebase 的選擇

1.8 遠端操作

  • git remote add origin https://github.com/accountname/projectname
  • git remote set-url origin newUrl : 改變 URL
  • git remote rm origin : 刪除
  • git remote -v : 檢視 URL
  • git fetch origin : 抓取遠端分支,本地會有一個 remotehostname/branchname 的分支,一般用於檢視夥伴程式碼
  • git pull origin : 和 fetch 類似,但是是取回遠端更新和本地合併。相當於先 fetch 再 merge。
  • git push origin : push 到遠端倉庫

參考資料 1. Git遠端操作詳解

2. 總結

其實在開始把 Git 整個命令流程學習下來之前,對 Git 理解十分淺顯,使用命令也是抱著試試看的心態,錯了搜尋解決方法重試,對了就不追究原因了。這種方式感覺更加浪費時間,而且很可能多次遇到重複問題。覺得以後學習某個東西還是得大概瞭解整個系統才好,想快速入門未嘗不可,但是閒下來的時候要去多問問為什麼,這樣有了巨集觀的概念,出了問題說不定能自己摸索著解決。還有一點,實踐確實是比單一的閱讀或看視訊更加記憶深刻,對命令的理解也是同理,所以最好都敲一遍。

多謝閱讀 ^_^

3. 參考資料

相關文章