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 進來。
這邊的 a 是 all 的意思

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


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

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


#Git #Github







Related Posts

[FE102] 前端必備:JavaScript (下)

[FE102] 前端必備:JavaScript (下)

[Day-2]從電商網站學導覽列表

[Day-2]從電商網站學導覽列表

用 Paged.js 做出適合印成 PDF 的 HTML 網頁

用 Paged.js 做出適合印成 PDF 的 HTML 網頁


Comments