これはかなり簡単な質問のようです、an answer hereと、それはないかなり私が探している答えです。2つのコミット間で変更されたファイルを、相対パスですべて表示するにはどうすればよいですか?
私は作業が行われたときdevelop
とマージされた特徴の枝に私の開発のほとんどの操作を行います。
は、ここでの話です。 &を統合して機能ブランチを削除する前に、私が行ったことを確認したいと思います。私は確認する必要がありますファイルのリストを取得するには、私はこれを行う:
file1.js
path1/file2.js
path1/file3.js
これは私が「と言われます:
git --no-pager diff --name-only develop..HEAD
ので、例えば、私はこのようなものが表示されることがありますこれらのファイルを変更したので、私は&に行ってみる必要があります。
問題は、これらのファイルパスがすべてリポジトリのルートからの相対パスであることです。準備ができて、
git --no-pager diff --name-only develop..HEAD | xargs atom
私は、リポジトリのルートに現在だ場合、これは原子内の別のタブにあるすべてのファイルを開きます:私は私のエディタで、関連するすべてのファイルを開くには、次の操作を実行したいです私はそれらを見直す。私は(私はpath1
にcd
編何かをする場合、例えば)別のディレクトリにあることが起こる場合
しかし、私は存在しないファイルを開くために試みとして空のタブの束を取得します。レビューを開始する前に、cd
をリポジトリのルートに戻しておく必要があります。
これは今朝私をあまりにも頻繁に苛立たせたので、私は解決策を探しに行った。私はそうのように、コマンドに--relative
オプションを追加することを示唆the answer cited aboveが見つかりました:
git --no-pager diff --relative --name-only develop..HEAD
作品のこの種を、それだけで、または私はリポジトリにいるディレクトリの下に私のファイルを提供します。私はpath1
にcd
編をしたのであれば、上記の例では、私が表示されます:
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
は、現在のディレクトリに対して相対的であるパスを持つ2つのコミットの間で変更されたすべてのファイルの一覧を取得する方法はありますか?
ありがとうございました!それは私がやっていた厄介な 'pushd' /' popd'シャッフルよりもはるかに優れています。 – Kryten