mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-10-16 11:40:46 +00:00
Compare commits
7 commits
9685900099
...
3e62c1eab0
Author | SHA1 | Date | |
---|---|---|---|
|
3e62c1eab0 | ||
|
367e9381df | ||
|
f11cc8fea1 | ||
|
1b4703387d | ||
|
2cf9ad072d | ||
|
7ab8271cd9 | ||
|
09976595be |
4 changed files with 74 additions and 2 deletions
|
@ -1,6 +1,6 @@
|
|||
certifi==2024.8.30
|
||||
charset-normalizer==3.3.2
|
||||
idna==3.9
|
||||
idna==3.10
|
||||
PyYAML==6.0.2
|
||||
requests==2.32.3
|
||||
semver==3.0.2
|
||||
|
|
|
@ -163,7 +163,7 @@ function git_current_branch() {
|
|||
}
|
||||
|
||||
# Outputs the name of the previously checked out branch
|
||||
# Usage example: git pull origin $(git_current_branch)
|
||||
# Usage example: git pull origin $(git_previous_branch)
|
||||
# rev-parse --symbolic-full-name @{-1} only prints if it is a branch
|
||||
function git_previous_branch() {
|
||||
local ref
|
||||
|
|
15
plugins/git-checkout-interactive/README.md
Normal file
15
plugins/git-checkout-interactive/README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
# lol
|
||||
|
||||
This plugin adds a command that lets you interactively switch between branches.
|
||||
|
||||
To use it, add `git-checkout-interactive` to the plugins array in your `.zshrc` file:
|
||||
|
||||
```zsh
|
||||
plugins=(... git-checkout-interactive)
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
```sh
|
||||
gci
|
||||
```
|
|
@ -0,0 +1,57 @@
|
|||
#######################################
|
||||
# git checkout interactive #
|
||||
#######################################
|
||||
|
||||
function git-checkout-interactive() {
|
||||
local ITEMS_TO_SHOW=10
|
||||
# Get all branches sorted by committer date, along with their last commit hash
|
||||
local branches
|
||||
branches=$(git for-each-ref --count="$ITEMS_TO_SHOW" --sort=-committerdate --format='%(refname:short) %(objectname:short)' refs/heads/)
|
||||
|
||||
# Parse branches
|
||||
local branch_list=()
|
||||
local current_branch
|
||||
current_branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
if [[ "$current_branch" == "" ]]; then
|
||||
return 0
|
||||
fi
|
||||
while read -r branch hash; do
|
||||
if [[ "$branch" == "$current_branch" ]]; then
|
||||
echo "On branch $branch \n"
|
||||
else
|
||||
branch_list+=("$branch ($hash)")
|
||||
fi
|
||||
done <<< "$branches"
|
||||
|
||||
if (( ${#branch_list} == 0 )); then
|
||||
echo "No other branches available."
|
||||
return 0
|
||||
else
|
||||
echo "Select a branch to switch to:\n"
|
||||
fi
|
||||
|
||||
# Display menu
|
||||
local i=1
|
||||
for branch in "${branch_list[@]}"; do
|
||||
echo "($i) $branch"
|
||||
((i++))
|
||||
done
|
||||
echo -n "\nPlease enter your choice: "
|
||||
|
||||
# Handle user input
|
||||
while :; do
|
||||
local choice
|
||||
read -r choice
|
||||
if (( choice > 0 && choice <= ${#branch_list[@]} )); then
|
||||
local selected_branch="${branch_list[$((choice))]}"
|
||||
local target_branch="${selected_branch//->}"
|
||||
target_branch="${target_branch%% *}"
|
||||
git checkout "$target_branch"
|
||||
break
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
alias gci="git-checkout-interactive || return 0"
|
Loading…
Reference in a new issue