再寫接下來的 programming language 之前,先介紹一下一個新的觀念, 版本控制系統 (Version Controll System)。
目前用過的系統有兩個 SVN 與 Git。不管是哪種版控工具,有許多觀念都是共通的,例如: Branch 的管理, commit 的時間點 與 commit 的書寫,這些才是 版控的基本觀念。
以 Srever 作為集中管理的地方,每個 commit 就會自動 push 到這個 Repository 之中,所以需要在有網路的地方才可以使用。
分散式架構,分為 local 與 Server(此文章以 GitHub 為主)
這張圖片,顯示了本地的紀錄的 commit 比 remote 多了一個 commit。執行 PUSH 完成後,以下的狀態 就是 local 與 remote 同步的樣子
* bfd9b4b - (HEAD -> chou/git, origin/chou/git) <Add >共享數據庫 (9 hours ago) <jiajun.chpu>
* 738b7c9 - <Add> 教學1 開始使用Git.md (34 hours ago) <jiajun.chpu>
第一次安裝 git 一定要設定使用者名稱和 email才能做 commit
git config --global user.name "username"
git config --global user.email "username@example.com"
另外可以加上一些顏色的設定,會比單色更清楚
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global color.log auto
指定 commit 時的預設編輯器
git config --global core.editor vim
指定 merge 工具
git config --global merge.tool vimdiff
建議設定大小寫敏感,原因請參考這裡
git config --global core.ignorecase false
設定下 push 指令的預設方法:
git config --global push.default matching # 沒指定分支的話,會把所有 fetch 下來名稱 match 的全 push 上去,聽起來很可怕
git config --global push.default current # 只 push 目前所在的 branch
git config --global push.default simple # 如果有設 upstream 會優先執行,如果沒有才會使用 current,看起來比較適合
檢查目前設定值的列表
git config --list
查詢設定值,如查看目前使用首的名稱
git config user.name
設定值的檔案會存在 /etc/gitconfig
及 ~/.gitconfig
,差別只是一個是所有使用者的 global,另一個是使用者個人的 global。
某些檔案可能不需要被 git 記錄下來,如暫存檔、編譯後的執行檔等,這時可以加入此檔,並記錄哪些類型檔案,git 就會自動跳過不去 add
如不同系統裡,都會出現一些特殊的 cache 檔,可以寫這個檔來自動忽略。
# Global/OSX.gitignore
.DS_Store
# Global/Windows.gitignore
Thumbs.db
Desktop.ini
.gitignore 參考:
修改 ~/.gitconfig
的範例:
[user]
name = jiajun.chou
email = quilaty@gmail.com
[core]
editor = vim
ignorecase = false
[push]
default = simple
[color]
diff = auto
status = auto
branch = auto
log = auto
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cblueby %an %Cgreen(%cr)%Creset'