配管コマンドを使用できます。
現在のHEADを取得し、そこからツリーを取得し、BLOBを取得します。
ブロブを作成したら、テキストボックスにコンテンツを配置できます。完了したら、新しいBLOBをハッシュし、新しいツリーを作成し、新しいコミットとtadaamを作成するだけです。それは「プッシュ」されています。
PS:裸のリポジトリであることを覚えておいてください。使用するすべてのコマンドでインデックスや作業ディレクトリが必要ないことを確認してください。
ここではステップバイステップの例が尋ねられました。
まず、現在のファイルの内容を取得:
> git cat-file -p HEAD:var/test/text.txt
test
は、我々はその内容に私たちの小さな変更を行うと、今プッシュする準備ができて新しいコンテンツを持っています。 は、我々はそれをハッシュするつもりだというコンテンツ保存するには:
> git hash-object -t blob -w var/test/text.txt
9764d221e6b50063b83c0268544c5d5b745ec9c5
これはそれを保存し、そのオブジェクト(BLOB)のSHA-1を返しますが、非常に次のステップは、新しいフォルダtest
を作成して構成されています私たちのtext.txt
ファイルが含まれます。しかし、最初ののような現在のtest
フォルダ見何をするかを見てみましょう:だから私たちはここで何をしたいのか
> git ls-tree HEAD:var/test
100644 blob 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 text.txt
を、新しいもの(9764d22...
)と前回のSHA-1(9daeafb...
)を交換し、新しいを生成していますツリーに基づいて(\t
に注意してください)。
> echo -e "100644 blob 9764d221e6b50063b83c0268544c5d5b745ec9c5\ttext.txt" | git mktree
b7788f9e8e9a24be31188167a6a0bc1de9e41d24
グレート、今私たちは、新しいファイルtext.txt
と親フォルダtest
を持って、我々は今var
を必要としています。
> git ls-tree HEAD:var
040000 tree 9bfb857f532d280ecd7704beb40a2ea4ba332f5a test
> echo -e "040000 tree b7788f9e8e9a24be31188167a6a0bc1de9e41d24\ttest" | git mktree
536f33626a47138499fade7df6d02327f75d80be
と今、私たちはvar
の親(私たちのリポジトリのルートである)必要があります。
> git ls-tree HEAD
040000 tree 31a6ee5e7d14a0569721632a05234185a109d6bd var
> echo -e "040000 tree 536f33626a47138499fade7df6d02327f75d80be\tvar" | git mktree
7db3d6bc14cce98ff89ccc285b9d17965f5ca92b
を、それが行われています、私たちの木は準備ができています。不足している唯一のものは、実際のコミットされています
> git commit-tree -p HEAD -m "commit message" 7db3d6bc14cce98ff89ccc285b9d17965f5ca92b
4aa2de2cf9e3e4f5470bcd1ee1e83ef6e4025eaf
しかし、非常に最後のステップがあるので、今私たちがHEADであることをコミットしたい、準備ができていないです:
> git update-ref HEAD 4aa2de2cf9e3e4f5470bcd1ee1e83ef6e4025eaf
そして今、もう終わった。
資源:
感謝 たくさん!助けられたキーワードはgit '配管'でした。 –
いくつかのファイル(/var/test/text.txtなど)を追加する方法を少し例を挙げて教えてください。または同じものを上書きする? – NaN
私は包括的な例を更新しました。 –