[筆記] Git 101

Rex Chen
7 min readJun 3, 2017

--

古有云:人生不能重來,但Git可以

https://git-scm.com/

什麼是Git??

  • Git是一個分佈式版本控制軟體

版本控制是什麼?

就是一種為了要將檔案的修改過程進行紀錄, 所使用的手段.

  • 這也算一種版本控制
drwxr-xr-x   8 rex  staff   272 Jun  3 23:06 .
drwx------+ 14 rex staff 476 Jun 3 22:56 ..
-rw-r--r--@ 1 rex staff 8196 Jun 3 22:56 .DS_Store
drwxr-xr-x 3 rex staff 102 Jun 3 22:54 第一次用git就上手
drwxr-xr-x 4 rex staff 136 Jun 3 22:55 第一次用git就上手_01
drwxr-xr-x 4 rex staff 136 Jun 3 22:55 第一次用git就上手_02
drwxr-xr-x 4 rex staff 136 Jun 3 22:55 第一次用git就上手_03
drwxr-xr-x 4 rex staff 136 Jun 3 22:55 第一次用git就上手_04

什麼時候要用?

當團隊需要共同維護同一專案時,若要把檔案恢復到編輯前的狀態,能怎麼做?? 要怎麼確認對方修改過的內容??

  • 除了通靈之外,最直接的方式就是平時養成習慣複製多個檔案,用檔名來區分時間點作者和版本…
  • 一但遇到問題必須得回朔到過去的狀態,就只能透過檔案名稱作為依據進行復原的動作。
  • 然而在團隊合作的專案中,若是沒溝通好,除了隊友要一直問候之外,更增加了維護、查詢與交接的難度。

為什麼要用Git?

  • 減少通靈的頻率
  • 減少問候的次數
  • 更有系統的管理專案
  • 讓一切有機可循
sass/_component.scss1050      -    width: 34px;
1050 + min-width: 34px;

怎麼使用?

  1. 直接在黑黑的視窗(Command Line)敲指令
  2. 用別人做好的GUI管理介面
  3. 直接在GitHub的網頁操作

基本流程

1.建立/切換 專案目錄

mkdir “project name”
cd “project name”

2. 同步資料: 複製(clone)專案 or 下載(pull)分支

git clone “https://github.com/Jericho229/study_note" 
git pull origin "branch_name"

3. 切換分支 branch

git checkout -b “your branch name”

4. Coding~~~~~

編輯A.html

編輯B.css

編輯C.js

5. 檢視狀態: 查看檔案目錄目前的狀態

git stauts

6. 新增檔案: 將修改的檔案加入編輯名單

git add “single file” (加入單檔) 
git add . (全部加進去)

7. 編輯異動描述: 簡單敘述你新增/修改了什麼

git commit -m “change log”

8. 提交檔案: 將修改的內容送上伺服器

git push origin # 推送當下分支
git push origin “remote branch” # 推送至指定分支

9. 繼續coding.

10. 重複步驟5~9

初次設定

  1. 建立ssh key (先暫時先略過)
  2. 設定config
$ git config user.name "Your Name"$ git config user.email "yourmail@mail.com"

常用指令

Git 複製專案

git clone git@github.com:Jericho229/study_note.git

Git 下載遠端分支內容

git pull origin
  • origin: 來源目的地

Git 查看檔案狀態

git stauts

Git Branch管理

git branch ## 列出(local端)所有分支
git branch -m "name" # 更改名稱

Git Branch切換

git checkout "other branch" # 切換到該分支
git checkout -b "other branch" # 新增並切換到該分支

更新分支目錄

git fetch origin
  • origin: 來源目的地

Git 比較修改內容

git diff "fire path" #比較當前文件和暫存區文件差異
git diff

Git 新增檔案

先將修改的檔案列入暫存, 作為commit使用

git add . (將所有修改列入暫存)
git add filename (對單檔)

Git Commit

git commit
git commit -m 'commit message'
git commit -a -m 'commit -message' # 將所有修改過得檔案都 commit, 但是 新增的檔案 還是得要先 add.

Git提交檔案

git push origin
  • origin: 提交目的地

Git 刪除檔案

git rm "filename"

Git 分支合併

將branch分支合併到當前分支

git merge "branch name"

Git 回朔

git reset < file > #將單檔從暫存區恢復到工作文件
git reset -- . #從暫存區恢復到工作文件

Git 檢查設定

$ git config — list (git config 減減list)

core.trustctime=false
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=*******
remote.origin.fetch=*******
remote.origin2.url=*******
remote.origin2.fetch=+*******

Git Repository管理

git remote - v #查看遠 ​​程服務器地址和倉庫名稱
git remote show origin #查看遠 ​​程服務器倉庫狀態
git remote add origin "xxxx@gitrepo.git" #添加遠程倉庫地址
git remote set-url origin "xxxx@gitrepo.git" #修改origin目的網址

唐鳳表示:當年怎麼記住Git指令呢?是這樣的:

  1. 在碰到新的事情的時侯,要先Fetch新的狀況(接受它)。
  2. 接下來要跟自己心裡的想法Merge(面對它)。這時可能產生衝突,衝突是要解決的。
  3. 衝突解決之後才能夠採取行動,所以要Commit(處理它)。
  4. 最後再Push(放下它)。
  • 為什麼是放下它呢?因為你一旦把Code push出去、開源之後,它就不是你的了。

--

--

Rex Chen

失智系半端工程師: 沒有記下來的,我一律選擇忘記