問題タブ [git-rev-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
81719 参照

git - Git コミット範囲のダブルドット ".." とトリプルドット "..." の違いは何ですか?

一部の Git コマンドはコミット範囲を取り、1 つの有効な構文は 2 つのコミット名を 2 つのドット..で区切るもので、別の構文は 3 つのドットを使用します...

2つの違いは何ですか?

0 投票する
8 に答える
31648 参照

git - データベース内のすべてのgitオブジェクトを一覧表示するにはどうすればよいですか?

リポジトリ内のすべてのオブジェクトのSHA1の生のリストを取得するためのより良い方法はありますか
ls .git/objects/??/\*

cat .git/objects/pack/*.idx | git show-index

私は知ってgit rev-list --allいますが、それはによって参照されるコミットオブジェクトのみをリストし、などによって作成された参照されていないオブジェクトを含むすべて.git/refsを探しています。git-hash-objectgit-mktree

0 投票する
2 に答える
4486 参照

git - git-rev-list の順序

git-rev-list は、返されるコミットをどのように順序付けますか?

私は主に、開発の並行ブランチで行われ、その後メイン ブランチにマージされるコミットについて言及しています。コミットは日付順に並べられているようには見えませんが、コミットは過去または将来のさまざまな時点から選択できるため、これは理にかなっています。

たとえば、ここにいくつかの歴史がありgit-logます...

これは、rev-list による同じ履歴の出力です。

rev-list コマンドは、最初の親をリストするか、n 番目の親のコミット グラフに降りるかをどのように決定しますか? たとえば、上記の (1) を見た後、rev-list は 2 番目の親 (2) に降りてきます。ただし、(3) を見た後、最初の親 (4) に降りてきます。この動作は明確に定義されていますか?

0 投票する
3 に答える
765 参照

git - 複数の特定のコミットを含む Git コミットを見つける

一般的な問題:一連のコミットが与えられた場合、それらすべてのコミットを先祖として持つコミットのリスト、または関連して、それらすべてのコミットを含む最初のコミットを見つけるにはどうすればよいですか。

git branch --contains <commit>セット内のすべてのコミットに対して返されるブランチを探すことで、コミットを含むブランチ (同様にタグ) を見つけることができますが、オプションgit rev-listはありません。事実上、通常の引数を と組み合わせて、出力を、それらのいずれかではなく、リストされているすべてのコミットを含むコミットに制限する--contains方法を探しています (これが正常に機能する方法です)。--containsgit rev-list--contains

具体例:aコミット, b,が与えられた場合c、その祖先に 3 つのコミットすべてがある最初のコミットを見つけるにはどうすればよいですか?

たとえば、以下のツリーで、X とマークされたコミットを見つけるにはどうすればよいですか?

でできる魔法がいくつかあると思いますがgit rev-list、おそらく<commit1>...<commit2>記法が関係していますが、それ以上のことはできません。

0 投票する
3 に答える
7577 参照

git - git で、いくつかのタグ以降のすべてのタグを一覧表示します

タグを使用して、リリース バージョンを識別し、タスクの「開発完了」コミットを識別しています。を実行するgit tagと、次のようなリストが表示されます。

すべてのタグがブランチのコミットを指していると仮定するとmaster、いくつかのタグ以降のすべてのタグを一覧表示する方法はありますか? たとえば、v0.1.2リリースに含まれるすべてのタスクのリストを生成するには、次のようなものを探しています (実際のコマンドではありません)。

次のような出力を取得します。

これを行う方法はありgit tagますか?

これを行う方法はありgit rev-listますか?

(または他のgitコマンド?)

アップデート

回答とコメントに基づいて、私が現在使用しているものは次のとおりです。

2回目の更新

新しく選択された回答。これはまさに私が最初に探していたものです。はるかにエレガント。

0 投票する
1 に答える
306 参照

git - Git リポジトリの縮小 - コミットではなくパケット内のオブジェクト

約 2 GB の Git リポジトリを縮小しようとしています。

ProGit ブックの第 9 章 (9.7) の「オブジェクトの削除」セクションに従っています: http://git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery

を実行してからandコマンドを実行すると、約 118MB のファイルが見つかりましgit gcた。私のレポにある必要はまったくありません。永遠に破壊する必要があります。git verify-packgit rev-list.tar

しかし、どのコミットがそのファイルを使用したかを調べようとすると、何も得られません:

これは、ファイルがリポジトリ履歴にないということですか? その場合、そのままにしておくことができますか、それともオブジェクトとして押し上げられますgit pushか?

もしそうなら、どうすればそれを取り除くことができますか。

0 投票する
1 に答える
790 参照

git - Gitコミット範囲の「A..B」(ダブルドット)と「--right-only A...B」(フィルタリングされたトリプルドット)?

比較Git コミット範囲のダブルドット ".." とトリプルドット "..." の違いは何ですか? 、より頻繁に役立つ質問です。

以下が と同じ一連のコミットを生成するかどうかを明確にしたいと思いますgit log A..B

それらは、同じことを達成するためのより回りくどい方法のように思われます。

最初の動機は、これらのコマンドの意味をより深く理解することでした。これには、すでにチェリーピックされたコミットを無視することが含まれます。

この質問の拡張は、この種の「一方的な」チェリーピック除去を行うために、対称差 (つまり、トリプル ドット) が必要な理由を尋ねることです。たとえば、チェリー ピックの修正を含む、B での一意のコミットを見つけるには、次のような簡単なことはできないはずです。

それは、すべての A コミットA..B. (つまり、この架空のコマンドでは、git は、チェリー ピッキング ロジックを適用しようとする前に、A に関連するものをすべて破棄します。)

0 投票する
1 に答える
759 参照

git - git rev-list と git show を組み合わせる

現在、ブランチで行われたコミットを確認するには、次のことを行います。

ただし、これはコミットを新しい順にリストします。最初のコミットから最新のコミットまでレビューしたいと思います。この順序でコミットハッシュを取得するには、次を使用できます

しかし、これをshowまたはdifftoolに渡す方法を誰か教えてもらえますか?

0 投票する
2 に答える
163 参照

git - 特定のブランチから master へのマージが発生しましたか?

Git リポジトリ内には、develop と master という 2 つの主要なブランチがあります。新機能の開発は、develop のブランチで行われ、デプロイのために master にマージされます。

特定の時間以降、開発からマスターへのマージが発生したかどうかを判断したいと思います。私は実際のコミット自体にはあまり興味がありません。開発からの何かがマスターにマージされていることだけです。

私が試してみました:

git rev-list --merges origin/develop..origin/master --since <date> | wc -l

マージがあることを知っている期間ですが、常にゼロを返すようです。

アップデート

また、私はそれを段階的に構築しようとしました。で始まります:

git rev-list --merges origin/master --since <date>

開発ブランチと存在する可能性のあるホットフィックス ブランチの両方から、すべてのマージをマスターに取得します。結果に何も得られないのは、「origin/develop」制約を追加したときだけです。