2016-08-23 1 views
8

私はいつもそれが何か怖いと私は決してすべきではないと聞く。例えば、ここではプルダイアログがSourceTreeでどのように見えるかです:プッシュ後にリベースするとどうなりますか?

enter image description here

だから私は好奇心が強い、私は変更をプッシュしていた場合はどうなるとそれがどのように悪いとどうなるか、そしてリベースし、再びそれらをプッシュ?リポジトリを修正するにはどうしたらいいですか?

+0

良いニュースは、何も失われないということです。既存のリポジトリと重複して新しいブランチを作成するだけで、リポジトリから最近引っ張ってきた人にとっては不必要な手間がかかります。 – Thilo

+2

コミットをリベースすると、元のコミットと同じ内容で、別のIDを持つ別のコミットが生成されます。最初のコミットがプッシュされ、強制的に新しいコミットをプッシュすると、元のコミットを既に引っ張っている他の開発者は、重複コミット(ファイルは同じですが異なるID)を持つようになります。これは混乱につながります。 – axiac

答えて

7

何も起こりませんが、あなたの次のプッシュは受け入れられません。

強制的にプッシュしない限り。 これはリモートリポジトリも破損しないので、それほど悪くはありません。

このレポをより多くの人が使用していると状況が悪くなります。 書き換えの履歴は、リモートから新しい変更を引き出す他の人には少し混乱を引き起こす可能性があります。特に彼らはgitの良い知識を持っていない場合。 ローカルリポジトリの状態に応じて、書き換えられたリモートブランチを引っ張っている人にとっては、さまざまなことが起こる可能性があります。

誰かが機能Xで作業し、彼が変更に基づいてコードを変更した場合、彼はあなたがあなたの仕事のどれくらいを失ったかによって、少なくとも怒ってしまうかもしれません。

+1

良いニュースは、他の人がブランチに自分の変更を反映させることができるということです(ローカルリポジトリでは何も失われません)。そして一つのポイントは、誰かが一緒に物事をマージする必要があります(そして、それはおそらく強制押された人でしょう)。 – Thilo

+2

@Thiloはい、でもGITの仕方を知っているチームには少なくとも1人は必要です。それ以外の場合は、コードを食べたり、プロジェクトや世界の飢餓などを壊したりしてGITを責めることを想像することができます。 – Mateusz

+1

誰かがいると(私は誰もが)gitの仕事がどのように役立つかを理解しています。 '--force'を実行し、警告を警告します。 – Thilo

1

SourceTreeにリストされているシナリオでは、SourceTreeは、リモートからプルする変更の上にプッシュされていないローカルのコミットをリベースします。

THATオプションを使用する前に変更を既にプッシュしていた場合、それらの変更は既にリモートにあるため、リベースされません。

複数のリモートがあり、1つのリモートに変更をプッシュした後、別のリモートからプル/リベースすると、重大な問題が発生する可能性があります。

プッシュ中にリベースするかどうかは議論の対象です。私はそれを推薦していませんが、それは一般的に安全です。 https://developer.atlassian.com/blog/2014/12/pull-request-merge-strategies-the-great-debate/

関連する問題