問題タブ [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.
git - gitリポジトリから古い履歴を削除するにはどうすればよいですか?
この特定のシナリオのようなものを見つけることができなかったのではないかと思います。
私は多くの歴史を持つgitリポジトリを持っています:500以上のブランチ、500以上のタグ、2007年半ばにさかのぼります。約19,500のコミットが含まれています。2010年1月1日より前のすべての履歴を削除して、より小さく、扱いやすくしたいと考えています(履歴の完全なコピーをアーカイブリポジトリに保持します)。
新しいリポジトリのルートになりたいというコミットを知っています。ただし、そのコミットで開始するためにリポジトリを切り捨てるための正しいgitmojoを理解することはできません。私はいくつかの変種を推測しています
移植を含むことが必要になるでしょう。また、保持したい200以上のブランチのそれぞれを個別に処理してから、リポジトリにパッチを適用して戻す必要がある場合もあります(私が知っている方法)。
誰かがこのようなことをしたことがありますか?それが重要な場合は、git1.7.2.3を使用しています。
git - マスターgitブランチを台無しにしました...何を元に戻す必要があるのかわかりません
私はマスターからのブランチを持つgitリポジトリに取り組んでいます。これをab
ブランチと呼びます。私のチームはブランチに取り組んでおり、ab
githubを使用したプルリクエストワークフローを持っています。私のチームメートの1人が、自分のブランチjeremy_ab_deletions
からブランチへのプルリクエストを行いましたab
。私は彼の変更を確認/テストしていましたが、ab
ブランチにマージしようとしたときに、誤ってマスターにマージし、間違いを見つける前にマスターをgithubにプッシュしました。私が行った変更をgit-revertできると思っていたのですがgit revert SHA
、うまくいったようです...
それで十分だと思い、喜んでabブランチに戻って作業を続けました。しかし今、私は、決してab
マスターになるべきではないブランチからの以前のコミットがすべてマスターにあることに気づきました。それは...かなり混乱しています。彼のブランチは元々から分割されていたので、それをマスターにマージしたので、を使用して元に戻す必要がありました。ab
git 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
......しかし、それがどの「マージコミット」であるかを理解することはできません。私はこれを試しました:
私は...実際のマージコミットが見つからないようですか?誰かが私が間違ったことを知っていますか:/私は今あらゆる種類の道に迷っています。
git - Git Reflogを無期限に保持しますか?
私は、データを回復する機能を含め、自分のデータについて少し偏執的になる傾向があります。
Gitreflogデータは30日後に整理されます。reflogデータが無期限に維持および保持されるように設定する方法はありますか?
そうすることの主な長所または短所(スペースまたは速度の考慮事項以外)はありますか?
git - インデックスに追加されたが、gitresetによって削除されたファイルを回復する
インデックスにいくつかのファイルを追加しましたが、誤って。で削除しましたgit reset --hard
。それらを回復するにはどうすればよいですか?何が起こったのか:
- を使用してすべてのファイルを追加しました
git add .
- それから私はコミットしました
- ステータスを確認したところ、追加からのコミットに含まれていないファイルがまだありましたが、これは奇妙でした
- 追跡されていないファイルを再度追加しましたが、今回は機能しました
- しかし、すべてを1つのコミットにまとめたかったので、コミットした内容をステージング解除する方法を調べました。
- 私が使用
git reset --hard HEAD^
しました—悪い考えです、明らかに、すべてのファイルが削除されました - だから
git reflog
私は中断したところを見つけていました - その後
git reflog ______
、最後のコミットに戻りました。 - その後
git reset HEAD
、コミットのステージングを解除していましたが(最初に実行する必要がありました)、コミット後に追加したファイル(上記を参照)はまだ残っていました。
これらのファイルを元に戻すにはどうすればよいですか?
git - どのブランチにも表示されないが、「git show」で利用可能なコミットに何が起こったのか
ベアレポで利用可能なコミットIDがあります。
git show commit id
、変更を含むコミットを示します。
ただし、以下のコマンドを使用すると、同じコミットが表示されません
また
コミット ID に何が起こった可能性がありますか?
git - なぜ新しいヘッドと古いヘッドがgitreflogを使用して同じshaidを持っているのですか?
これらは2つの異なるHEADSである必要があると思うので、なぜそれらが同じsha値、つまり2aad8cbに対応するのか...
git - git reflog で出力されるエントリの数を増やすにはどうすればよいですか?
(-D を使用して) 削除したブランチがありますが、元に戻す必要があります。git reflog コマンドは一見の価値があると思いました。実行すると、50 個のアクションしか表示されず、このブランチからのコミットが見つかりません。ブランチは 1 日前に削除されましたが、30 日間は reflog から削除されないという印象を受けました。
reflog でより多くのエントリを表示する方法はありますか?
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()を使用します。
遺失物取扱所よりも簡単に変更を復元する方法はありますか?新しい質問だと思います。そうでない場合は、私が使用している方法で自分自身に答えます。
git - git チェックアウト
現在のブランチの前に最後にいたブランチに戻る簡単な方法はありますか? コマンドラインからの「cd -」と同じ概念。
複数のブランチで作業する場合、これは便利です。
git - Windows で HEAD (およびバリアント) をチェックアウトするときの Git の奇妙な動作
設定
次のような単純なリポジトリを想像してみましょう。HEAD
を指していることがわかります。master
活動
それでは、いくつかのチェックアウト操作を実行しましょう
reflogはそれを示しています
- チェックアウト
HEAD
しても reflog にエントリが作成されない - チェックアウトする
master
と、reflog に新しいエントリが挿入されます (からにHEAD
移動したことを示します) 。master
master
他のことを試してみましょう
reflog が表示されるようになりました
head
同じ SHA 99d2060 に解決されましたHEAD
現在は切り離されています- 新しいエントリが reflog に挿入されました (からに
HEAD
移動したことを示します) 。master
head
質問
私はこれらの行動を理解するのに苦労しています。
- チェックアウト(で指しているブランチ) が
HEAD
行うのに、チェックアウトしても reflog に何も生成されないのはなぜですか?master
HEAD
head
チェックアウト(小文字) がデタッチHEAD
されるのに、git は同じコミットに正常にピールできるのはなぜですか?
注:これらのテストは、Windows/msysgit で実行されています。