2017-06-20 20 views
3

私はずっと試してみることができませんでした。私は2つのローカル支店、mastertestsを持っています。私は同じリポジトリを持つ2つの対応するリモートブランチを持っています、origin/masterorigin/tests。私は別のリモート支店public/masterを持っています。私は、ローカルのmasterとリモートorigin/masterの両方でコミット履歴にプッシュした人もいます。今、私はorigin/masterのすべてのコミットを押して、リモートブランチpublic/masterに押し込みたいと思います。私はそれを行う方法を理解することはできません。すべてのコミット履歴をスクラッシュし、別のリモートリポジトリにプッシュするにはどうしたらいいですか?

新しいローカルブランチでrebaseを実行しようとしましたが、動作しませんでした。

+0

ここをクリックしてください:https://stackoverflow.com/documentation/git/5150/tortoisegit/31772/squash-commits – Julian

+0

doeas "didnt'w work"とはどういう意味ですか? – sensorario

答えて

3

最初のコミットにリセットしてから、最後に強制的にプッシュします。

git pull origin master 
git checkout master 
git reset --soft <my-first-commit> 
git commit --amend -m "New commit message" 
git push public master --force-with-lease 

最後のコマンドが最後のコマンドの前に

  • 実行git fetch public master、または代わりに、最後のコマンドの
  • 実行git push --force-with-lease public +masterのいずれか、「古い情報」エラーになる場合。

あなたは見つけることができ、あなたの最初の本のようにコミット:

git rev-list --max-parents=0 HEAD 
+0

最後のコマンド( 'git push public master --force-with-lease')がエラーを返します。 '! [拒否] master - > master(古い情報) ' public/masterにも内容があります。しかし、それは問題ではありません。 –

+0

@ soham.m17エラーは何ですか? –

+1

よろしくお願いします。出来た。しかし、私は 'git pull public master'をプッシュする前に行う必要がありました。だから、そのコマンドを追加してください、私は答えを受け入れるでしょう。どうもありがとうございます! –

1

もあなたを(非常に最初にコミットするために、現在の作業ツリーを運ぶでしょう)孤児のブランチをチェックアウトすることによって動作し、その後でしたあなたが気に入っているどんな遠隔地にでも入ることができます。

+0

しかし、これは、私が他のリモートブランチで行ったコミットの履歴をすべて潰してしまいます。 –

+0

これは質問またはコメントですか?それが疑問であれば、あなたの新しいブランチの内容をリモートブランチに置き換えたい場合は、単に '' '' '' --force'''を使います。コメントの場合:あなたがリモートブランチに何かを押すまで、リモートブランチには触れません。 – eftshift0

+0

申し訳ありませんが、私はコミットの歴史のすべてをスカッシュしない*と言いたかったのです。 –

関連する問題