sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt install git
env GIT_SSL_NO_VERIFY=true
붙여서 실행git config --global
이면 전체 시스템 공통 설정 --global
빼면 해당 리포지토리 지역 설정git config --global user.email "your@email.com" git config --global user.name "사용자명" # push/pull 기본설정 - 현재 브랜치에 대해서만 작동 git config --global push.default simple # Windows에서 파일 모드 변경으로 인한 Update 방지 git config --global core.filemode false # Mac OS X 유니코드 문제? 아직도 발생하나? # git config --global core.precomposeunicode true
git config --global core.precomposeunicode true
user.name
을 다시 설정할 것.IncludeIf
구문으로 작업 디렉토리별로 기본 git 설정을 할 수 있다. ~/.gitconfig
에[includeIf "gitdir:~/my-personal-projects/"] #마지막 "/" 필수 path = .git_personal_projects
~/.git_personal_proejcts
[user] email = kwon37xi@gmail.com name = KwonNamSon
includeIf
에 있는 설정을 덮어쓴다.sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git
git diff
명령에서 실행하는 것이 [diff]의 external
항목, git difftool
에서 실행하는 것이 [diff]의 tool
항목이다.diff
는 기본값 그대로 두고 difftool
을 바꾸자. diff
는 pager 를 끼고 실행되는데, GUI diff 를 사용할 경우 pager가 중간에 끼어든다. “pager = ” 설정으로 페이저를 없앨 수 있지만, log 등을 볼 때 페이저가 없어서 문제가 된다.-t <difftool/mergetool이름>
: diff/mergetool을 여러개 지정하고 원하는 이름의 tool 호출git difftool -t meld git mergetool -t kdiff3
[diff] tool = kdiff3 [difftool "kdiff3"] path = /usr/bin/kdiff3 [difftool] prompt = false keepBackup = false trustExitCode = false [merge] tool = kdiff3 [mergetool] prompt = false keepBackup = false keepTemporaries = false [mergetool "kdiff3"] path = /usr/bin/kdiff3
meld
를 difftool과 mergetool로 사용하는 간결한 설정.# ------------------ M E R G E ------------------------- [merge] tool = meld [mergetool "meld"] cmd = meld --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\" --label \"MERGE (REMOTE BASE MY)\" trustExitCode = false [mergetool] # don't ask if we want to skip merge prompt = false # don't create backup *.orig files keepBackup = false # ------------------ D I F F ------------------------- [diff] guitool = meld [difftool "meld"] cmd = meld \"$LOCAL\" \"$REMOTE\" --label \"DIFF (ORIGINAL MY)\"
~/.gitconfig
[diff] external = git_diff_wrapper [pager] diff =
~/bin/git_diff_wrapper
#!/bin/sh vimdiff "$2" "$5"
git diff --no-ext-diff -w | vim -R -
git diff -y -t vimdiff # -y 는 no prompt
*.exe # 모든 .exe 파일을 ignore 하되 !node.exe # node.exe 는 ignore 하지 않는다. 상위 설정을 아래에서 덮어씀.
# Create a ~/.gitignore in your user directory cd ~/ touch .gitignore # Exclude bin and .metadata directories echo "bin" >> .gitignore echo ".metadata" >> .gitignore echo "*~" >> .gitignore echo "target/" >> .gitignore # Configure Git to use this file # as global .gitignore git config --global core.excludesfile ~/.gitignore
$HOME/.gitmessage.txt
파일에 기본 커밋 메시지를 작성해 두고서,
git config --global commit.template $HOME/.gitmessage.txt
Cloning into 'projectName'... error: error setting certificate verify locations: CAfile: /usr/ssl/certs/ca-bundle.crt CApath: none while accessing https://code.google.com/p/projectName/info/refs fatal: HTTP request failed
# 환경변수로 무시 export GIT_SSL_NO_VERIFY=true # 아니면 GIT 설정으로 무시 git config --global http.sslVerify false
mkdir ~/certs curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem # ~/.gitconfig 편집 [http] sslCAinfo = /home/radium/certs/cacert.pem
default_leftonly
로 지정하면 아래 과정이 불필요하다.mkdir -p ~/.local/bin curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.local/bin/git-prompt.sh # edit .bashrc source ~/.local/bin/git-prompt.sh export PS1='이런저런 내용 \$(__git_ps1) 나머지 ' # 실예 녹색 프롬프트 export PS1='\[\e[1;32m\][\u@\h \W$(__git_ps1)]\$\[\e[0m\] ' # 실예 컬러 프롬프트 export PS1="\[\033[01;32m\][\[\033[01;33m\]\u\[\033[01;36m\]@\[\033[01;31m\]\h\[\033[01;37m\]:\[\033[01;34m\]\w\[\033[01;32m\]\$(__git_ps1)]\[\033[01;35m\]\\$\[\033[00m\] "
source /etc/bash_completion.d/git # or source /usr/share/bash-completion/completions/git
sudo pacman -S git bash-completion # shell 재실행
GIT_CURL_VERBOSE=1
: HTTP(S)에서 cURL 요청 주고 받는 것을 콘솔에 출력한다..git/config
파일의 Remote URL에서 username@
을 제거한다..gitignore
파일을 생성해준다..gitkeep
파일을 만들어 둔면 된다.find . -type d -empty -exec touch {}/.gitkeep \;
chmod
명령을 직접사용하면됨.git ls-files --stage
명령으로 파일 권한 확인. 보통 100644
로 돼 있음.git update-index --chmod=+x 'name-of-shell-script
' : 권한에 x
추가git ls-files --stage
로 다시 확인해보면 100755로 변경됨.clone –depth=x
로 클론한 로컬 리포지토리에서 수정해서 push 하면 ! [remote rejected] master → master (shallow update not allowed)
오류가 발생한다.git fetch --unshallow origin # 이후에 git push
–recursive
옵션 필요git clone --recursive <repos-url>