iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

網頁服務開發之路系列 第 4

版本控制系統

Version Controll System

再寫接下來的 programming language 之前,先介紹一下一個新的觀念, 版本控制系統 (Version Controll System)。
目前用過的系統有兩個 SVN 與 Git。不管是哪種版控工具,有許多觀念都是共通的,例如: Branch 的管理, commit 的時間點 與 commit 的書寫,這些才是 版控的基本觀念。

SVN

以 Srever 作為集中管理的地方,每個 commit 就會自動 push 到這個 Repository 之中,所以需要在有網路的地方才可以使用。

  • 有 Branch 的概念,且開銷很小
  • 重新命名、複製、刪除檔案等動作都儲存在版本歷史記錄當中
  • 目錄也有版本歷史。整個目錄樹可以被移動或者複製,操作很簡單,而且能夠保留全部版本記錄

相關工具

  1. WinMerge
    • Setting -> Diff Viewer -> External [C:\Program Files (x86)\WinMerge\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine]: Setting diff Viewer
  2. Eclipse: Ref
  3. TortoiseSVN

Git

分散式架構,分為 local 與 Server(此文章以 GitHub 為主)

學習資源

Notes

Bash 解釋

Log

  • 橘色的框框(bfd9h4d),(HEAD -> chou/git ) 代表 local 的 commit
  • 粉紫色的框框(738b7c9),(origin/chou/git ) 代表 remote 紀錄的 commit

這張圖片,顯示了本地的紀錄的 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>

Config

第一次安裝 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。

.gitignore

某些檔案可能不需要被 git 記錄下來,如暫存檔、編譯後的執行檔等,這時可以加入此檔,並記錄哪些類型檔案,git 就會自動跳過不去 add

如不同系統裡,都會出現一些特殊的 cache 檔,可以寫這個檔來自動忽略。

# Global/OSX.gitignore
.DS_Store

# Global/Windows.gitignore
Thumbs.db
Desktop.ini

.gitignore 參考:

.gitconfig

修改 ~/.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'

.bash_profile

參考 iHower 的 blog


上一篇
學習工具
下一篇
開始 JavaScript
系列文
網頁服務開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言