2017-06-20 58 views
0

「拉入請求」的DIFF查找到位桶/藏匿

我有典型的git的工作流程(藏匿=本地託管到位桶):創建一個分支,它的工作,將其推到定期藏匿,變基定期關閉master,通過隱藏合併到master

結果是在Stash中包含正確提交的拉取請求。

  • 有沒有辦法在命令行上使用git來查找這些提交? git log包含它們,但git reflog <my-feature-branch>只顯示其中的一部分。
  • 找到這些提交後,我如何生成我的PR的差異?最後一次提交很明顯,但我找不到合適的初始點。

回答

1

更新 - 從評論中,你說你在分支合併後和分枝後進行分析。我通常不會假設這些事情,因爲:

1)要麼你有my_feature_branch坐在提交之前的提交,或者你沒有。你提到能夠看到git log的提交,所以我假設找到分支提示不是問題。 2)將東西重新貼到主人身上通常不會改變任何關於master..my_feature_branchmaster...my_feature_branch(在他們各自的背景下)的含義。

但是因爲我假設你不是那種讀出答案第一句並且在沒有嘗試過答案給出的建議的情況下寫下防禦性評論的人,這表明你可能已經完成了一個變形會改變分支之間的關係 - 在這種情況下,應該在問題中說明該分配的性質。

你說你明白git不知道任何拉取請求,但是你根據git知道的事情來解除比較,並繼續詢問是否有辦法讓git告訴你拉取請求...不,沒有。你需要的是在創建PR時my_feature_branch指向的提交歷史,而不是同時指向master的ocmmit的任何歷史。你可能已經完成了使之複雜化的操作,或者你可能只會認爲你有。

如果此時指向master的提交現在可從master(通過父指針)到達;並且如果您有任何指向(或者SHA ID)的提交my_feature_branch,那麼我已經建議的符號將起作用。

即使my_feature_branch被重訂基期,只要它的新基地還處於master歷史和底墊沒有下降或編輯提交,相同的符號仍然使用重寫工作,提交對應於舊my_feature_branch尖。

如果您以其他方式重寫my_feature_branch(並且沒有跟蹤原始提交),那麼您最好的辦法是在reflog中找到提示提交,然後使用常規的git loggit diff(as如下所述)使用該提交的SHA而不是分支ref名稱。


請注意,拉請求不是「核心git」的概念;這是回購託管服務所特有的。你真正考察的是一個分支,你已經發出了一個拉取請求。

我不明白你的第一個問題。正如您已經正確識別,git log顯示分支的歷史。 reflog是別的東西(ref是指在這個特定克隆中的本地歷史記錄),而不是你想要的。我猜git log的麻煩是,如何讓它只有顯示那些還沒有在master的提交? (:在這種情況下,兩個點注。)所以,如果你有

x --- x --- x --- x <--(master) 
     \ 
     A --- B --- C <--(my_feature_branch) 

日誌的輸出將列出ABC您可以通過

git log master..my_feature_branch 

做到這一點。

至於怎麼做的差異,這是類似的,但有一點不同:

git diff master...my_feature_branch 

(注:3點這段時間)

這會自動查找「合併基地」,爲mastermy_feature_branch並且相對於基礎區別my_feature_branch

+0

我知道「pull request」是git的頂層構造。我試圖確定分支合併之後PR所做的更改,以及分支歷史記錄中主分支頂部的幾次重置之後。這個想法是比較由PR更改的行和測試覆蓋的行。我嘗試瞭解是否可以自動提取「pull request」更改並且不訪問Stash/Bitbucket API。 – 9000

+0

*嘆*。只需重新閱讀您的評論,並且您似乎留下了關鍵信息。 –

+0

對不起!我想我只是在評論中重新提出了這個問題。請指出省略的重要信息,我將在更新的問題中突出顯示。 – 9000