0

以前のバージョン管理システムから git に移行することに意味があるかどうかを判断しようとしています。私たちが苦労している問題の 1 つは、最後のプル以降のすべてのコミットで、他のユーザーによってどのファイルが変更されたかを簡潔に把握する方法です。特に、同じファイルが複数のコミットで変更されている場合、そのファイルをリストに一度だけ表示したいだけです。 私が読んだことから、確認する前に実際にリモートリポジトリをプルする必要があるようですが、それでも、変更されたすべてのファイル名のリストを取得する (簡単な?) 方法はないようです。私たちの git の理解はまだそれほど深くはありませんが、フェッチを行う際の懸念は、いくつかの非常に大きなファイル (画像、aiff など) がプッシュされた可能性があり、何が変更されたかを調べるためだけにすべてをフェッチする必要はありません。 ? stackoverflow で他の Q/A をいくつか読んだことがありますが、同様の質問を見たことはありますが、実行可能と思われる回答は見たことがありません。作業を楽にするためにいくつかの GUI ツール (Tower と SmartGit) を試してきましたが、どちらもこれを行うことができないようです。

4

3 に答える 3

1

ssh 経由でリポジトリに直接アクセスすると、ローカル クローンからこのようなものを実行できます。

ssh githost "git --git-dir=/data/repo.git diff --name-only\
             $(git rev-parse origin/master) master"

おそらく、これをスクリプトまたはエイリアスに入れたいと思うでしょう。$(git rev-parse origin/master)クローンのリモート追跡ブランチの ID を取得するために、クローンでローカルに実行されることに注意してください。

于 2012-11-08T06:46:01.337 に答える
1

現在のマスターと以前のマスターの間で変更されたファイルを表示する方法:

git fetch
git diff --stat master origin/master

最初のコマンドは、ツリーを変更せずに最新の更新を取得します。2 つ目は、変更されたファイルのリストを (挿入/削除の統計とともに) 表示しますgit pull。その後、実行git merge origin/masterして変更を上流のものとマージできます。(これは と同等ですが、その間にいずれかがプッシュされた場合、git pullプルはサーバーから新しい変更を取得できます。)

残念ながら、git では、更新をローカルにプルせずに diff を実行する方法が明確になりません。

于 2012-11-07T21:11:37.997 に答える
0

試す:

git log --stat

これにより、現在チェックアウトされているリポジトリの詳細なログが出力されます。

gitが最初にローカルでチェックアウトせずにあなたが望むことをするかどうかはわかりません。

于 2012-11-07T21:04:11.893 に答える