88

リベースのスクリプトを作成しようとしていますが、リベースによって競合が発生するかどうかに応じて、スクリプトは異なるパスをたどります。

リベースを実行する前に、リベースによって競合が発生するかどうかを判断する方法はありますか?

4

5 に答える 5

5

以前からすべての変更を復元するよりも、git rebase を実行して、必要に応じて操作することができます。いくつかのブランチを にリベースしたがmaster、それが気に入らないとします。

  1. git reflog -20- HEAD の最後の 20 の位置と簡単な説明が表示されます
  2. git checkout <the_branch_name>- HEAD をブランチに配置します
  3. git reset --hard <old_sha1_found_in_reflog>- HEAD とブランチを古い参照に配置します。このようにして、古いブランチを復元できます。

ここで理解すべきメカニズムがいくつかあります。

  1. とにかく、コマンドではなく、gitで何かを削除することは決してありません。参照されていないブランチを通過して削除するガベージ コレクターです (デフォルトは 3 か月)。したがって、リベース前のブランチはまだ存在しています。
  2. 同じブランチのリベースについても同じことが言えます。古いツリーの隣に新しいツリーが書き直されただけです。
  3. rebaseおよびその他の HEAD 操作のすべての履歴は、reflog
  4. @{N}から注釈を使用できます。reflog

したがって、 の後に何も失わrebaseれることはありません。それを見つけて回復する方法を知っているだけです。

たとえばrebase、元に戻すか削除する前にタグを配置できます。すべての SHA1 調査ステップを回避します。

于 2016-12-09T13:48:07.177 に答える