diff --git a/.bash_aliases b/.bash_aliases index 68b9a3a..746e2de 100644 --- a/.bash_aliases +++ b/.bash_aliases @@ -87,3 +87,8 @@ alias gsync='set -x; git checkout main; gh repo sync; git pull; { set +x; } 2>/d alias gw='git worktree' __git_complete gw _git_worktree + +alias gwa='~/scripts/git-worktree-add.sh' + +alias gwr='~/scripts/git-worktree-remove.sh' +__git_complete gwr _git_checkout diff --git a/git-worktree-add.sh b/git-worktree-add.sh new file mode 100755 index 0000000..283b20f --- /dev/null +++ b/git-worktree-add.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +name=$1 + +git worktree add --no-checkout -b "$name" "../$name" +cd "../$name" +git sparse-checkout init --cone +git sparse-checkout set .github/actions .github/shared .github/workflows +git checkout diff --git a/git-worktree-remove.sh b/git-worktree-remove.sh new file mode 100755 index 0000000..d0a5b1b --- /dev/null +++ b/git-worktree-remove.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +name=$1 + +git worktree remove "../$name" +git branch -D "$name"