つかろぐスマートフォン用の表示で見るつかろぐもしかしたらどこかの誰かの役に立つかも...2018-04-10graftedなgitコミットとは何者か・・・git前回の記事にちょっと出てきたのですが、gitのコミットログを見た時にハッシュ値の横にgraftedというものを初めて見たので調べてみました。logを見たらコミット履歴が1つしかなくて戻せなかったそのコミットのハッシュ値の隣に(grafted)の表記があったという感じ。graftedをキーワードでググって幾つか記事を見てみます。graftsとは違いそうだけど同じ意味をするもの?コミット履歴を省略しているフラグに過ぎないのか?それとももっと特別な意味がある?という感じですかね。--depthするとgraftedマークが付くその他にもgraftsという概念がgitにはあるということです。StackOverflowの回答でも触れられていましたけど、上記の記事の質問に以下のページへのリンクがありました。replaceでこれが出来るということですかね。なんか間違っていそうですが。--depth近々試そうとしているdeployerを使わせてもらって試してみます。cloneしてみます。typos|:ついでに.gitディレクトリ配下を確認してみます。--depth=1をしてみます。(#1585)--depth=1とオプションを指定したのでログにはコミットが1つだけとなりHEADにgraftedがつきました。普通にcloneした場合と比較してオブジェクト数が1/40まで減っています!!先程と同様に.git配下も確認してみます。refs直下にshallowというファイルが増えましたね。中身を確認してみます。.git/shallow006e0b16f3a92025759fc1da30481000e00c0320graftedなポジションのコミットのハッシュ値が記録されているようです。ローカルのHomebrewのコアリポジトリhomebrew-coreを確認してみたら同じようになっていました。大規模なリポジトリを扱う際(かつ過去を振り返らない場合)は有効なオプションですね。replaceを使うことはなかったかなと。見たのでマニュアルを確認して先程と同様にdeployerリポジトリを使って叩いてみます。{commit}となるのでHEADを指定してみます。(#1585)今度はgraftedではなくreplacedとマークされましたね。namespace.と記載があったので確認してみます。--depthの時と違って.git/shallowではなく.git/refs/replace/{commit}が作成されていました。別リポジトリを参照のためにネストする場合は最新のコミットだけ知っておけば事足りるので活用出来る気がしますがreplacedの使いみちがピンと来ず。業務でgitを使っている間にgraftedやreplacedなリポジトリを作ることはなさそうだなーというのが正直なところ。最近ポッドキャストのsoussuneを一ヶ月遅れで聴いていてその中でgitの話があったのですが、内部構造とかもっと詳しくなるとこの辺ピンとくるのかな。見るまたわかったら別記事として書こうと思います。--depth自体はわりと普通にやる行為なんですよね。その際にgraftedとマークが付くことを初めて知ったのとそこがイマイチしっくり来ていません。--graftがふわっとしている感じなのかな。調べてわかったら纏めたいと思います。tukaeluはてなブログをはじめよう!tukaeluさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。