Git版本控制入門(1) — git新手包


Posted by ai86109 on 2020-03-24


在正式開始講Git之前,我們要先來講版本控制。

版本控制對學生來說其實不陌生,尤其是要交論文的菸酒生們。
教授會要求你每做完一個進度就給他檢視一下,所以你可能會用流水號來記錄不同的版本,這週給的是『論文初稿-ver1』,下禮拜就存成『論文初稿-ver2』,但當你寫到ver3的時候,教授突然說他某一段想要改回ver1的論述,這種情況只要多發生個幾次,一切就會變得很混亂,更不用說如果還有其他協作者的時候,就會發生你的ver3不是你的ver3的情況。

這時候你就會想要有一個版本控制的東西幫你管理,所以我們就來檢視一下,版本控制可能會需要哪些功能?

  1. 出現新版本的時候,開一個新資料夾把檔案最新版檔案放入
  2. 不想加入版本控制的就不要放入資料夾
  3. 團體協作時,為避免我的v3和你的v3是不同的,以不會重複的版本號命名
  4. 因為不是流水號命名,所以有一個文件專門告訴你最新的版本名字
  5. 一個列出過去歷史版本名字的文件

而git只是幫你做以上這些事的程式而已

事前準備

Mac的使用者只要打開terminal,輸入git --version,如果版本是10.9以上就會自動跳出視窗指引你去安裝。

建立你的第一個版本控制

首先,我們先進到你要做版本控制的資料夾
輸入git init
便會初始化在這個資料夾中創立一個隱藏資料夾.git

git status可以檢查此資料夾目前版本控制的狀況
如果此時資料夾內沒有檔案,會顯示 nothig to commit
如果內有檔案,這時候你應該會看到分為兩類:
untracked 還未加入版本控制
stage 已加入

好,那我現在要將test.js加入版本控制
git add test.js
加入資料夾test
git add test/
我檔案太多想全部加入
git add .

移出
git rm — cached test.js

經過以上這樣移進來移出去之後,我們也確定好要加入版本控制的檔案了,準備好就可以開始建立我們第一版的版本控制
git commit -m “你自訂的名稱”
這邊-m是message的意思
commit完之後,git status 會看到狀態和剛剛不一樣,原本等待committed的檔案已經消失,表示這些檔案已經commit成功。

而出現第二版時,一樣要先將更改的檔案git add,再git commit -m “第二版名稱” ,版本控制就是這麼的樸實無華且枯燥。

當個時空旅人

經過多次的操作之後,會有許多的版本
我們可以透過git log,去查看歷史紀錄,包含各版本commit的編號 & commit message。
git log --oneline 則是可以看到簡短的版本

那如果要回到過去版本呢?剛剛在log裡面有個版本的編號,先複製下來
git checkout 編號,便可以回到那個版本
而要回到最新版本
git checkout master

**按q可以出來

加入黑名單

如果我有不想放入版本控制的的檔案,但每次都要手動排除,實在是很麻煩,有沒有辦法把他們都集中管理,有!你可以使用.gitignore

touch .gitignore 建立一個.gitignore資料夾
接著用vim進到裡面,vim .gitignore
將想要忽略的檔名寫入

修改檔案之後

另外前面說到,如果檔案有修改,這些檔案會回到staging area(暫存區),此時如想要更新版本,會需要先add再commit,但也可以使用以下合併的code:
git commit -am “第二版名稱”
這個會將在stage區的檔案自動commit,但不包括新的檔案(也就是在untracked區的),因此我們在新建一個要加入版本控制的檔案時,第一個動作就是將他add進來。

git diff 可以看現在檔案和最後一次commit之間的差別,也就是哪些檔案是被修改過的。


以上就是在使用git時最基本的操作了,這邊利用資料夾的概念,再將幾個重點說明一次,可能可以更好理解:
**#加入版本控制 (git add) → 把檔案放入 temp 資料夾
#新建版本(git commit) → 把 temp 資料夾改為版本名稱
#切換版本 (git checkout) → 去到某個資料夾底下

下一篇要來講git比較進階的用法branch


#Git #Github