我回到了一箇舊項目,我跑了好的git status
找出發生了什麼,我注意到太多分支!我想在開始就這一重新工作之前,做一些內務,但我不知道哪支來自哪個..GIT - 我從哪裏分支?
E.G. 「branchA」是否來自「開發」? 「branchB」是從「master」還是「branchA」派生的?
我怎樣才能回答上面的樣題?
我回到了一箇舊項目,我跑了好的git status
找出發生了什麼,我注意到太多分支!我想在開始就這一重新工作之前,做一些內務,但我不知道哪支來自哪個..GIT - 我從哪裏分支?
E.G. 「branchA」是否來自「開發」? 「branchB」是從「master」還是「branchA」派生的?
我怎樣才能回答上面的樣題?
有此不規範的答案,因爲分支機構只能連結到DAG中的特定的提交。例如,master
和foo
可能指向相同的提交;如果您從foo
創建分支,則與從master
創建分支的效果相同。也就是說,如果您通過gitk
或其他一些圖形歷史記錄工具可視化提交圖,則可以大致瞭解分支點在提交圖中的位置,以及各種分支指針指向的位置。
如果你使用git的「嫁接」,你可以創建循環,使它不再是一個DAG。顯然這是不好的。 :-)(毫不奇怪,儘管它應該大部分都是「正常工作」,不是我已經嘗試過了。)我懷疑你也可以用'filter-branch'創建循環,而不是我嘗試過。至少,直接合並似乎拒絕創造週期的嘗試。 – torek 2012-03-27 21:53:27
您可以使用圖形樹查看器,我使用gitg
來查看分支和差異,儘管大多數時間我都在使用命令行進行實際工作。
如果您使用的是Windows或Linux(使用GUI),只需安裝美麗的git的擴展。他們可以將分支/合併樹完全可視化。
http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.zip&can=4&q=
問候,
git merge-base示出了提交即兩個分支的共同祖先。
簡單的用法:git merge-base <branch> <branch>
顯示了兩個分支的共同承諾。
堅持一個命名約定和饒了自己所有的困惑。
從master
創建分支時 - 可以說,要實現電子郵件功能 - 您可以將其命名爲master_emailfeature
。那麼如果你需要從這個分支創建一個子分支來實現電子郵件的ssl,那麼你可以將它命名爲master_emailfeature_sslandtls
。
這清楚該分行從剛剛通過查看分支的名稱創建。
如果你想找出哪些遠程分支來源於當地分行,該命令可以提供一些線索。
git remote show origin
向下滾動,直到看到「配置‘混帳拉’本地分支:」那下面,則顯示你所有的地方分支機構的列表,每個將合併遠程分支。
嘗試過'gitk --all'?的 – Mat 2012-03-27 21:38:34
可能重複[混帳:尋找什麼分支提交的來源(http://stackoverflow.com/questions/2706797/git-finding-what-branch-a-commit-came-from) – Cascabel 2012-03-27 23:43:03
可能重複的是真的有點脆弱 - 它可能正是你想要的一些分支,但可能不包括一切。可能應該只是聯繫在一起,對不起。 – Cascabel 2012-03-27 23:44:19