2020-06-05

6/5

shallow cloneしたgitのリポジトリを同じdepthでpullするには

動作環境:

  • Ubuntu 18.04
  • git v2.17.1

前提:

git clone --depth=1

でcloneした。

バッチ実行で掲題の操作を安全確実にやる方法がなかなか見つからなかった。
色々試していたところ、以下で行けるとわかった。

git fetch --depth=1
git pull

Read Onlyな使い方しかしないなら、 git fetch --depth=1 && git checkout origin/master でもいいかと思ったけど、上で済むならそれでいいや。
上が動かなかったら、下のように強引にやる手もあった:

git fetch --depth=1
git checkout origin/master
git branch -D master
git checkout -b master
# git branch --set-upstream-to=origin/master

最後の行はなくてもまあなんとかなるけど、ブランチ作り直すと追跡ブランチの情報が消えるので。

NG集

# ふつうにpull
# 動くけど、shallow clone以降の履歴が全部残る
$ git pull

# 一応動いてるようだけどエラーが出る
$ git pull --depth=1 [--update-shallow]
:
 + f22f6e5...caec91c master     -> origin/master  (forced update)
error: Could not read 843b95a87c496da6eac6160744854af3070db0fd
error: Could not read 843b95a87c496da6eac6160744854af3070db0fd
First, rewinding head to replay your work on top of it...

$ git fetch --depth=1; git rebase origin/master
# たまにCONFLICTする

$ git fetch --depth=1; git merge origin/master [--squash]
fatal: refusing to merge unrelated histories

NOTE:

  • --update-shallow.git/shallow の更新を許すオプション

Zoomの定期ミーティング生成やGoogleカレンダーへの反映を自動化できないか

ZoomとGoogleのAPIでなんとかできるかも。

https://marketplace.zoom.us/docs/api-reference/zoom-api

Zoom APIについて:

  • OAuth 2認証
  • public/privateアプリを作れる
  • Chatbotも作れるっぽい

やればできるのでは。

先行者がいた。

できそう。