1

私が Git コミットを押しつぶした数回のうち、押しつぶしたい以前のコミットを選択するのに手作業が必要でした。

これを自動的に行う方法はありますか-私の目標は、特定のリモートブランチにまだプッシュされていない以前のすべてのコミットを押しつぶすことです。

詳しく説明すると、「dev」というローカル ブランチが 1 つと、パブリックとプライベートの 2 つのリモートがあるとします。必要なものをすべてコミットして、プライベート リモートの「dev」というブランチにプッシュしprivate/devます。しかし、公共のリモートでは、物事を整理整頓し、「マスター」と呼ばれる 1 つの標準ブランチを維持したいと考えていpublic/masterます。私が言ったように、パブリック リモート マスター ブランチにまだ到達していないすべてのコミットについて、それらを 1 つの大きなコミットに押しつぶして、パブリック/マスターにプッシュしたいと考えています。

どうすればそれを達成できますか?複雑そうです。

4

1 に答える 1

3

一時的なブランチを作成するだけですpublic/masterpublicパブリックリモートの名前で、masterたとえば宛先ブランチです)

そして、あなたは使用しますmerge --squash(「 gitでは、の違いは何ですか?merge --squashrebase」を参照)

 git checkout -b temp public/master
 git merge  --squash dev
 # since merge --squash does not produce a commit:
 git commit -m "squash dev"
 git push public temp:master
 git checkout dev
 git branch -d temp

コロンの構文については、「git push branch to a new repo with a different name」および の例のセクションを参照してgit pushください。
ローカル ブランチを別の名前のリモート ブランチにプッシュできます。

于 2016-10-22T04:55:28.747 に答える