20190318のGitに関する記事は3件です。

git submoduleの話(cloneしたら有るはずのものが無い空っぽのディレクトリが… etc)

個人的備忘録です。

git submodule とは

乱暴に言うと、あるリポジトリのサブディレクトリ配下に 別のリポジトリ(プロジェクト) を取り込み、そのまま管理するというもの。

どこで使うの

たとえば static site generator である Hugo でテーマ(スキン)。
テーマそれぞれが git リポジトリになっていて、それを hugo の site配下で themes/ の下に持ってくる必要がある。

$ cd themes
$ git clone テーマ.git

一見これでも問題はない。でも、たとえば netlify を使うことになると、このhugoのsite以下をgitで管理する必要が出てくる。じゃあ、その中にあるthemesにどうやって持ってくるのか? そこでsubmoduleの出番になってくる。

小さな落とし穴

$ git submodule add サブモジュールとしてチェックアウトしたいなんとか.git

こうすると、とりあえずうまくいく。ファイルもばっちり取り出されている。これを、git addしてcommitしてpushして...

別のマシンなり環境なりで、この全体を git clone する。と、サブモジュールとしたディレクトリ配下が空っぽである。
あれ!?pushしたんじゃなかったの?

対策

のちに取り出した方の環境ではサブモジュールが有効になっておらず取り出せてもいない。詳細は割愛する。(.gitmodulesとかなんとか調べてください)

$ git submodule init
$ git submodule update

とするか、そもそも

$ git clone --recursive 自分のリポジトリ

とすれば良い。

余談

netlify で hugo なサイトを回している感じでは、clone --recursive されているようだ。実際チュートリアルにも submodule でやれよみたいなこと書いてあるし。

余談2

git submodule 「なにがどうなっているのか」を完全に理解しない限り奇妙に見える(たとえばcommit idに紐付いているとか) が、使う分にはすこぶる快適なのでオススメ

参照

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SourceTreeで重いリポジトリの最新のコミットだけcloneする

はじめに

重いリポジトリをそのままcloneしようとすると、時間がかかります。下手すると数時間かかったりして、回線が貧弱だとタイムアウトしてしまったりします。そうなると、最初からやり直し・・・

とりあえず、最新のコミットさえあればよくて、それ以前のコミットは不要ということであれば、shallow clone をすればよいです。過去のコミットはダウンロードしないので、その分、通信量が少なくなります。

SourceTreeだとGUIでできるので、その手順を忘れないうちに残します。

SourceTreeで最新のコミットだけcloneする

SourceTreeを起動し、いつも通り Clone の画面を開き、リモートリポジトリのURLやローカルフォルダを指定します。

SourceTree

詳細オプション をクリックすると、 クローンの深さ という項目が出てくるので、 1 を入力します。
クローン ボタンをクリックすれば、 shallow clone が始まります。

仕組み

上記の操作は、Gitコマンドで言うと、

git clone --depth 1 (リモートリポジトリのURL)

に相当します。 クローンの深さ は、 --depth に対応しています。
ここの数値を 10 にすれば、最新の10個のコミットを取得できます。

さいごに

これでタイムアウト地獄から解放されました!

以下の記事を参考にさせていただきました。ありがとうございます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

間違えてVCCWで自動生成されるファイルもご丁寧にgitignoreに突っ込んでなかったのでgitで無視させたら1,015,563行の削減ができた話

スクリーンショット 2019-03-18 1.43.57.png
えー、ヒッジョーにアホ臭い話なのですが、仕事でやってるWordPress案件をVCCWで回してまして、VCCWで自動生成されるコードを.gitignoreに追加してなかったので追加したら1,015,563行の削減ができたことをお知らせします。

最初は

.DS_Store
.ansible
.bundle
.envrc
.github/
.idea/
.travis.yml
.vagrant
npm-debug.log
package.box
playbook.retry

/wordpress/.htaccess
/wordpress/sitemap.xml
/wordpress/sitemap.xml.gz
/wordpress/wp-config.php
/wordpress/wp-content/advanced-cache.php
/wordpress/wp-content/backup-db/
/wordpress/wp-content/backups/
/wordpress/wp-content/blogs.dir/
/wordpress/wp-content/cache/
/wordpress/wp-content/upgrade/
/wordpress/wp-content/wp-cache-config.php
/wordpress/wp-content/ai1wm-backups

という.gitignore(多分最初こんな感じ)だったのですが、これをいろいろ自動生成されそうなものを追加していって

.DS_Store
.ansible
.bundle
.envrc
.github/
.idea/
.travis.yml
.vagrant
npm-debug.log
package.box
playbook.retry
!*.gitignore
/wordpress/.editorconfig
/wordpress/.htaccess
/wordpress/index.php
/wordpress/license.txt
/wordpress/readme.html
/wordpress/sitemap.xml
/wordpress/sitemap.xml.gz
/wordpress/wp-activate.php
/wordpress/wp-blog-header.php
/wordpress/wp-comments-post.php
/wordpress/wp-config-sample.php
/wordpress/wp-config.php
/wordpress/wp-cron.php
/wordpress/wp-links-opml.php
/wordpress/wp-load.php
/wordpress/wp-login.php
/wordpress/wp-mail.php
/wordpress/wp-settings.php
/wordpress/wp-signup.php
/wordpress/wp-trackback.php
/wordpress/xmlrpc.php
/wordpress/wp-admin/
/wordpress/wp-content/advanced-cache.php
/wordpress/wp-content/backup-db/
/wordpress/wp-content/backups/
/wordpress/wp-content/blogs.dir/
/wordpress/wp-content/cache/
/wordpress/wp-content/languages/
/wordpress/wp-content/plugins/
/wordpress/wp-content/themes/index.php
/wordpress/wp-content/themes/twentyfifteen/
/wordpress/wp-content/themes/twentyseventeen/
/wordpress/wp-content/themes/twentysixteen/
/wordpress/wp-content/themes/twentynineteen/
/wordpress/wp-content/upgrade/
/wordpress/wp-content/ai1wm-backups/
/wordpress/wp-content/wp-cache-config.php
/wordpress/wp-content/index.php
/wordpress/wp-includes/
node_modules/

にしました。結果、
スクリーンショット 2019-03-18 1.52.54.png
こんなアホなお兄さんの真似はしちゃダメだゾ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む