問題タブ [git-plumbing]
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 - filter-branch --tree-filter? の後に git リポジトリから refs/original/heads/master を削除しますか?
ここで尋ねたのと同じ質問がありました:サブディレクトリに既存のリポジトリを含めるためのルート ディレクトリの新しい git リポジトリ
ここでこの回答に従いました:サブディレクトリに既存のリポジトリを含めるためのルートディレクトリの新しいgitリポジトリ
現在、gitk --all
は 2 つの履歴を示しています。1 つは現在の で最高潮に達し、master
もう 1 つは という名前original/refs/heads/master
です。
この 2 番目の履歴が何であるか、レポから削除する方法がわかりません。リポジトリに 2 つの履歴は必要ありません。
どうすればそれを取り除くことができますか?
自分自身を再現するには:
ここで、元のポスターの問題があります。上記のリンクの回答を使用して、git リポジトリのルートを project-root に移動しましょう。
さて、私の現在の問題を見てください:
refs/original/heads/master
関連するすべての履歴を削除するにはどうすればよいですか?
git - 特定の Git コミットの変更されたファイルとそのステータスのリストを取得する
次のGitコマンドを使用します
変更されたファイルのリストを取得します。
残念ながら、リストには各ファイルの変更の種類 (追加、変更、削除など) が指定されていません。
特定のコミットの特定の SHA の変更 [変更の種類、ファイル名] のリストを表示するにはどうすればよいですか。
git - 配管コマンドのみを使用して git-checkout を複製する方法は?
スクリプトから磁器コマンドを呼び出さないようにしたいのですが、git checkout <commit>
配管コマンドのみを使用した場合の動作の一部を取得する方法はありますcheckout-index
か? 私は特に作業コピーへの影響に関心があります。すべてがクリーンであると仮定するとcheckout
、古い HEAD で追跡され、新しい HEAD には存在しないファイルが削除されます。checkout-index
ファイルを削除するという概念はないようです。私が考えることができる最も近いことは、電話することです
しかし、差分全体を計算すると、不必要にコストがかかるようです。より良い方法はありますか?
git - 1 つのブランチからファイルのすべてのバージョンを取得する
Git リポジトリに 1 つのブランチがある場合、ファイルのすべてのバージョンを取得するにはどうすればよいですか? 最終的に必要な出力は、バージョンごとに 1 つの新しい出力ファイルです (ただし、各バージョンの範囲を簡単に判断できる限り、すべてのバージョンを STDOUT に出力しても問題ありません)。
これが私が現在使用しているものです:
私がやっていることの説明:
rev-list
関連するハッシュを見つけるために使用します- コミットとツリーのハッシュを取り除き、ファイルのハッシュだけを残します (これらの行にはファイル名も含まれます)
- ファイル名を取り除く
- ハッシュを実行して
cat-file
出力ファイルを生成する
これに関して私が抱えている 2 つの主な問題は、1)grep
誤検出が発生する可能性があるため堅牢ではないこと、およびファイルの名前変更に従うかどうかわからないこと、および 2) 非常にハッキーに感じられることです。
おそらくgitのAPIをより有効に活用して、これを行うためのより良い方法はありますか?
git - git refs/heads はサブディレクトリで安全ですか? ここですか、それとも別の場所ですか?
プレフィックスを持つ一連のブランチがあります。このプレフィックスを再利用したいのですが、このプレフィックスを持つ既存のブランチ (現在は廃止されています) とはグループ化しません。とりあえず にサブディレクトリを作りました.git/refs/heads
。
悪影響があるかどうか、またはブランチ名のセットを配置してプレフィックスを付ける場所に関するより良い推奨事項があるかどうかを知りたいです。現時点では、他のリポジトリに複製/プッシュ/プルする必要はありませんが、そのような機能は便利かもしれません。
PS これらのブランチも簡単にチェックアウトできるようになればいいと思います。
git - HEAD^ のツリーを復元するにはどうすればよいですか?
tl;dr:HEAD^
のツリーが削除され、事前にプッシュされておらず、他のすべてが無傷である場合、そのツリーを復元することは可能ですか?
の一部を誤って削除してしまいました.git
。何が欠けているのか完全にはわかりません。
git push
それが機能しないことを発見すると、次のように実行しましたgit fsck
:
したがって、私の推測では、GitHub から復元できる情報が不足しているだけだと思います。私のひざまずいた反応は run でしたがgit fetch
、取得する新しいものは何もないと見なされるため、何も出力されずに返されます。
いくつかの方法で開梱を試み.git/objects/pack/pack-ea43d1db155e4502c2250ec1d4608843715c8b1f.pack
ましたが、うまくいきませんでした。例えば:
毎回このエラーが発生しました。(心に留めておいてください: これは--mirror
であるため、 GitHub にあるものの正確なコピーです。そうですよね? どうして破損している可能性がありますか?)
最終的に、パックファイルを実際に解凍する必要がないことに気付きました。それを元のリポジトリにコピーして戻すだけで、Git はそれを問題なく取得します。そう:
そして、それはうまくいくように見えました。多くの場合。
ご覧のとおり、欠落しているリンクは 1 つを除いてすべて修復されました。結局のところ、はまだプッシュしていないdb238d
コミット (たまたま ) の ID です。HEAD^
このリポジトリの最後の 2 つのコミットは回復不能であり、それらのコミットの内容を再作成する必要があると仮定するのは正しいですか? このシナリオで正しい決定を下しましたか?
git - git のオートコンプリート機能を配管コマンドに拡張する
この質問へのフォローアップとして、git にオートコンプリート機能 (ブランチなど) を追加のコマンド、特に のような配管コマンドに提供するように指示することが可能かどうかを自問しましたupdate-ref
。
update-ref
よりも柔軟性がありますbranch -f
が、常に完全な参照名を入力する必要があるため、使用するのは非常に面倒です。これでは、私はそれを使いたくありません。
これに関するアイデアはありますか?
git - github APIを使用してレポの最初のコミットを削除するには?
コマンドラインを使用して実行できることを知っています(最初の git commit を削除します)
しかし、github の API を使用して同様のことを行う方法がわかりません。それは可能ですか?
java - Git Commit オブジェクトの Author フィールドと Commiter フィールド
Linux マシン上で実行される Java を使用してサーバーを作成しようとしています。サーバーが GitHub と同様の方法で Git をサポートするようにしたいと考えています。これを達成するために多くのことを考え出しましたが、知りたいことが1つあります...
次の Git オブジェクト (ヘッダー付き) が圧縮されてファイル システムに格納されているとします。
末尾の「1418335844 +0000」とはどういう意味ですか?
これはミリ秒単位のタイムスタンプかもしれないと思っていましたが、解析すると、次のコードを使用して「1970 年 1 月 17 日」が得られました。
これが何であれ、それを解析するにはどうすればよいでしょうか?