[解決済み] Git を使って、ある特定のブランチにのみ存在し、他のブランチには存在しないコミットをすべて表示する
2023-01-11 21:42:53
質問
あるブランチにおいて、以下のようなコミットの一覧を見たいと思います。 のみです。 であるコミットの一覧を見たいのです。 で この質問 では、どのコミットがあるブランチにあり、他の指定されたブランチにはないかを確認する方法について説明しました。
これは少し違います。 あるブランチにあるコミットで にもありません。 ブランチにはないコミットを見たいのです。
使用例としては、ブランチ戦略において、いくつかのブランチはマージされるだけで、直接コミットされることはないというものがあります。 これは、"merge-only" ブランチに直接コミットされたかどうかをチェックするために使用されます。
EDIT: 以下は、テスト用のダミー git リポジトリをセットアップする手順です。
git init
echo foo1 >> foo.txt
git add foo.txt
git commit -am "initial valid commit"
git checkout -b merge-only
echo bar >> bar.txt
git add bar.txt
git commit -am "bad commit directly on merge-only"
git checkout master
echo foo2 >> foo.txt
git commit -am "2nd valid commit on master"
git checkout merge-only
git merge master
メッセージ "bad commit directly on merge-only" を持つ、マージオンリーブランチに直接行われたコミットのみが表示されるはずです。
どのように解決するのですか?
私の親愛なる友人の好意で Redmumba :
git log --no-merges origin/merge-only \
--not $(git for-each-ref --format="%(refname)" refs/remotes/origin |
grep -Fv refs/remotes/origin/merge-only)
...ここで
origin/merge-only
は、リモートのマージ専用ブランチの名前です。 ローカルのみの git リポジトリで作業している場合は
refs/remotes/origin
を
refs/heads
に置き換え、リモートブランチ名
origin/merge-only
をローカルブランチ名
merge-only
というように、つまり
git log --no-merges merge-only \
--not $(git for-each-ref --format="%(refname)" refs/heads |
grep -Fv refs/heads/merge-only)
関連
-
git を使用してリモートリポジトリを更新する場合、現在のブランチの先端がエラーの背後にあるため、更新が拒否されました。
-
[解決済み] git rebase の取り消し
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] ステージングされた変更を表示するにはどうしたらいいですか?
-
[解決済み] 2つのリビジョン間でどのファイルが変更されたかを表示する
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] git のコミットを削除しても、変更は維持できますか?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】別のブランチから1つのファイルだけを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Git Bashが致命的に表示される:この操作は作業ツリーで実行する必要がある
-
git commit コマンドで追跡した新規ファイルをコミットすると、プロンプト *** Please tell me who you are が表示されます。
-
git pushで "Updates were rejected because your current branch is behind "というエラーが報告される。
-
コミットメッセージが空だったため、コミットを中止する git commit
-
[解決済み] Git を使って、あるブランチにありながら他のブランチにないコミットをすべて表示する
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、そのgitコミット履歴を保持する
-
[解決済み] Git のリモート HEAD を master 以外に指定するように変更する
-
[解決済み] ローカルのGitブランチをリモートレポにコピーする方法
-
[解決済み] プル前にローカルとGitHubのリポジトリの差分を確認する方法 [重複]について
-
[解決済み] Git タグリスト、コミット sha1 ハッシュの表示