From c507e85690967e6073bc94b3a26ae11ad41a4124 Mon Sep 17 00:00:00 2001 From: Gaze Date: Sun, 20 Aug 2023 01:36:54 +0800 Subject: [PATCH] first commit --- README.md | 55 +++++++++++++ bash.bashrc | 202 +++++++++++++++++++++++++++++++++++++++++++++++ find_bash.bat | 17 ++++ git-prompt.sh | 47 +++++++++++ replace_file.bat | 22 ++++++ 5 files changed, 343 insertions(+) create mode 100644 README.md create mode 100644 bash.bashrc create mode 100644 find_bash.bat create mode 100644 git-prompt.sh create mode 100644 replace_file.bat diff --git a/README.md b/README.md new file mode 100644 index 0000000..e4f61a5 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +[安装包下载地址](https://cdn.bitnet.fun:5003/better_git_bash/installers.zip) + +# 安装步骤 + +请先通过以上链接下载安装包文件 + +## 安装Python + +先安装Python安装包 + +双击exe,尽量勾选ADD TO PATH + +## 安装SpaceVim +__请务必在git bash中完成此步骤!__ + +```bash +git clone https://git.bitnet.fun:5004/Gaze/SpaceVim.git ~/.SpaceVim +``` + +## 安装Git for Windows + +双击exe + +## 安装微软运行库 + +双击exe + +## 安装nvim + +双击exe + +## 安装Hyper + +安装完毕后,请点击Hyper右上角三条杠-Edit-Preferences + +将modules.exports.config.shell修改为你的Git安装目录下的`\\bin\\bash.exe` + +你也可以通过双击`find_bash.bat`来直接获取你的bash路径(前提是你的git在环境变量里) + +## 替换配置文件 + +鼠标右键点击`replace_file.bat`单击以管理员权限运行,看到2条"已复制 1 个文件。"即为执行成功 + +或者将bash.bashrc手动放入Git安装目录的`\etc`目录下,将git-prompt.sh手动放入Git安装目录的`\etc\profile.d`目录 下 + +## 执行环境变量 +__请在装好的hyper中执行!__ + +```bash +cd 项目文件 +source bash.bashrc +``` + + + diff --git a/bash.bashrc b/bash.bashrc new file mode 100644 index 0000000..c2cb49c --- /dev/null +++ b/bash.bashrc @@ -0,0 +1,202 @@ +# To the extent possible under law, the author(s) have dedicated all +# copyright and related and neighboring rights to this software to the +# public domain worldwide. This software is distributed without any warranty. +# You should have received a copy of the CC0 Public Domain Dedication along +# with this software. +# If not, see . + +# /etc/bash.bashrc: executed by bash(1) for interactive shells. + +# System-wide bashrc file + +# Check that we haven't already been sourced. +([[ -z ${CYG_SYS_BASHRC} ]] && CYG_SYS_BASHRC="1") || return + +# If not running interactively, don't do anything +[[ "$-" != *i* ]] && return + +# If started from sshd, make sure profile is sourced +if [[ -n "$SSH_CONNECTION" ]] && [[ "$PATH" != *:/usr/bin* ]]; then + source /etc/profile +fi + +# Warnings +unset _warning_found +for _warning_prefix in '' ${MINGW_PREFIX}; do + for _warning_file in ${_warning_prefix}/etc/profile.d/*.warning{.once,}; do + test -f "${_warning_file}" || continue + _warning="$(command sed 's/^/\t\t/' "${_warning_file}" 2>/dev/null)" + if test -n "${_warning}"; then + if test -z "${_warning_found}"; then + _warning_found='true' + echo + fi + if test -t 1 + then printf "\t\e[1;33mwarning:\e[0m\n${_warning}\n\n" + else printf "\twarning:\n${_warning}\n\n" + fi + fi + [[ "${_warning_file}" = *.once ]] && rm -f "${_warning_file}" + done +done +unset _warning_found +unset _warning_prefix +unset _warning_file +unset _warning + +# If MSYS2_PS1 is set, use that as default PS1; +# if a PS1 is already set and exported, use that; +# otherwise set a default prompt +# of user@host, MSYSTEM variable, and current_directory +[[ -n "${MSYS2_PS1}" ]] && export PS1="${MSYS2_PS1}" +# if we have the "High Mandatory Level" group, it means we're elevated +#if [[ -n "$(command -v getent)" ]] && id -G | grep -q "$(getent -w group 'S-1-16-12288' | cut -d: -f2)" +# then _ps1_symbol='\[\e[1m\]#\[\e[0m\]' +# else _ps1_symbol='\$' +#fi +case "$(declare -p PS1 2>/dev/null)" in +'declare -x '*) ;; # okay +*) + export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n'"${_ps1_symbol}"' ' + ;; +esac +unset _ps1_symbol + +# Uncomment to use the terminal colours set in DIR_COLORS +# eval "$(dircolors -b /etc/DIR_COLORS)" + +# Fixup git-bash in non login env +shopt -q login_shell || . /etc/profile.d/git-prompt.sh + + +GIT_PS1_SHOWDIRTYSTATE=true +GIT_PS1_SHOWUNTRACKEDFILES=true +alias g=git +alias ga='git add' +alias gaa='git add --all' +alias gapa='git add --patch' +alias gb='git branch' +alias gba='git branch -a' +alias gbd='git branch -d' +alias gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d' +alias gbl='git blame -b -w' +alias gbnm='git branch --no-merged' +alias gbr='git branch --remote' +alias gbs='git bisect' +alias gbsb='git bisect bad' +alias gbsg='git bisect good' +alias gbsr='git bisect reset' +alias gbss='git bisect start' +alias gc='git commit -v' +alias 'gc!'='git commit -v --amend' +alias gca='git commit -v -a' +alias 'gca!'='git commit -v -a --amend' +alias gcam='git commit -a -m' +alias 'gcan!'='git commit -v -a --no-edit --amend' +alias 'gcans!'='git commit -v -a -s --no-edit --amend' +alias gnb='git checkout -b' +alias gcd='git checkout develop' +alias gcf='git commit --amend --reuse-message HEAD' +alias gcl='git clone --recursive' +alias gclean='git clean -fd' +alias gcm='git checkout master' +alias gcmsg='git commit -m' +alias 'gcn!'='git commit -v --no-edit --amend' +alias gco='git checkout' +alias gcount='git shortlog -sn' +alias gcp='git cherry-pick' +alias gcpa='git cherry-pick --abort' +alias gcpc='git cherry-pick --continue' +alias gcs='git commit -S' +alias gd='git diff' +alias gdca='git diff --cached' +alias gdct='git describe --tags `git rev-list --tags --max-count=1`' +alias gdt='git diff-tree --no-commit-id --name-only -r' +alias gdw='git diff --word-diff' +alias gf='git fetch' +alias gfa='git fetch --all --prune' +alias gfo='git fetch origin' +alias gg='git gui citool' +alias gga='git gui citool --amend' +alias ggpull='git pull origin $(git_current_branch)' +alias ggpur=ggu +alias ggpush='git push origin $(git_current_branch)' +alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' +alias ghh='git help' +alias gignore='git update-index --assume-unchanged' +alias gignored='git ls-files -v | grep "^[[:lower:]]"' +alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk' +alias gk='\gitk --all --branches' +alias gke='\gitk --all $(git log -g --pretty=%h)' +alias gl="git log --no-merges --color --graph --date=format:'%Y-%m-%d' --pretty=format:'%Cblue%cd %C(yellow)%h%Creset %C(green)%d%Cblue %s %C(magenta)[%an]%Creset' --abbrev-commit" +alias glg='git log --stat' +alias glgg='git log --graph' +alias glgga='git log --graph --decorate --all' +alias glgm='git log --graph --max-count=10' +alias glgp='git log --stat -p' +alias glo='git log --oneline --decorate' +alias globurl='noglob urlglobber ' +alias glog='git log --oneline --decorate --graph' +alias gloga='git log --oneline --decorate --graph --all' +alias glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit' +alias glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all' +alias glp=_git_log_prettily +alias glum='git pull upstream master' +alias gm='git merge' +alias gmom='git merge origin/master' +alias gmt='git mergetool --no-prompt' +alias gmtvim='git mergetool --no-prompt --tool=vimdiff' +alias gmum='git merge upstream/master' +alias gp='git push' +alias gpc='git push --set-upstream origin $(git_current_branch)' +alias gpd='git push --dry-run' +alias gpf='git push -f' +alias gpoat='git push origin --all && git push origin --tags' +alias gpristine='git reset --hard && git clean -dfx' +alias gpso='git push --set-upstream origin $(git_current_branch)' +alias gpu='git push upstream' +alias gpv='git push -v' +alias gr='git remote' +alias gra='git remote add' +alias grb='git rebase' +alias grba='git rebase --abort' +alias grbc='git rebase --continue' +alias grbi='git rebase -i' +alias grbm='git rebase master' +alias grbs='git rebase --skip' +alias grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}' +alias grh='git reset HEAD' +alias grhh='git reset HEAD --hard' +alias grmv='git remote rename' +alias grrm='git remote remove' +alias grset='git remote set-url' +alias grt='cd $(git rev-parse --show-toplevel || echo ".")' +alias gru='git reset --' +alias grup='git remote update' +alias grv='git remote -v' +alias gsb='git status -sb' +alias gsd='git svn dcommit' +alias gsi='git submodule init' +alias gsps='git show --pretty=short --show-signature' +alias gsr='git svn rebase' +alias gss='git status -s' +alias gst='git status' +alias gsta='git stash save' +alias gstaa='git stash apply' +alias gstc='git stash clear' +alias gstd='git stash drop' +alias gstl='git stash list' +alias gstp='git stash pop' +alias gsts='git stash show --text' +alias gsu='git submodule update' +alias gts='git tag -s' +alias gtv='git tag | sort -V' +alias gunignore='git update-index --no-assume-unchanged' +alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1' +alias gup='git pull --rebase' +alias gupv='git pull --rebase -v' +alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' +alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip--"' +alias history='fc -l 1' +alias l='ls -lah' +alias vim='nvim -u ~/.SpaceVim/vimrc' \ No newline at end of file diff --git a/find_bash.bat b/find_bash.bat new file mode 100644 index 0000000..d80116e --- /dev/null +++ b/find_bash.bat @@ -0,0 +1,17 @@ +@echo off +setlocal + +REM 运行 "where git" 命令获取 git.exe 的路径 +for /f "delims=" %%I in ('where git') do set "git_path=%%~dpI" + +REM 获取 git.exe 所在的文件夹路径 +for %%I in ("%git_path%..") do set "git_folder=%%~fI" + +REM 构建目标路径 +set "target_path=%git_folder%\bin\bash.exe" + +REM 将路径中的单反斜杠替换为双反斜杠 +set "target_path=%target_path:\=\\%" + +echo %target_path% +pause \ No newline at end of file diff --git a/git-prompt.sh b/git-prompt.sh new file mode 100644 index 0000000..a971bd0 --- /dev/null +++ b/git-prompt.sh @@ -0,0 +1,47 @@ +if test -f /etc/profile.d/git-sdk.sh +then + TITLEPREFIX=SDK-${MSYSTEM#MINGW} +else + TITLEPREFIX=$MSYSTEM +fi + +if test -f ~/.config/git/git-prompt.sh +then + . ~/.config/git/git-prompt.sh +else + PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title + PS1="$PS1"'\n' # new line + PS1="$PS1"'\[\033[35m\]' # change to purple + PS1="$PS1"'\u@\h ' # user@host + PS1="$PS1"'\[\033[32m\]' # change to green + PS1="$PS1"'\w' # current working directory + if test -z "$WINELOADERNOEXEC" + then + GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)" + COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}" + COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}" + COMPLETION_PATH="$COMPLETION_PATH/share/git/completion" + if test -f "$COMPLETION_PATH/git-prompt.sh" + then + . "$COMPLETION_PATH/git-completion.bash" + . "$COMPLETION_PATH/git-prompt.sh" + PS1="$PS1"'\[\033[36m\]' # change color to cyan + PS1="$PS1"'`__git_ps1`' # bash function + fi + fi + PS1="$PS1"'\[\033[0m\]' # change color + PS1="$PS1"'$ ' # prompt: always $ +fi + +MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc + +# Evaluate all user-specific Bash completion scripts (if any) +if test -z "$WINELOADERNOEXEC" +then + for c in "$HOME"/bash_completion.d/*.bash + do + # Handle absence of any scripts (or the folder) gracefully + test ! -f "$c" || + . "$c" + done +fi diff --git a/replace_file.bat b/replace_file.bat new file mode 100644 index 0000000..d3070a5 --- /dev/null +++ b/replace_file.bat @@ -0,0 +1,22 @@ +@echo off +setlocal + +for %%i in ("%~dp0.") do set "script_dir=%%~fi" +cd %script_dir% + +REM 运行 "where git" 命令获取 git.exe 的路径 +for /f "delims=" %%I in ('where git') do set "git_path=%%~dpI" + +REM 获取 git.exe 所在的文件夹路径 +for %%I in ("%git_path%..") do set "git_folder=%%~fI" + +REM 构建目标路径 +set "bashrc_path=%git_folder%\etc" +set "sh_path=%git_folder%\etc\profile.d" + +echo %bashrc_path% +echo %sh_path% + +copy bash.bashrc "%bashrc_path%" +copy git-prompt.sh "%sh_path%" +pause \ No newline at end of file