GIt은 분산식 버전 관리 시스템입니다. Git을 사용하면 프로젝트 관리를 손쉽게 할 수 있습니다.
현재 수 많은 프로젝트에서 GIt을 사용합니다. Git을 다루기 위해서 명령어를 입력합니다.
명령어 마다 옵션 기능이 포함이 되어 명령어 뒤에 플래그(flag
)를 붙여 기능을 풍부하게 만듭니다.
명령어 뒤에 플래그 옵션을 붙일 때마다 명령 입력이 길어지거나 복잡해지는 경우가 생깁니다.
GIt에서 Alias
를 설정을 제공하여 긴 명령어 조합을 자신만의 명령어로 지정을 할 수 있게 도와줍니다.
이번 세션에서는 반복적으로 사용하는 Git 명령어를 간단한 명령 이름으로 변경하겠습니다.
git status
현재 브랜치 main
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
커밋할 사항 없음, 작업 폴더 깨끗함
~/
)에서 .gitconfig 파일을 확인합니다.cd ~ # ~/
vim .gitconfig
[alias]
# add alias Commend
[checkout]
defaultRemote = origin # one remote return back checking out and trackin
[color]
ui = true
[core]
excludesfile = ~/.gitignore_global # add gitignore file
autocrlf = input
safecrlf = true
quotePath = false
pager = less -IXF
fsmonitor = true
.....
[alias]
s = status
# ~/dev-git/a.txt
git status 명령어를 alias로 다른 명령어 지정하기 # Add new Context
git s
현재 브랜치 main
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
커밋하도록 정하지 않은 변경 사항:
(무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
(use "git restore <file>..." to discard changes in working directory)
수정함: a.txt
커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
이번 세션에서는 Git 명령어를 Shell Script로 명령어를 변경하겠습니다.
~/
)에서 .gitconfig 파일을 확인합니다.cd ~ # ~/
vim .gitconfig #open .gitconfig file
[alias]
s = status
[checkout]
defaultRemote = origin # one remote return back checking out and trackin
[color]
ui = true
[core]
excludesfile = ~/.gitignore_global # add gitignore file
autocrlf = input
safecrlf = true
quotePath = false
pager = less -IXF
fsmonitor = true
.....
[alias]
s = status
st = '!git status' # shell script 작성 시 느낌표(!)를 맨 앞에 붙여 줍니다.
git st
현재 브랜치 main
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
커밋하도록 정하지 않은 변경 사항:
(무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
(use "git restore <file>..." to discard changes in working directory)
수정함: a.txt
커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
이번 세션에는 위에서 작성한 명령어를 조합하여 Git Status 파일 상태에 수정 된 코드를 UI로 볼 수 있도록 하겠습니다.
“git status” 명령어는 현재 파일 상태를 표시만 해줍니다. 그렇지만 파일 상태 안에 수정 된 코드를 같이 확인 할 수 없습니다. “git diff” 명령어를 실행하면 수정 된 코드를 볼 수 있지만 두 가지 명령어를 동시가 사용하는 것은 수고스러운 일이 발생합니다.
라이브러리 중 fzf 를 사용하여 터미널 환경에서 UI를 보여 줄 수 있게 만들고 원하는 파일을 지정 할 때 파일 내에 수정 된 코드를 볼 수 있도록 fzf가 도와줍니다.
자세한 내용은 fzf 공식 문서를 참조하시면 되겠습니다.
~/
)에서 .gitconfig 파일을 확인합니다.cd ~ # ~/
vim .gitconfig #open .gitconfig file
[alias]
s = status
st = "!git status"
[checkout]
defaultRemote = origin # one remote return back checking out and trackin
[color]
ui = true
[core]
excludesfile = ~/.gitignore_global # add gitignore file
autocrlf = input
safecrlf = true
quotePath = false
pager = less -IXF
fsmonitor = true
....
fzf 은 터미널 탐색에 강력한 기능을 가지고 있습니다. 그 중 preview 기능은 파일 탐색에 UI로 확인 할 수 있게 보여줍니다.
[alias]
s = status
st = "!git status --short | fzf --preview "git diff {2}"
git st
git diff 은 변경 사항에 대한 코드를 확인 할 수 있는 명령어로 새로 추가 된 코드는 확인이 어렵습니다.
새로 추가 된 코드를 확인 시 git show 명령어를 추가하면 됩니다.
git status --short | fzf --preview 'git diff --word-diff --color=always {2}'
코드가 수정 된 부분은 초록색, 삭제 된 부분은 빨강색 두 가지 형태로 코드를 확인 할 수 있습니다.
#./dev-git/a.txt
1. git 생성하기 -> git 수정하기 # modified text
ShellScirpt로 Git 명령어를 조작하는 방법을 알아봤습니다.
이 후 ShellScript로 더 많은 기능을 추가 할 수 있고 여러 라이브러리를 활용해서 나만의 Git 명령어를 추가 하실 수 있습니다.
다음 링크에서 제 .gitconfig 파일을 확인 할 수 있습니다.