之前是用 Subversion 來作版本控制,可是不是總是可以連到中央伺服器上,所以最近移轉到 Git 上。
Git 的 push 不會去改變 work copy 的內容,而且 HEAD 也不會前進到最新的 commit 上,一整個跟 Subversion 線性的歷史記錄不太一樣。
如果發生了 push 進附有 work copy 的 repository 的事情,更新 work copy 就得要先用 git log
先把最近一個 remote commit 的 commit ID 找出來,然後再用 git reset %COMMIT-ID%
來把 HEAD 設定過去,最後用 git checkout .
來把 work copy 更新。
看來還是要準備一個 bare repository 才行,也就是每個人要有 public repository 跟 private repository 兩個 repository ... 感覺實在挺浪費的。
建立 bare repository:
$ mkdir project.git
$ cd project.git
$ git init --bare
將現有位於 /home/me/project 的 repository 複製成位於 /home/me/repo/project.git 的 bare repository:
$ cd /home/me/repo
$ git clone --bare /home/me/project
把 remote repository 設定補進 private repository 中:
$ git remote add origin /home/me/repo/project.git
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master