๐จGit Bash ์กฐ์ ๐๏ธ
์ค๋ ์ ๋ Windows ํฐ๋ฏธ๋์์ ์ฌ์ฉํ๋ Git Bash๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ฌ๊ธฐ์ ๋จ๊ณ๋ฅผ ๋จ๊ฒจ๋๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ค์น
์, ๋จผ์ Git ๋ฐ Windows Terminal ์ ๋ชจ๋ ์ค์นํฉ๋๋ค.
Windows ํฐ๋ฏธ๋์ Git-Bash ์ถ๊ฐ
{
// Git Bash
"guid": "{YOUR GUID}",
"closeOnExit" : "always",
"commandline" :
"\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l",
"icon" : "C:\\Program
Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
"name" : "Git Bash",
"startingDirectory" : "%USERPROFILE%",
"colorScheme": "Dracula"
},
Windows ํฐ๋ฏธ๋์์ Git Bash ๋ฐฑ์คํ์ด์ค ํ์๋ฑ ๊น๋ฐ์ ์ ๊ฑฐ
๋น ์ค์์ ๋ฐฑ์คํ์ด์ค ํค๋ฅผ ๋๋ฅด๋ฉด Git Bash๊ฐ ์๋ชป ๊น๋ฐ์ ๋๋ค. ์ข ์ง์ฆ๋๊ณ ์ฝ๋ ํ ์ค์ด๋ฉด ๊ณ ์น ์ ์๋ค. ๋จผ์ ์ง์ .inputrc ํ์ผ์ ๋ง๋ญ๋๋ค.
code ~/.inputrc
VSCode๋ฅผ ์ข์ํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ํ ์คํธ๋ฅผ ํ์ผ์ ์ถ๊ฐํ๊ณ ์ ์ฅํฉ๋๋ค.
set bell-style none
ํ๋กฌํํธ ์คํ์ผ ์ง์
์ด๊ฒ์ ์๋ bash์ ๋๋ค.
์, ์ ๋ ๋ฏธ๋๋ฉ๋ฆฌ์คํธ๋ฅผ ์ข์ํ์ง๋ง ์ ๋ชฉ ํ์์ค์ ๋ณ๊ฒฝํ๊ณ MYSYS๋ฅผ ์ ๊ฑฐํ๊ณ Git ์ ์ฅ์ ์ํ ๋ฐ ์๊ฐ๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค.
์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ ์กฐ์ธ์ Git ํด๋์์ .git-prompt.sh๋ฅผ ๋ฎ์ด์ฐ๋ ๋์ ์์ ๋ง์ .bashrc๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค(Git ์ ๋ฐ์ดํธ๋ฅผ ๋ฎ์ด์ฐ๋ฉด ์ฌ์ฉ์ ์ง์ ๋ด์ฉ์ ์๊ฒ ๋ฉ๋๋ค...). ์ด์ ์ .bashrc๋ฅผ ์์ฑํ์ฌ ์์ํ๊ฒ ์ต๋๋ค. ๋ค์ ์ฝ๋๋ฅผ ์คํํ์ฌ ์์ฑํฉ๋๋ค.
code ~/.bashrc
Git Bash๊ฐ ์ .bash_profile ํ์ผ์ ์์ฑํ๋ค๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๊ฑฑ์ ๋ง์ธ์, ์ด์ ๋๋ฉด ๊ด์ฐฎ์ต๋๋ค. ์ด์ Git ํด๋์ ์๋ git_prompt.sh ํ์ผ์ ์ ์ฒด ๋ด์ฉ์ ์ .bashrc์ ๋ณต์ฌํ๊ณ ํธ์งํ ์ ์์ต๋๋ค.
์ ๋ชฉ ํ์์ค ๋ณ๊ฒฝ
๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค.
PS1='\[\033]0;TITTLE$PWD\007\]' # set window title
MYSYS ์ ๊ฑฐ
์ฝ๋ฉํธ:
#PS1="$PS1"'\[\033[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
ํ๋ด ์ ๋ณด
์ด๊ฒ์ ํ์ผ ๋์ ์ถ๊ฐํ๋ฉด '
__git_ps1
'์ด ๋๋จธ์ง ์์
์ ์ํํฉ๋๋ค.#Git status options
export GIT_PS1_SHOWSTASHSTATE=true
export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export GIT_PS1_SHOWUPSTREAM="auto"
์๊ฐ
์ด๊ฑฐ ์ถ๊ฐ ํด๋ด:
PS1="$PS1"' \[\033[37m\][\A]' # 24h time, white
๋ณ์นญ
๋ง์ง๋ง์ผ๋ก ๋ณ์นญ์ ์ด๋ป์ต๋๊น? ํ์ผ์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
#My aliases
alias gs='git status -sb'
alias gaa='git add --all'
alias gc='git commit -m $2'
alias gp='git push'
alias gpo='git push origin'
alias gpl='git pull'
alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
alias ls='ls -F --color=auto --show-control-chars'
alias ll='ls -l'
alias rm='rm -iv'
์์ฝํ๋ฉด ๋ค์์ ์ ์ฒด ์ฝ๋์ ๋๋ค.
#My aliases
alias gs='git status -sb'
alias gaa='git add --all'
alias gc='git commit -m $2'
alias gp='git push'
alias gpo='git push origin'
alias gpl='git pull'
alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
alias ls='ls -F --color=auto --show-control-chars'
alias ll='ls -l'
alias rm='rm -iv'
# Prompt style
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;Git Bash$PWD\007\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host<space>
#PS1="$PS1"'\[\033[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
PS1="$PS1"'\[\033[33m\]' # change to white
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[37m\][\A]' # 24h time, white
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
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
#Git status options
export GIT_PS1_SHOWSTASHSTATE=true
export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true
export GIT_PS1_SHOWUPSTREAM="auto"
์์ฃผ ์ข์, ๋๋ฌ์ด! ๋ชจ๋ ๊ฒ์ ์ ์ฅํ๊ณ ํฐ๋ฏธ๋์ ๋ค์ ์์ํ๊ณ ์ฆ๊ธฐ์ญ์์ค. ์ด๊ฒ์ Git Bash์ ๋ชจ๋ ๊ธฐ๋ณธ ์ ๋ณด๊ฐ ํฌํจ๋ ๊นจ๋ํ bash์ ๊ฒฐ๊ณผ์ ๋๋ค.
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. Google์์ ์ฐพ๊ธฐ๊ฐ ์ฝ์ง ์์ต๋๋ค. ๊ฑด๋ฐฐ๐ค
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จGit Bash ์กฐ์ ๐๏ธ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/pablohs1986/tuning-git-bash-1eeoํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค