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

0. 前言

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

如今我係統的看了一下官方的 Git 入門教程 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 版本庫實現github

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 的選擇vim

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遠程操做詳解sass

2. 總結

其實在開始把 Git 整個命令流程學習下來以前,對 Git 理解十分淺顯,使用命令也是抱着試試看的心態,錯了搜索解決方法重試,對了就不追究緣由了。這種方式感受更加浪費時間,並且極可能屢次遇到重複問題。以爲之後學習某個東西仍是得大概瞭解整個系統纔好,想快速入門何嘗不可,可是閒下來的時候要去多問問爲何,這樣有了宏觀的概念,出了問題說不定能本身摸索着解決。還有一點,實踐確實是比單一的閱讀或看視頻更加記憶深入,對命令的理解也是同理,因此最好都敲一遍。工具

多謝閱讀 ^_^學習

3. 參考資料

相關文章
相關標籤/搜索