2016-12-20 5 views
0

さて、私は明らかに、この権利を得るために私が何をしなければならないかを理解するのに少し問題があります。ローカルブランチをリベースした後にリモートマスターに変更を加える

私はスカッシュしたい遠隔マスターに多くのコミットをプッシュしました。これを行うために、git rebase -i HEAD~20セッションを開始し、squashスカッシュにするために使用しました。いくつかは1つにコミットされます。

私が解決できたいくつかの競合の後、私はローカルブランチの「短縮版」が残っていましたが、この時点で私はリモートブランチにこれを取得する方法がわかりません。

私がgit statusを実行すると、ローカルブランチとマスターブランチが1と11のコミットが異なることがわかります。

この時点でgit pullを実行すると、rebaseアクションが元に戻ってきて、私が始めたところに戻ります。

a     b 
o-->o-->o-->o-->o-->o 
    \  /
     o-->o-->o 

a b 
o-->o 

だけローカルへ:

だから基本的に私のようなものから行ってきました。私はローカルをプッシュすると、リモートでコミットを押しつぶすことはできますか?

+0

stash - > squash? – kaitoy

+0

@kaitoy whops、申し訳ありません。 D – displayname

+0

通常、通常のgitワークフローでは、リモートで履歴を書き換えることはできません(ここで行っていることは、履歴を書き換えて、マスターブランチから11個のコミットを取り除くことです)。 リモートブランチを扱っている唯一の人は、そのための権限があれば、 'git push -f'を実行できます。ただし、同じリモートブランチに基づいて作業している他のユーザーがいる場合は、これを実行しないでください。 – Alderath

答えて

2

使用する用語には多少の混乱があります。 「ローカルをプッシュ」するようなことがあります。 pushアクションはローカルからリモートへのアクションです。

変更内容をプッシュすると、リモートリポジトリで共有されます。

これらの変更が共有されると、それらの変更をスクラッシュすることは推奨されません。すでにpulledに変更があった場合は誰でも問題が発生しますので、

でも可能です。 強制的に変更をプッシュする必要があります。

git push -f

+0

ああ、大丈夫です。まあ、それはgithubのプルリクエストのためだ - 誰も私の変更はまだ私の外に引っ張ってきません。だから、これは私が推測する何かを破るべきではない? – displayname

+0

何も破壊してはいけません。それは歴史を書き換えます。 –

+0

チャームのように働いた!ありがとう:) – displayname

1

はい。力のプッシュはgit push -fで行ってください。

関連する問題