2015-12-06 151 views
3

我是新手git & mercurial並嘗試使用這些工具。我在工作中使用perforce作爲源代碼控制,因此最終將功能與它進行比較。Mercurial/Git:不同分支在同一存儲庫中的不同目錄

現在,我有一個寶庫,它看起來像如下:

Repo_1: 
    DummyProject: 
    Master/Default - branch 
    Release  - branch 
    AnotherBranch - branch 

GIT中/水銀,我使用Atlassian的SourceTree GUI客戶端進行操作。我在本地克隆了這個完整的存儲庫,並可以在GUI客戶端看到分支。要在分支之間切換,我可以使用此工具結帳。

讓我們說我正在大師/默認分支,並對一些文件做了一些更改。雖然我仍然在這個分支上工作,但是出現了一些關鍵問題,我需要在版本分支中進行更改。此時,如果我切換到版本分支從分支主,默認分支,SourceTree基本上更新工作目錄與版本內容分支。 它給了我警告,我有一些未保存的更改,我應該提交或擱置/存儲這些更改,然後切換到版本分支。

Perforce中,我通常有3個文件夾與分支機構的名字,我可以賣到從釋放分支的最新和釋放分支進行修改,而不主/默認分支的擔心被改寫,因爲這兩個分支機構在不同的目錄中。一旦我完成,我可以提交發佈分支的更改並恢復在master /默認分支的更改。

在git/mercurial中我能做些什麼嗎?

我能想到的最接近的選擇就是再次克隆存儲庫(可能是從本地而不是遠程節省網絡開銷),然後在發佈分支上工作並將更改推回到本地和遠程庫。

我想這可能會浪費本地空間,因爲存儲庫將不得不克隆所有的歷史和元數據爲此目的。

回答

2

Git有https://git-scm.com/docs/git-worktree它允許您爲回購創建多個本地工作樹。

我使用從遠程克隆repo兩次的方法,在本地保留兩個或多個副本。這對我來說效果很好。我在一個商業軟件環境中工作,在這個環境中,我們總是有支持發佈的版本,當前版本的發佈標題,未來工作分支等等。任何時候至少有三個活躍的團隊共享分支,並且大量的成對或三分之一的共享的功能分支上的開發人員。

在某些情況下可以幫助的其他工具是git stash。對我來說,這是一個經常性的轉換,因爲我必須通過工具在本地進行修改,但無法進行修改。但它對於中斷任務和切換分支也很有用。

本地存儲,是的,在數量上它是一種浪費,但我不在乎。我所關心的是傳輸時間拉和推,以及花費在源代碼控制上的時間。

其他這裏可以給Git更多的知識。我知道零水銀。

1

相反,Perforce公司(顛覆)的Git/Mercurial的

  • 有分支機構的邏輯,而不是物理對象(你可以有網址只爲回購,而不是目錄||內庫分支)
  • 有(易)可變歷史

這些根本差別很大改變前CVCS用戶提供改變的「神聖」歷史上通常的工作流程,允許commit WIP of any quality on any insignificant occasion(讀「VCS不可知的方式」部分爲您的使用情況)

是,針對Git worktree是workable solution for fresh的Git(與git stash在另一邊),以及水銀你有(除指出 「承諾WIP +切換分公司」):

+0

什麼'汞share'(https://www.mercurial-scm.org/wiki/ShareExtension)? – aflp91

+0

@ aflp91 - 是的,它在[另一個答案](http://stackoverflow.com/a/34064957/960558)鏈接主題中提到...我只是容易忘記未使用的替代品 –

相關問題