2011-09-12 44 views
40

我有2個分支,尚未準備好合併,但有一些互補的邏輯,我想查看(合併之前)是否有可能同一個項目同時查看多個git分支?

我可以檢出同一個項目的多個git分支嗎?可能嗎?

+0

您將可以使用Git 2.5+及其新的'git checkout --to = '命令來執行此操作。請參閱[我的答案](http://stackoverflow.com/a/30186481/6309)。 – VonC

+0

實際的語法是'git worktree add '。我更新了[我的答案](http://stackoverflow.com/a/30186481/6309)。 – VonC

回答

36

您可以簡單地將存儲庫複製到新位置(通過字面複製目錄或使用git clone --shared)並檢出每個位置的一個分支。

您還可以使用git-worktree從存儲庫的單個實例創建多個工作目錄。

否則,合併之前比較分支之間文件的主要方法是git diff

+3

注意:我意識到你的答案今天是downvoted(http://stackoverflow.com/posts/7393302/timeline),但我沒有downvoted它;)我簡單地(2年前)指出新的git worktree命令。 – VonC

1

我想起來的第一件事就是在單獨的項目上籤出每個分支。 所以:初級克隆(1) 2. 1.結帳支路A創建一個新的克隆(2) 3.結帳支路B在克隆2

第二方法可以是創建一個新的分支(又名Ç )並將分支A和B合併到它。 如果他們是免費的,這可能有助於您的審查。

-1

前面已經提到的,你可以diff的分支機構,git的差異:以上

git diff [--options] <commit> [--] [<path>…] 

This form is to view the changes you have in your working tree relative to the named <commit>. You can use HEAD to compare it with the latest commit, or a branch name to compare with the tip of a different branch. 

摘錄是從Git的文檔。

1

是的,它可以適當的照顧。但是,您正在使用--work-tree=<path>選項從常規git目錄中取出其中一個「副本」,因此除非您特別說明,否則git將不會看到更改。我在這裏舉了一個例子single-working-branch-with-git - 請參閱UPDATED段。

請注意,git-new-workdir在Windows XP上不起作用,因爲它需要Unix樣式的鏈接。

6

使用Git 2.5+(Q2 2015),一個Git回購將支持多個工作樹木git worktree add <path>(這將取代contrib/workdir/git-new-workdir

那些 「掛」 工作的樹實際上是記錄在主回購新的$GIT_DIR/worktrees文件夾(以便在任何操作系統上工作,包括Windows)。

多見於 「Multiple working directories with Git?

+0

請注意,與git-new-workdir不同,git worktree不允許爲同一分支創建多個工作區:/ – NikiC

+2

@NikiC您可以通過添加'--force'標誌('-f'也可以)根據[文檔](https://git-scm.com/docs/git-worktree#_options) –

-1

現在git包括命令worktree做到這一點。

相關問題