git push
コマンドを実行した場合に何がプッシュされるかを確認する方法はありますか?
私が描いているのは、Githubの「プルリクエスト」機能の「変更されたファイル」タブのようなものです。プルリクエストを発行すると、プルリクエストを受け入れた場合に何がプルされるかを調べて確認できます。
コマンドラインはOKですが、私はある種のGUI(上のスクリーンショットのような)を好みます。
git push
コマンドを実行した場合に何がプッシュされるかを確認する方法はありますか?
私が描いているのは、Githubの「プルリクエスト」機能の「変更されたファイル」タブのようなものです。プルリクエストを発行すると、プルリクエストを受け入れた場合に何がプルされるかを調べて確認できます。
コマンドラインはOKですが、私はある種のGUI(上のスクリーンショットのような)を好みます。
回答:
プッシュするファイルのリストについては、次を実行します。
git diff --stat --cached [remote/branch]
例:
git diff --stat --cached origin/master
プッシュされるファイルのコード差分については、次を実行します。
git diff [remote repo/branch]
変更されるファイルの完全なファイルパスを表示するには、次のコマンドを実行します。
git diff --numstat [remote repo/branch]
これらの差分をGUIで表示する場合は、そのためにgitを構成する必要があります。ビジュアルdiffプログラムで「git diff」出力を表示するにはどうすればよいですか?を参照してください。。
HEAD
原点ではなく、インデックスではなくを比較する必要があります(git diff origin/master HEAD
)。インデックスを比較しても、コミットするためにステージングされた変更がない場合にのみ、同じ結果が得られます。ステージングされた変更がある場合、それらは差分に含まれますが、まだコミットされていないため、プッシュされません。
git diff --stat origin/master HEAD
があります。これが正しい回答です。
git diff --cached [remote/branch]
トリックを実行します:)
常にドライランがあります:
git push --dry-run
実際にデータを送信する以外のすべてを行います。
よりグラフィカルなビューが必要な場合は、多数のオプションがあります。
gitに付属するTigとgitkスクリプトはどちらも、ローカルコピーの現在のブランチとリモートコピーまたはオリジンのブランチを表示します。
したがって、オリジンの後にあるコミットは、プッシュされるコミットです。
入力してプッシュするブランチでシェルからgitkを開きgitk&
、リモートにあるものとリモートにプッシュするものの違いを確認するには、ローカルのプッシュされていないコミットを選択してリモートを右クリックし、 「これを比較->選択」を選択:
git diff --stat HEAD origin/master
またはを実行しgit diff HEAD origin/master
ます。重要なのはHEADです。それ以外の場合は、コミットされていない変更を差分に含めます
git push --dry-run
は、リモートでの書き込み権限が必要なことです。したがって、上流にプッシュする権限のないクローンがあり、ローカルのプッシュ--dry-run
されていない変更を確認したい場合は、実行しないでください。
branch
との違いを見たいだけの場合origin/branch
は、実際にはリモートリポジトリに接続する必要がないため、Ionuț G. Stanの答えを使用します。これは、必要に応じて、良い場合も悪い場合もあります。
単純にプッシュされるのを待ってコミットを一覧表示するには (これはあなたが覚えているだろうものです)
git cherry -v
SHA1の横にコミットサブジェクトを表示します。
git cherry -v heroku/remote
です。たとえば、コードを複数のリモートに保持している場合です。
おそらく実行したいでしょうgit difftool origin/master...
。これは、現在のブランチにあるものの、まだorigin / masterブランチにないものの統合されたdiffを表示し、選択したグラフィカルdiffツールに表示する必要があります。最新の状態にするには、git fetch
最初に実行してください。
git difftool -d origin/master
、私はdifftoolをmeldに設定しているので、うまく機能します。
git difftool -d
アクエリアスパワーに感謝します。唯一の問題は、移動されたファイルを検出せず、代わりに削除および追加されたものとして表示することです。
リモートリポジトリにプッシュする前にローカルバージョンを比較する1つの方法(ドライランでのプッシュの一種):
TortoiseGitを使用:
ルートフォルダープロジェクトを右クリック> TortoiseGit>以前のバージョンとの差分>
バージョン2の場合refs/remotes/origin/master
を使用するとgit gui
、実際のコミットで変更された内容のリストを確認できます。gitk
reflogの簡単なインターフェースを提供するwich も使用できます。と比較して、何がプッシュされるかを確認remotes/...
しmaster
てください。スクリーンショットに似たインターフェースを提供します。
どちらのプログラムもgitに含まれています。
gitk --all
あなたがすべてのコメントの完全なリストを取得する今、あなたはプッシュにリモートであなたのDEV-ブランチの実際の状態を比較することができます。。
Mac OS Xを使用している場合は、Towerを入手することをお勧めします。これは、Gitとのやり取りが私にとって喜びになった素晴らしいプログラムです。端末コマンドを覚える必要がなくなりました。ファイルの違いを表示、追跡、解決するための優れたGUIを提供します。
いいえ、私は彼らとは関係ありません。私は彼らのソフトウェアを使用し、本当に気に入っています。
ちょうど私の2セントを追加する...私はgitlabランナーのgitlabパイプラインでジョブを実行するときにこれを実装したいと思いました。これを行う最良の方法は、次のスクリプトを使用することでした。
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
また、私の場合、拡張子を使用してファイルをフィルタリングし、これを実現するために使用しました:
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA '*.py'
その後、たとえばこのリストを別の場所に転送できます。おそらくリンターです。;)
これが誰かを助けることを願っています。