Прикольно... похоже на убунту
Частично восстановил одну из своих менюшек. Выкладываю её для тех, кто знаком со строкой Git и кто запускает Git из CMD и вообще кому больше делать нечего
экспериментировал с тем, как можно работать с Git через AkelPad.
Code: Select all
"Git"
{
"s&how <commit_sha> (from buffer | selected)" Call("Scripts::Main", 1, "Git_Show.js", `"%f"`)
"difftool <commit_sha (from buffer)> <current_file> (WinMerge)" Call("Scripts::Main", 1, "Git_Diff_Difftool.js", `"%f"`)
"log <current_file>" Call("Log::Output",1, '%comspec% /K cd /d "%d" & echo file path: "%f" & git log "%f" & echo. & git branch & exit', "", "", "", -2, -2, 50, ".git")
"log <current_file> (New Tab)" Call("Log::Output",1, '%comspec% /K cd /d "%d" & echo file path: "%f" & git log "%f" & echo. & git branch & exit & exit', "", "", "", -2, -2, 8388609, ".git")
"blame selected lines" Call("Scripts::Main", 1, "Git_Blame_Selected.js", `"%f"`)
"blame selected lines (New Tab)" Call("Scripts::Main", 1, "Git_Blame_Selected.js", "%f")
"log selected lines" Call("Scripts::Main", 1, "Git_Log_Selected.js", `"%f"`)
SEPARATOR
"Copy contents of the log in the new tab &>" Call("Scripts::Main", 1, "LogOutputActions.js", '-sLogExt=".git"')
"Copy contents of the log to the clipboard &<" Call("Scripts::Main", 1, "LogOutputActions.js", '-bCopy=1')
SEPARATOR
#"git-&gui" Exec(`%comspec% /B /C cd /d "%d" & git-gui`)
"git &gui&" Exec(`%comspec% /B /C cd /d "%d" & git gui&`)
"git&k --all" Exec(`%comspec% /B /C cd /d "%d" & gitk& --all`)
"git&k (only master)" Exec(`%comspec% /B /C cd /d "%d" & gitk&`)
SEPARATOR
"Diffuse <file> (show staged and untracked)" Exec(`%comspec% /K cd /d "%d" & "%a\Tools\Diffuse\diffuse.exe" -m & exit`)
"diff Meld <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool --no-prompt --tool="meld" "%f"`)
"diff WinMerge <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool --tool="winmerge" -y "%f"`)
"diff KDiff&3 <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool --tool="kdiff3" -y "%f" & exit`)
#"diff DiffMerge <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool --tool="diffmerge" -y "%f"`)
#"diff p4merge" Exec(`%comspec% /B /C cd /d "%d" & git difftool --tool="p4merge" -y "%f"`)
"diff Meld <all files>" Exec(`cmd.exe /K cd /d "%d" & git difftool -y --tool=meld & exit`)
"diff WinMerge <all files>" Exec(`cmd.exe /K cd /d "%d" & git difftool -y --tool=winmerge & exit`)
#"diff WinMergeU <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool --no-prompt --trust-exit-code -x="'%a\Tools\WinMergePortable\WinMergePortable.exe' -e "$LOCAL" "$REMOTE"" "%f"`)
#"diff WinMergeU <file>" Exec(`%comspec% /B /C cd /d "%d" & git difftool -y --trust-exit-code -x="'%a\git-winmerge.bat' "$LOCAL" "$REMOTE"" "%f"`)
#"git diff WinMergeU" Exec(`%comspec% /B /C cd /d "%d" & git difftool --no-prompt --tool="winmergeu" "%f"`)
SEPARATOR
"merge Meld (global)" Exec(`%comspec% /B /C cd /d "%d" & git mergetool --tool="meld" -y "%f"`)
"merge WinMerge (global)" Exec(`%comspec% /B /C cd /d "%d" & git mergetool --tool="winmerge" -y "%f"`)
#"merge WinMergeU" Exec(`%comspec% /B /C cd /d "%d" & git mergetool --no-prompt -x="'%a\Tools\WinMergePortable\WinMergePortable.exe' -e -u -dl "Old $BASE" -dr "New $BASE" "$LOCAL" "$REMOTE"" --trust-exit-code`)
#"merge WinMergeU <file>" Exec(`%comspec% /B /C cd /d "%d" & git mergetool --no-prompt --trust-exit-code -x="'%a\Tools\WinMergePortable\WinMergePortable.exe' -e "$LOCAL" "$REMOTE"" "%f"`)
"merge kdiff3 (global)" Exec(`%comspec% /B /C cd /d "%d" & git mergetool --tool="kdiff3" -y "%f"`)
#"merge DiffMerge" Exec(`%comspec% /B /C cd /d "%d" & git mergetool -y -x="'%a\Tools\DiffMerge_4_2_0_697_stable_x64\sgdm.exe' --merge -result[M S0="$MERGED" "$LOCAL" "$BASE" "$REMOTE" "`)
SEPARATOR
"git-&gui" Exec(`%comspec% /B /C cd /d "%d" & git-gui`)
"git &gui&" Exec(`%comspec% /B /C cd /d "%d" & git gui&`)
"git&k (gitk only master)" Exec(`%comspec% /B /C cd /d "%d" & gitk`)
"git&k --all (Show all refs like branches, tags, etc.)" Exec(`%comspec% /B /C cd /d "%d" & gitk --all`)
SEPARATOR
"&status" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git status & echo. & echo [ Current Commit ]============== & git log -1 --pretty=oneline --decorate & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&status -v -v (Show Staged and Unstaged Changes)" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git status -v -v & echo. & echo [ Current Commit ]============== & git log -1 --pretty=oneline --decorate & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&branch (merged)" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git branch & echo [ Merged Branches ]============== & git branch --merged & exit`, "", "", "", -2, -2, 50, ".git")
"show &remote origin" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git remote show origin & echo. & echo [ Available Details ]============== & git remote -v & echo. & echo [ All Branches ]============== & git branch -a & echo. & echo [ Remote Branch ]============== & git branch -r & echo. & echo [ Local Branch ]============== & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&branches no merged" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git branch --no-merged master & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&branches all merged" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git branch -a --merged & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&tag" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git tag -l -n1 & git branch & exit`, "", "", "", -2, -2, 50, ".git")
SEPARATOR
#"&blame" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git blame "%f" & git branch')
"&blame" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & echo file path: "%f" & git blame "%f" & git branch & exit`, "", "^([\^\w\d]{0,8})\s(\(.+?(\d)*\))\s", "/GOTOLINE=\3:0", -2, -2, 18, ".git")
"&blame (since 3 weeks)" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & echo file path: "%f" & git blame --since=3.weeks -- "%f" & git branch & exit`, "", "^([\^\w\d]{0,8})\s(\(.+?(\d)*\))\s", "/GOTOLINE=\3:0", -2, -2, 18, ".git")
"blame --line-porcelain" Call("Log::Output",1,`%comspec% /K cd /d "%d" & echo file path: "%f" & git blame --line-porcelain "%f" & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"blame selected lines" Call("Scripts::Main", 1, "Git_Blame_Selected.js", `"%f"`)
#"log lines" Call("Log::Output",1,'%comspec% /K cd /d "%d" & echo file path: "%f" & git log -L 1,5:"%f" & git branch')
"log selected lines" Call("Scripts::Main", 1, "Git_Log_Selected.js", "%f", "", "", -2, -2, 18, ".git")
SEPARATOR
"&reflog" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git reflog & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
#"&log in Log" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git log & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&log" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git log & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --&no-merges" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git log --no-merges & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log stats and summary" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git log --stat --summary & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --diff-filter=A --pretty-short" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --diff-filter=A --pretty=short -- "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --decorate" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --oneline --graph --all --decorate & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log <current_file>" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log <current_file> follow" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --follow "%f" & echo. & git branch `, "", "", "", -2, -2, 50, ".git")
#"log --grep='current_file'" Call("Log::Output", 1,'%comspec% /K cd /d "%d" & git log --grep="%f" & echo. & git branch & exit', "", "", "", -2, -2, 50, ".git")
#"log" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --pretty=format:"%h - %an, %ar : %s" --graph & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --merges" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git log --merges & echo. & git branch & exit', "", "", "", -2, -2, 50, ".git")
"log --stat" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --stat & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --stat --summary" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --stat --summary & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"log --stat -M" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git log --stat -M & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
SEPARATOR
"notes list" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git notes list & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
SEPARATOR
"ls-tree master <current_dir>" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git ls-tree master "%d" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"ls-tree master^ <current_dir>" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git ls-tree master^ "%d" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
SEPARATOR
"&diff" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git diff & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&diff -w" Call("Log::Output",1,`%comspec% /K cd /d "%d" & git diff -w & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&uncommited file to HEAD" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&uncommited file to before last commit" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD^ -- "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&last commit to before last commit" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD^ HEAD -- "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&difference between HEAD and n-th grandparent" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD~n HEAD -- "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"diff HEAD^ (what is commited)" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD^ & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"diff HEAD~ HEAD" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD~ HEAD & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"diff HEAD~5" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff HEAD~5 "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"diff --staged" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff --staged & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"diff --cached" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git diff --cached & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
SEPARATOR
"&what changed" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git whatchanged & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"&what changed -- <path>" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git whatchanged -- "%f" & echo. & git branch & exit`, "", "", "", -2, -2, 50, ".git")
"&show next 5" Call("Log::Output", 1, `%comspec% /K cd /d "%d" & git show next~5:"%f" & echo. & git branch & exit`, "", "", "", -2, -2, 18, ".git")
SEPARATOR
"&undo commit message amend" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git commit -a --amend & echo. & git branch')
"&undo file changes (warning!)" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git checkout -- "%f" & echo. & git branch')
"&undo adds (unstage) to file" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git reset HEAD "%f" & echo. & git branch')
"&undo - revert to latest if pushed" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git revert HEAD & echo. & git branch')
"&undo stop merge git merge --abort" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git merge --abort & echo. & git branch')
"&undo stop merge git reset --merge" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git reset --merge & echo. & git branch')
"garbage collect" Call("Log::Output",1,'%comspec% /K cd /d "%d" & git gc & git branch')
#SEPARATOR
#"&pull" Exec(`%comspec% /B /C cd /d "%d" & git pull`)
#"pull --&rebase" Exec(`%comspec% /B /C cd /d "%d" & git pull --rebase`)
#"add -p" Exec(`%comspec% /B /C cd /d "%d" & git add -p`)
# Merge only one specific commit:
# `git cherry-pick 073791e7`
# Commit to most recent commit:
# `git commit --amend -m "Message"`
# Update most recent commit message:
# `git commit --amend -m "New Message"`
# Restore file from a custom commit (in current branch):
# `git checkout 6eb715d -- index.html`
# Go back to commit:
# `git revert 073791e7dd71b90daa853b2c5acc2c925f02dbc6`
# Soft reset (move HEAD only; neither staging nor working dir is changed):
# `git reset --soft 073791e7dd71b90daa853b2c5acc2c925f02dbc6`
# Undo latest commit: `git reset --soft HEAD~ `
# Mixed reset (move HEAD and change staging to match repo; does not affect working dir):
# `git reset --mixed 073791e7dd71b90daa853b2c5acc2c925f02dbc6`
# Hard reset (move HEAD and change staging dir and working dir to match repo):
# `git reset --hard 073791e7dd71b90daa853b2c5acc2c925f02dbc6`
SEPARATOR
"s&tash list" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git stash list & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"show stash stats" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git stash show stash@{0} & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"show stash changes" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git stash show -p stash@{0} & git branch & exit`, "", "", "", -2, -2, 18, ".git")
"delete complete stash" Call("Log::Output",1, `%comspec% /K cd /d "%d" & git stash clear & git branch & exit`, "", "", "", -2, -2, 18, ".git")
# Merge to master (only if fast forward):
# `git merge --ff-only branchname`
# Merge to master (forc a new commit):
# `git merge --no-ff branchname`
SEPARATOR
#"&edit config (Go To Root And Then Edit)" Exec(`%comspec% /K cd /d "%d" & sh --login -i & cat ~/.gitconfig`)
'&Edit Git Config' Exec(`vim ~/.gitconfig`)
"&config" Call("Log::Output",1,'%comspec% /K cd /d "%d" & cat .git/config & echo [ System ]============================ & git config --system --list & echo [ Global ]============================ & git config --global --list & echo [ Local ]============================ & git config --list& echo [ Worktree ]============================ & git config --worktree --list & echo [ Current Branch ]============================ & git branch & echo [ Current Git ]============================ & which git & echo [ Version ]============================ & git --version & echo [ Config Help ]============================ & git config & exit', "%d", "", "", -1, -1, 50, ".ini")
"&config (New Tab)" Call("Log::Output",1,'%comspec% /K cd /d "%d" & cat .git/config & echo [ System ]============================ & git config --system --list & echo [ Global ]============================ & git config --global --list & echo [ Local ]============================ & git config --list& echo [ Worktree ]============================ & git config --worktree --list & echo [ Current Branch ]============================ & git branch & echo [ Current Git ]============================ & which git & echo [ Version ]============================ & git --version & echo [ Config Help ]============================ & git config & exit', "%d", "", "", -1, -1, 8388609, ".ini")
}
Затем нужно добавить это в глобальные конфигурации с указанными абсолютными путями к diff/merge tool. Diffuse работает и без этих конфигураций.
А эти скрипты делают всякие вещи типа git blame/log выделенных строк, открывают результаты в новой вкладке, показывают разницу между коммитами если коммит id в буфере памяти и т.д. и их вы сможете найти у меня в репозитории.
а здесь подсветка для git log/diff и если открыть результаты в новой вкладке, то можно фильтровать например коммиты через Coder::CodeFold по Author, Date, по megre request, по тайтлу коммита, если в нём есть нотация и также можно фильтровать по изменениям в git diff и лишнего контента не покажет благодаря этой штуке gitlog.coder и Coder::CodeFold панели.