搭建Git Server
cd my_project
git init
git add .
git commit -m 'first commit'
cd ..
git clone --bare my_project my_project.git
這樣就可以通過(guò)SSH去clone my_project.git 這個(gè)倉(cāng)庫(kù)了。
不過(guò)這樣還有很多問(wèn)題。首先是權(quán)限,先要?jiǎng)?chuàng)建一個(gè)group:
groupadd git
把相關(guān)的賬號(hào)加入到這個(gè)group:
gpasswd -a use1 git
還要把倉(cāng)庫(kù)的權(quán)限設(shè)為git組可讀寫(xiě):
chown -R root:git .
chmod -R 771 .
另外,要把倉(cāng)庫(kù)設(shè)置成shared,我之前寫(xiě)過(guò)一篇文章解決這個(gè)問(wèn)題,在這里。
書(shū)上有個(gè)寫(xiě)法:
git init --bare --shared
不過(guò)我沒(méi)試過(guò),下次再建server時(shí)可以試試。
配合遠(yuǎn)端server使用Git
本地使用基本沒(méi)有問(wèn)題,按照一般的教程來(lái)就可以。關(guān)于遠(yuǎn)端的使用,好像沒(méi)有發(fā)現(xiàn)系統(tǒng)性講解的教程,只能在使用中發(fā)現(xiàn)問(wèn)題、解決問(wèn)題。
分支關(guān)聯(lián)
如果本地還沒(méi)有遠(yuǎn)端的分支,可以這樣:
git checkout --track origin/my_branch
會(huì)在本地創(chuàng)建一個(gè)分支my_branch并與遠(yuǎn)端的origin/my_branch建立關(guān)聯(lián)。
如果本地已經(jīng)有了my_branch,并且想和遠(yuǎn)端的建立關(guān)聯(lián),則要這樣:
git branch --set-upstream my_branch origin/my_branch
要確認(rèn)分支是否關(guān)聯(lián)上了,可以打開(kāi).git/config,看有沒(méi)有下面這些:
[branch "my_branch"]
remote = origin
merge = refs/heads/my_branch
分支關(guān)聯(lián)上以后,pull時(shí)就不需要指定分支了,直接在當(dāng)前分支下git pull就可以更新當(dāng)前分支。其它的用處還不知道,沒(méi)敢試。
fetch
關(guān)于fetch我還不是十分理解。git fetch origin my_branch是不能把這個(gè)分支最新的代碼fetch下來(lái)的。只能用git fetch origin,把所有的分支都fetch下來(lái),然后到相關(guān)的分支去merge。
git fetch origin
git merge origin/my_branch
push
遇到過(guò)一個(gè)問(wèn)題,要回滾遠(yuǎn)端的代碼。先reset到需要回滾的點(diǎn):
git reset --hard <commit_id>
然后修改代碼,改完后,push時(shí)要加上--force
git push origin my_branch --force
否則會(huì)提示什么不是fast-forward,不讓提交。也不知道這么搞會(huì)不會(huì)有什么問(wèn)題。