問題タブ [squash]
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.
git - Gitマージ--squashと--no-commitの違い
git merge --squash
タイトルにあるように、aとaの違いについてはよくわかりませんgit merge --no-commit
。
のヘルプページを理解している限りgit merge
、どちらのコマンドも更新された作業ツリーに残り、編集してから最終コミット(または複数のコミット)を実行することができます。
誰かがこれらの2つのオプションの違いを明確にすることができますか?どちらを使用するのですか?
git - 部分スカッシュマージ
feature
-branch を -branchにマージしたいのですが、develop
一部のコミットを 1 つに押しつぶし、他のコミットをそのまま取り込みます。-branchgit merge --squash feature
からのどのコミットを押しつぶす必要があり、どれをそのまま採用するかを選択してから選択する可能性はありますか?feature
git - git merge: is there a way to force --squash?
So, the dev workflow for our project is like this: we create a task/bug ticket, and we branch off master to work on the task/bug, and eventually merge it back to master. We would like the commits on master to have nice messages. People committing on the task branch may not have good commit messages, and that's ok, but if the branch is to be merged, these commits with unclean messages are going into master.
One way to solve this is to always merge to master with --squash. That way, you get a chance to supply good commit message and treat the whole range of commits as one. I'm wondering if there's a way to enforce that? meaning, if we can let git server reject merges that aren't squashed?
git - Git - インタラクティブなリベースとスカッシュの問題
これについてSOに多くの質問があることは知っていますが、探している答えがまったく見つからないようです。
タスク ブランチをマスターにマージしたので、変更をリモート マスター ブランチにプッシュする準備ができました。ただし、それらは 2 つのコミットとして表示されます。
これは git log の出力と、1 つにまとめたい 2 つのコミットです。しかし、私がするとき:
実際には、以前にコミットされた (およびプッシュされた) 4 つのコミットが表示されるだけです。ブランチがマージされる方法を誤解していますか? git rebase -i を試してみると、git ログ リストの最初のコミットが表示されるだけです。
ありがとう!
git - --squash と --no-ff --no-commit の違いは何ですか?
マイクロコミットを非表示にするために使用する必要があるのはどれですか?
唯一の違いはgit merge --squash
、git merge --no-ff --no-commit
他の親の否定ですか?
git - 分岐中の押しつぶしまたはリベース
マスターブランチから新しいブランチを開始しています。しかし、私は新しいブランチの歴史全体を望んでいません。ブランチを開始するためのコミットを1つだけにします。
新しいブランチを作成し、すべてのコミットをリベースしようとしましたが、以前のコミットがないため、機能しません。「前のコミット」というものがわかりません...
たぶん、コミットを潰したほうがいいでしょう。しかし、私の新しいブランチは、作成時にすでにマスターとマージされています。
どうすればいいのかわかりません。アイデアはありますか?
git - squash のリベース後に git ブランチ履歴を master と一致させるにはどうすればよいですか?
次のツリー構造があるとしましょう。
コミット B をスカッシュしたいので、それぞれの履歴は次のようになります。
マスターをスカッシュした後、ブランチ 1 または 2 をチェックアウトすると、git log を実行すると古い履歴が表示されることがわかりました。git は分岐時にツリーをコピーしますか? 各ブランチを個別にリベースする必要がありますか?
ありがとう
git - git、その場でコミットをつぶす
ローカル git リポジトリと 1 つのリモート リポジトリがあります。最後にリモートからプルしてから、ローカル リポジトリに 5 つのコミットを行いました。
次に、リモートにプッシュする必要があります。そして、最後の 5 つのコミットを押しつぶす必要があります。
私はそれを行うことができますgit rebase -i HEAD~5
しかし、それは良くありません。ローカル リポジトリで何も変更したくありません。押しつぶされた 1 つのコミットをリモートにプッシュし、変更されていない 5 つのコミットをローカル リポジトリに残したいと考えています。
何か案は?
UPD: ローカル リポジトリに 5 つのコミットがある場合はどうでしょうか。自分のコードを他のユーザーと共有するには、新しいリモート リポジトリを作成する必要があります。この新しいレポのコミットをスカッシュする方法は?
git - リベースがノーオペレーションの場合、gitコミットを押しつぶす
貢献したい github プロジェクトのプルリクエスト対応パッケージにいくつかのコミットを押しつぶそうとしていますが、使用してgit rebase -i master
も期待するオプションが得られません (StackOverflow および他の場所での読み取りに基づく)。コミットをスカッシュしようとしたのは初めてなので、おそらく何かが足りないだけです。
プロジェクトの歴史は、次のようなものです。
この時点で、オリジン/マスターまたはアップストリーム/マスターに変更はありません。そのため、機能ブランチをリベースしなくても、オリジンとアップストリームの両方に線形です。するとgit rebase -i master
、ポップアップするエディターに私のコミットがリストされず、完全に空白になり、リベースの出力はSuccessfully rebased and updated refs/heads/feature
.
私は私が使用できることを知っています
しかし、そうするとすべての履歴が失われるというのが私の理解です。
私が望むことを達成する別の方法はありますか、それとも明らかなものを見逃しているだけですか?
アップデート
私が期待しているのは、機能ブランチで作成したコミットが一覧表示されたエディターで、選択するものとスカッシュするものを選択できます。実際に表示されるのは空のエディターです。これは、現在のブランチがマスター ブランチに対して線形であるため、何もリベースする必要がなく、エディターにコミットが表示されないのではないかと考えさせられます (ただし、上記の成功メッセージの代わりに、「nothing to rebase」のようなメッセージ)