這似乎是一個非常簡單的問題,與an answer here,但它不是相當我正在尋找的答案。如何使用相對路徑查看兩次提交之間的所有更改文件?
這裏的故事:
我做了我的大部分發展在其上合併develop
當工作完成功能分支。合併之前&刪除功能分支,我喜歡查看我所做的。爲了得到我需要閱讀的文件列表,我這樣做:
git --no-pager diff --name-only develop..HEAD
所以,舉例來說,我可能會看到這樣的事情:
file1.js
path1/file2.js
path1/file3.js
這告訴我,我已對這些文件進行了更改,我需要在&中查看它們。
問題是這些文件路徑都是相對於存儲庫的根目錄的。我喜歡做以下我的編輯器中打開所有相關的文件:
git --no-pager diff --name-only develop..HEAD | xargs atom
如果我在庫的根目前是,這將打開的所有文件在原子不同的標籤,準備好我審查他們。但是,如果我碰巧在不同的目錄中(例如,如果我cd
編輯成path1
做某事),我得到一堆空白選項卡,因爲嘗試打開不存在的文件。在開始審查之前,我必須記住cd
回到存儲庫的根目錄。
今天早上太激怒了我一次,所以我去尋找解決方案。我發現the answer cited above這表明添加--relative
選項命令,就像這樣:
git --no-pager diff --relative --name-only develop..HEAD
這種類型的作品,但它只是給我的文件,在或者我在庫的目錄下。因此,在上面的例子,如果我cd
編入path1
,我會看到:
file2.js
file3.js
我真的很想看到的是:
../file1.js
file2.js
file3.js
這將讓我管它到並打開所有文件。
我看過了diff
命令git help
文檔和--relative
標誌確實允許你指定一個路徑,但它也排除了路徑之外的文件。
短寫一個很長的命令行這樣的:
pushd "$(git rev-parse --show-toplevel)" >/dev/null \
&& git --no-pager diff --name-only develop..HEAD | xargs atom \
&& popd > /dev/null
是否有一種方式來獲得兩次提交之間改變與相對於當前目錄的路徑中的所有文件的清單?
謝謝!這比我正在做的混亂的'pushd' /'popd'洗牌要好得多。 – Kryten