svn使用單個**庫來作為開發者之間溝通的橋梁,而協同合作是通過在開發者和**庫之間傳遞changeset來實現的。這種情況對於git的協同模型是有區別的,在git下每乙個開發者都擁有他們自己的整庫copy。取而代之於從working copy來提交變更集到乙個**庫中,git允許你在不同的repo之間分享整個分支。
下面的命令允許你管理你和其他repo之間的連線,通過push 乙個分支到其他的repo你實現發布本地history,通過pull乙個branch到你自己的repo來獲取他人的contribution.
git remote命令允許你來create,view和delete和其他repo的connections. remote connections可以這樣來理解: 他們更像是bookmarks,而不是其他repo的直接連線。
例如,下面的圖顯示兩個remote connections,乙個是從你的repo到central repo,而另乙個則是你和john的repo的連線
常用命令: git remote -v/git remote add /git remote rm /git remote rename
git設計的目標是它會給每乙個開發者乙個完全獨立的開發環境。這意味著資訊並不會自動地在repo之間自動流轉。相反地,開發人員需要手工的pull upstream commits來獲取到local repo中,或者手工地push local commits到central repo.這個git remote命令實際上僅僅是一種傳遞url的方便方法到這些sharing目的的commands.
當你通過git clone來clone乙個repo時,git會自動地建立乙個被稱為origin的remote connection指向到被cloned的repo.這對於開發者建立central repo的乙份拷貝是非常方便的,因為這為開發者提供一種便捷pull upstream changes或者publish local commits的方法。這種行為也是為什麼大多數git-based專案稱他們的**庫為origin的原因。
git提供很多種方法去引用乙個remote repo.兩種最簡單的方式是http或者ssh.
http方法是一種非常簡單的允許匿名唯讀訪問repo的方式,比如
你必須要有乙個在host machine上的合法ssh帳號。
除了origin,建立乙個連線到你的同事的repo上去的連線也是非常必要和方便的。比如,如果你的搭檔john,維護了乙個可以公開訪問的repo在dev.example.com/john.git這個url的話,你可以通過過下面的命令增加乙個connection
有了上面這種訪問其他開發者的repo的簡單方式後,這就允許人們繞開central repo來私下協同。這種模式對於小團隊做大專案時是非常有用和高效的!!
git fetch這個命令從乙個remote repo來向你的local repo匯入commits。這些commits匯入後的結果是他們被儲存在乙個remote branch,而不是local branch上。這種模式就讓你在整合remote commit之前來評審這些變更有了機會!
git fetchfetching這個動作完成的是當你希望檢視其他人的工作時需要做的工作。既然被fetched的content是以乙個remote branch來呈現的,那麼這個動作對於你的local dev是沒有任何影響的。這也就是說fetching是乙個在外部變更落地前來review評審的安全的方法。
remote branch和local branch是類似的,不過remote branch是代表著是來自於其他人的repo的commit。你可以像checkout乙個local branch一樣來checkout乙個remote branch,但是這樣做你將被置入detached head state(就像checkout乙個old commit一樣的效果)。你可以把他們想象成乙個read-only的分支。要想檢視有哪些remote branches,只需要git branch -r命令引數即可。remote branch總是冠之以remote connection name,所以你永遠不會和本地branch搞混淆。比如,下面的**片段展示了remote branch的情況:
git branch -r你可以通過git checkout origin/develop;git log來檢視這些remote分支上有了哪些commit改動。如果你確認這些commit可以進到你的local branch上的話,你只需要git merge即可。# origin/master
# origin/develop
# origin/some-feature
所以,對於git來說,你需要本地和遠端的remo同步的話,你需要有兩步:1.fetch,2.merge
而git pull則一步完成了上面的兩個工作。
git下的團隊合作模型及git基礎知識匯集
syncing svn使用單個 庫來作為開發者之間溝通的橋梁,而協同合作是通過在開發者和 庫之間傳遞changeset來實現的。這種情況對於git的協同模型是有區別的,在git下每乙個開發者都擁有他們自己的整庫copy。取而代之於從working copy來提交變更集到乙個 庫中,git允許你在不同...
git 團隊合作
git checkout master git pull git checkout b feature newdy 把你的改的東西加到這個新分支裡,可以借助git cheeypick 命令 切換到develop,將自己的分支merge到develop git checkout develop git...
git團隊合作開發流程
關於git的環境配置在以前已說過就不羅索了,這裡介紹在公司如何團隊一起開發專案 首先你需要把你的秘鑰給管理員,如何配置以前介紹過了就不說了 進入正題 git ls files檢視當前廠庫被add得所有檔案 git push origin branchname 刪除遠端的branchname分支 gi...