2016-06-22 18 views
0

SourceTreeの "Reset"オプションを使用してコミットの束を元に戻すことにしました。コミットはBare:私がクローンするために使うマスターにプッシュされました。リセットされたリポジトリは、Bare:masterから11個のプルを表示しています。ブランチを以前のコミットにリセットし、変更/マージが正しくプッシュされたことを確認したい

少し歴史:私は、更新されると、Code.Publishに公開するソースコードを持っています。それ以前は、Bare:masterを作成して、きれいなリポジトリを作成することができました。ソースコードが更新されるたびに、私はCode.Publishに公開し、次にステージ>コミット> Bare:masterにプッシュします。私はBareをクローンします:マスターは3つの別々のリポジトリ(Code.Web1、Code.Web2、Code.Web3)にマスターします。 Code.Publishにソースが変更されたら、私はこれらの変更をCode.Web1などにプルします。

私は今Code.PublishからBare:masterのマージ/プッシュを元に戻したいと思います。

読んでTHISから集めて、私が今復帰したいコミットのSHAを決定するのにgitk --date-orderを行うことができます。そして、最後のBADコミットを選択して、親コミットを良好に保つようにします。私はそれが正しいことを確認したかっただけです。

また、前述のようにCode.Web1などについては、Bare:masterから変更を取り出し、リポジトリにマージしました。私は単にCode.Publishで行ったのと同じことをやり直すべきでしょうか?コミットを最後の良いものに "逆戻り"させるべきですか?

私が行った変更はゴミだったので、私はこれらの変更を心配する必要はありません。そして、私はちょうど私がこのようにすることで大丈夫であることを確認したかった。上記のリンクで私を踏み外していることの1つは、将来のマージで問題があるかもしれないと著者がコメントしていることです。

私はこのようにして、ソースコードを変更してCode.Publishに公開すると、深刻な問題に遭遇しますか?

誰もこのコードを使用していないので、他の誰かのコードが混乱することは心配していません。

ありがとうございます。

+0

Gitでコミットを取り消す主な方法は2つあります。最初に説明したように、 'git revert'を使います。これは、前のコミットとまったく逆です。このメソッドはブランチに新しいコミットを追加するだけなので、公開/共有のリモートブランチで使用するのは完全に安全です。もう一つの選択肢は、インタラクティブなGitリベースなどを使って悪いコミットを削除することです。この方法は、ブランチの履歴を書き換えるため、公開/共有のリモートブランチで使用することは一般的には有効ではありません。そのため、すべての人に大きな混乱と混乱を招く可能性があります。 –

+0

@TimBiegeleisen、私が "復帰"(または復帰)と言うことができる限りは、私がやったことである "リセット"とは異なります。また、私が言及したように、これは共有リポジトリではないので、混乱/混乱の原因となる問題は私の心配ではありません。私はちょうど私がこれを「正しく」することを確かめたい(別の日に私がそれを「正しい」ものにしているかどうかを任せる)。 :) – REMESQ

+0

'master'ブランチの先頭から' N'をコミットしたい場合は、 'git reset -hard HEAD〜N'を使います。私はSourceTreeのリセットが何のために行われているのかよくわかりません。 –

答えて

0

私はいくつかの追加の研究を通じて、正しい答えを得る巻き上げ:

git update-ref HEAD [SHA ID][SHA ID]は、私は戻って取得したいコミットのIDです。

その後、古い参照を取り除くためにgit gcgit pruneを実行しました。

関連する問題