LoginSignup
4
6

More than 5 years have passed since last update.

Git LFS lockを使うためのエイリアス メモ

Posted at

Git LFS(2.4系)のロック機能は、以下の点であんまりイケてないです。

  • 自分の持ってるすべてのロックを一気に外す方法がない
    • 外すのに軽いシェル芸が要る
    • git lfs locks | grep [my-git-user-name] | cut -f 1 | xargs git lfs unlock みたいな
  • lock/unlockコマンドの引数にファイルを1つしか指定できない
    • 例えば、 git lfs unlock A.xlsx B.xlsx すると、エラーを吐かずにA.xlsxだけロックが外れる。
  • lock/unlockのコマンドに lfs が入っていて、長い。 ex) git lfs lock A.xlsx

せめてコマンドインターフェースだけでも解決するためaliasを書いたので共有しておきます。

git.config
[alias]
        lock = "!f(){ git pull ; for file in \"$@\"; do git lfs lock $file; done };f"
        unlock = "!f(){ for file in \"$@\"; do git lfs unlock $file; done };f"
        unlockall = "!f() { git lfs locks | grep [my-git-user-name] | cut -f 1 | while read -r file; do git lfs unlock $file; done; };f"
        locks = "!f() { git lfs locks; };f"

# [my-git-user-name] は、自分のアカウント名に書き換えてください。
$ git lock A.xlsx B.xlsx #2つのファイルのlockを取る(ファイル数だけlockリクエストが走る)
$ git unlock A.xlsx B.xlsx #2つのファイルのlockを外す
$ git unlockall #自分の持っているすべてのlockを外す
$ git locks #全員のlock状況を見る

GitHub+Bashのみでテストしてあります。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6