問題タブ [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 reset --hard HEAD^
残念ながらgit reset --hard HEAD^
、いくつかのファイルで非常に大きなコードのチャンクを失うことが何度かありました。これらのコミットを復元する方法、またはこの場合、HEAD が以前あった場所に転送する方法はありますか?
git - リモートリポジトリから目的のコミットのsha1を取得する
を使用するgit reflog
と、ユーザーは自分のローカルreflog情報にのみアクセスできますか?
リモートリポジトリから目的のコミットのsha1をどのように確認できますか?
git - git reflog. これは適切な使用ですか?
現時点では仮説ですが、ぜひ実践してみたいワークフローです。
すべての Web プロジェクトを開始するためのテンプレートがあります。現在、マスター テンプレートを保存するために github を使用しており、プロジェクトをビルドするたびに単純に複製しています。
問題は、私がより多くのプロジェクトを行うにつれて、テンプレートに役立つ機能があったことですが、現在のワークフローを使用してそれらを配置するのは難しいことです.
私が提案するのは、各プロジェクトの開始時に github からテンプレートを取得し、ローカル ブランチに沿ってプロジェクトをビルドすることです。マスター テンプレートで役立つと思われるものを見つけたら、マスター ブランチに切り替え、そこで変更を実装し、github に送信してから、reflog を使用してそれらの変更を現在のローカル プロジェクトの状態にします。
これは意味がありますか、そして私は(おそらく)reflogのポイントを完全に逃しましたか?
どうもありがとう
git - 既存のベアリポジトリにreflogs情報を作成する方法
ご存知かもしれませんが、デフォルトでは、gitは新しいベアリポジトリのreflog更新を有効にしません。問題は、長い履歴リポジトリがありますが、フラグ「logAllRefUpdates」をオンにする前に作成されたため、別のアプリケーションでその情報を機能させたいということです。
既存のリポジトリに最小限の変更を加えるだけで、どうすればそれを実現できますか。非常に簡単な解決策は、私がしたくない新しいコミットをプッシュすることです(!):-)
git - 特定のファイルへのすべてのコミットについて git reflog を照会する
特定のファイルへのすべてのコミットについて git reflog を確認することは可能ですか。
ファイル foo.txt にコミットしましたが、git 履歴に表示されなくなりました。
「失われた」コミットを見つけることができるように、reflog を検索してこのファイルへのすべてのコミットを見つけたいと考えています。
git - gitreflogの有効期限が切れてgitfsck--unreachable
免責事項:この質問は純粋に情報提供であり、私が経験している実際の問題を表すものではありません。私はそれのために何かを理解しようとしているだけです(私は何かを理解するのが大好きで、あなたもそうしていることを知っているからです)。
だから私はgitで遊んでいて、修正されたコミットを期限切れにしようとしていました。私のreflogは次のようになります。
つまり、2つのコミット(da8534a
と5a1e68a
)を作成し、次に3番目のコミットを。ff576c1
で修正しまし4eea1cd
た。
予想通り、私のgit log
見た目は次のようになります。
私が(私は)コミットの有効期限について知っていることから、いつか(ほとんどの場合、デフォルトで30日以内に)git gc
収集する必要がありff576c1
ます。今、私はそれが起こるのを見るのに30日待ちたくないので、最初にいくつかのコマンドを実行し始めます:
これは、再び予想されるように、私に与えます:
ff576c1
私がその貧しい孤独なコミットを期限切れにするだろうとすべての自信を持って、私はそれから実行しますgit reflog expire
:
その時、私に与えます:
最初HEAD
は参照していませんでしたが、前に示しmaster
た出力からわかるgit log
ように、実際には参照しています。また、それをcat .git/HEAD
確認します(yelding ref: refs/heads/master
)。とにかく、それでもばかげていたのですが4eea1cd
、私のmaster
支部長です。
ですから、ここで私は、これら2つのコマンドが同じコミットを与えないことをすべて混乱させており、それが私のブランチ4eea1cd
の実際の先端であるため、どうして地獄に到達できない可能性があるのか疑問に思っています。master
何が起こっているのかについて何か考えはありますか?
編集--rewrite
:オプションをに追加するとgit reflog expire
、次のようになります。
次に、修正されたコミットのみを取得します。
によると、私はまだ理解していませんgit help reflog
:
私の場合、これは意味がありません。明らかにそれは何かを変えるので、少なくとも私はそれを理解していません。
git - どのコミットがチェリーピックされましたか?
チェリーピック操作でどのコミットが使用されたかを確認するにはどうすればよいですか? git reflog は、cherry-pick がマージされてコミットされた後の結果のコミット Sha-1 のみを表示するようです。その前に元のコミットを見つける必要があります。
なんで?これは、別のブランチへの大きな、しかし間違ったコミットを誤ってチェリーピックしたためです。しかし、コンパイルしてその後に他のコミットを追加するように変更するまで、誰もそれに気づきませんでした。
ここでの目標は、この結果のチェリー ピックを元のものと比較し、それらの違いをパッチとして使用するか、正しいチェリー ピックに手動で同じ変更を加えることです。
git - 一連の修正されたコミット (reflog に保存されている) を実際のコミットに変換する方法
私はリファクタリングを行っていましたが、まともな進歩を遂げるたびに修正を続けていました. それは非常に順調に進んでおり、私がこのような大規模なリファクタリングをどのように処理したかを人々に示すことができれば素晴らしいと思いました (多くの小さなステップ、コードを微調整するだけ、すべてのポイントでグリーン テスト スイートを使用)。
コミットはすべて私のreflogにあります。ユーザーが81行目と57行目の集約されたものだけでなく、各ステップを見ることができるように、これらの修正されたコミットのそれぞれを独自の実際のコミットに変える方法はありますか? コミットなどに一意のメッセージは必要ありません。履歴に記録されているだけです。
これはすべてまだ私のローカルレポにあります。
git - gitreflogにブランチの変更が表示されない
別の質問で、ユーザーは次のreflogを投稿しました。
でHEAD@{25}
、ユーザーはテストブランチに切り替えます。ただし、HEAD@{16}
では、ユーザーは、テストから開発への事前の移動なしに、開発からコミットに移動します。
reflogに反映されずにブランチを変更するにはどうすればよいですか?このユーザーは特に洗練されているとは思わないので、難解なトリックが使用されたとは思えません。