問題タブ [git-reflog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
12 に答える
155032 参照

git - gitリポジトリから古い履歴を削除するにはどうすればよいですか?

この特定のシナリオのようなものを見つけることができなかったのではないかと思います。

私は多くの歴史を持つgitリポジトリを持っています:500以上のブランチ、500以上のタグ、2007年半ばにさかのぼります。約19,500のコミットが含まれています。2010年1月1日より前のすべての履歴を削除して、より小さく、扱いやすくしたいと考えています(履歴の完全なコピーをアーカイブリポジトリに保持します)。

新しいリポジトリのルートになりたいというコミットを知っています。ただし、そのコミットで開始するためにリポジトリを切り捨てるための正しいgitmojoを理解することはできません。私はいくつかの変種を推測しています

移植を含むことが必要になるでしょう。また、保持したい200以上のブランチのそれぞれを個別に処理してから、リポジトリにパッチを適用して戻す必要がある場合もあります(私知っている方法)。

誰かがこのようなことをしたことがありますか?それが重要な場合は、git1.7.2.3を使用しています。

0 投票する
2 に答える
3478 参照

git - マスターgitブランチを台無しにしました...何を元に戻す必要があるのか​​わかりません

私はマスターからのブランチを持つgitリポジトリに取り組んでいます。これをabブランチと呼びます。私のチームはブランチに取り組んでおり、abgithubを使用したプルリクエストワークフローを持っています。私のチームメートの1人が、自分のブランチjeremy_ab_deletionsからブランチへのプルリクエストを行いましたab。私は彼の変更を確認/テストしていましたが、abブランチにマージしようとしたときに、誤ってマスターにマージし、間違いを見つける前にマスターをgithubにプッシュしました。私が行った変更をgit-revertできると思っていたのですがgit revert SHA、うまくいったようです...

それで十分だと思い、喜んでabブランチに戻って作業を続けました。しかし今、私は、決してabマスターになるべきではないブランチからの以前のコミットがすべてマスターにあることに気づきました。それは...かなり混乱しています。彼のブランチは元々から分割されていたので、それをマスターにマージしたので、を使用して元に戻す必要がありました。abgit revert -m 1 SHA

今日、私はどこが間違っていたのかを正確に把握しようとしていましたが、gitの履歴とreflogに基づいて、あらゆる種類の混乱が生じています。最初に、私は元に戻すことを試みました、そして次にしますgit revert -m 1 SHAしかしgitは私に言います:

だから私は大丈夫だと思います...多分それはマージコミットではなく、私は別のSHAをターゲットにする必要があります。しかし、歴史を見ると、私は一生の間、これらのどれがマージコミットであったかを理解することはできません...

「これはABにあるはずだった」という2つのコミットは、「削除された不要なテスト」と「未使用のビューとページの削除」コミットを元に戻すための元に戻すコミットです。マスターへの次のコミットは今日で、それ以前のコミットは16日で、どちらも関連していませんでした。実際のマージがどこで発生したかわかりません。

私はreflogを調べて、正確にすべてが台無しになっている場所を確認しました。キーファイルを使用してreflogバージョンを上下に移動し、git reset --hard HEAD@{NUM}キーファイルを調べて、悪い変更がまだその場所にあるかどうかを確認しました。最後に、これらのreflogに絞り込みました。

具体的には、ここのHEAD @ {88}には不正なコミットがなく、HEAD@{87}には不正なコミットがあります。したがって、私がコミットで失敗したと仮定するのは合理的ですmerge jeremy_ab_deletions: Fast-forward......しかし、それがどの「マージコミット」であるかを理解することはできません。私はこれを試しました:

私は...実際のマージコミットが見つからないようですか?誰かが私が間違ったことを知っていますか:/私は今あらゆる種類の道に迷っています。

0 投票する
1 に答える
1110 参照

git - Git Reflogを無期限に保持しますか?

私は、データを回復する機能を含め、自分のデータについて少し偏執的になる傾向があります。

Gitreflogデータは30日後に整理されます。reflogデータが無期限に維持および保持されるように設定する方法はありますか?

そうすることの主な長所または短所(スペースまたは速度の考慮事項以外)はありますか?

0 投票する
2 に答える
7377 参照

git - インデックスに追加されたが、gitresetによって削除されたファイルを回復する

インデックスにいくつかのファイルを追加しましたが、誤って。で削除しましたgit reset --hard。それらを回復するにはどうすればよいですか?何が起こったのか:

  1. を使用してすべてのファイルを追加しましたgit add .
  2. それから私はコミットしました
  3. ステータスを確認したところ、追加からのコミットに含まれていないファイルがまだありましたが、これは奇妙でした
  4. 追跡されていないファイルを再度追加しましたが、今回は機能しました
  5. しかし、すべてを1つのコミットにまとめたかったので、コミットした内容をステージング解除する方法を調べました。
  6. 私が使用git reset --hard HEAD^しました—悪い考えです、明らかに、すべてのファイルが削除されました
  7. だからgit reflog私は中断したところを見つけていました
  8. その後git reflog ______、最後のコミットに戻りました。
  9. その後git reset HEAD、コミットのステージングを解除していましたが(最初に実行する必要がありました)、コミット後に追加したファイル(上記を参照)はまだ残っていました。

これらのファイルを元に戻すにはどうすればよいですか?

0 投票する
3 に答える
1588 参照

git - どのブランチにも表示されないが、「git show」で利用可能なコミットに何が起こったのか

ベアレポで利用可能なコミットIDがあります。
git show commit id、変更を含むコミットを示します。

ただし、以下のコマンドを使用すると、同じコミットが表示されません

また

コミット ID に何が起こった可能性がありますか?

0 投票する
2 に答える
195 参照

git - なぜ新しいヘッドと古いヘッドがgitreflogを使用して同じshaidを持っているのですか?

これらは2つの異なるHEADSである必要があると思うので、なぜそれらが同じsha値、つまり2aad8cbに対応するのか...

0 投票する
1 に答える
2157 参照

git - git reflog で出力されるエントリの数を増やすにはどうすればよいですか?

(-D を使用して) 削除したブランチがありますが、元に戻す必要があります。git reflog コマンドは一見の価値があると思いました。実行すると、50 個のアクションしか表示されず、このブランチからのコミットが見つかりません。ブランチは 1 日前に削除されましたが、30 日間は reflog から削除されないという印象を受けました。

reflog でより多くのエントリを表示する方法はありますか?

0 投票する
1 に答える
6646 参照

git - gitpullによって上書きされた変更を復元する

によってオーバーライドされた変更を取得できないというgitの問題が発生していますgit pull

私はGitHubリポジトリなしでプロジェクトの作業を開始し、後でそれを作成しました。READMEリポジトリが作成されたときに、ファイルを含むリポジトリをフォークしました。

を使用してリポジトリをプッシュしたいファイルをローカルに追加しましたが、GitHubリポジトリから最初のファイルgit addをプルする必要があることに気付きました。README

プルした後、変更をプッシュしようとしましたが、代わりにメッセージが表示されEverything up-to-dateました。

コマンドを使用しlsて、で追加されたファイルgit addが削除され、に置き換えられていることを確認しましたREADME.md

これらは私が実行したコマンドです:
コマンド

を使用git logすると、でプロジェクトに取り組んでいる他の人が行ったコミットが表示されREADMEます。私がコミットをしていなかったことを考えると、それは予想されていたと思います。

使用git reflogすると、1回プルしたことがわかりましHEAD@{0}たが()、使用git reset --hard HEAD@{0}しても何も起こらなかったようです。私も試みgit reset --hard HEAD@{"20 minutes ago"}ましたが、ログが最初のプルに戻っただけであるという警告しか受け取りませんでした。

プルによって上書きされたコミットされていない変更を復元する方法はありますか?

編集

宿題をしなかったことをお詫びします。サイドバーにこの質問が重複していることに気づきました。Gitプルはコミットされていない変更を削除しました

cd .git/lost-found/other変更を復元するために、lost-found()を使用します。

遺失物取扱所よりも簡単に変更を復元する方法はありますか?新しい質問だと思います。そうでない場合は、私が使用している方法で自分自身に答えます。

0 投票する
2 に答える
88 参照

git - git チェックアウト

現在のブランチの前に最後にいたブランチに戻る簡単な方法はありますか? コマンドラインからの「cd -」と同じ概念。

複数のブランチで作業する場合、これは便利です。

0 投票する
1 に答える
211 参照

git - Windows で HEAD (およびバリアント) をチェックアウトするときの Git の奇妙な動作

設定

次のような単純なリポジトリを想像してみましょう。HEADを指していることがわかります。master

活動

それでは、いくつかのチェックアウト操作を実行しましょう

reflogはそれを示しています

  • チェックアウトHEADしても reflog にエントリが作成されない
  • チェックアウトするmasterと、reflog に新しいエントリが挿入されます (からにHEAD移動したことを示します) 。mastermaster

他のことを試してみましょう

reflog が表示されるようになりました

  • head同じ SHA 99d2060 に解決されました
  • HEAD現在は切り離されています
  • 新しいエントリが reflog に挿入されました (からにHEAD移動したことを示します) 。masterhead

質問

私はこれらの行動を理解するのに苦労しています。

  • チェックアウト(で指しているブランチ) がHEAD行うのに、チェックアウトしても reflog に何も生成されないのはなぜですか?masterHEAD
  • headチェックアウト(小文字) がデタッチHEADされるのに、git は同じコミットに正常にピールできるのはなぜですか?

注:これらのテストは、Windows/msysgit で実行されています。