[英]git diff only my changes
git diff commit_A commit_B<\/code>向我展示了
A<\/code>和
B<\/code>之間的所有差異
在提交 A..B 的范圍內,有提交
A..B<\/code>
--author=me<\/code>和
--author=someone else<\/code>
有沒有辦法為我<\/strong>在
A<\/code>和
B<\/code>之間的累積變化獲取
git diff<\/code> ,不包括其他人的變化?
我想一個潛在的解決方案是解析
git log --author=me<\/code>並將每次提交的差異“求和”在一起。
另一個潛在的想法可能是在
B<\/code>點接受
git blame<\/code>並按在
A<\/code>和
B<\/code>之間更改的行進行過濾。
語境:
假設我在很長一段時間內致力於一項大型功能。 在這項工作中,我提交了許多子功能。 為了跟上最新的代碼庫,
git pull<\/code>與其他貢獻者的貢獻創建合並提交。
我希望能夠看到我迄今為止所做的累積更改,而無需查看其他所有人的更改。 假設沒有合並沖突(我們接觸不同的代碼區域,但可能在同一個文件中。
有沒有辦法獲得 A 和 B 之間累積更改的 git diff,不包括其他人的更改?
不直接,不。
我想一個潛在的解決方案是解析 git log --author=me 並將每次提交的差異“求和”在一起。
相同的想法,但我認為更容易實現(盡管我希望補丁沒有正確應用的常見問題):從提交A
開始創建一個臨時分支,挑選你想要保留的每個提交(你的或他們的),同時忽略您想跳過的那些,然后將最終結果與原始結果進行比較。 一旦對差異感到滿意,就丟棄臨時分支。 因此:
git checkout -b temp A
for commit in $(git rev-list A..B); do
if want_commit $commit; then git cherry-pick $commit; fi
done
git diff A
git checkout realbranch; git branch -D temp
(臨時分支無需命名:一個獨立的 HEAD 將作為臨時分支。以上主要是為了說明。)
不是同一件事,但非常接近:
git --no-pager log --name-only --oneline --author="John"
您可以使用分支來執行此操作(從上下文中聽起來您的分支沒有合並到主分支中)。
這條評論解釋了這一點: git diff 只顯示修訂版/分支 A 領先於修訂版/分支 B 的提交
因此,如果您的分支是從分支 A 出來的 B,您可以運行:
git diff A...B
或者干脆:
git diff A...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.