목차

git

Ubuntu 최신 버전 install

sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

Client 설정

Directory별 Include 설정

Ubuntu Git 최신 버전

diff & difftool

git difftool -t meld
git mergetool -t kdiff3

Git Diff/Merge -> 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

Git Difftool/Mergetool -> meld

# ------------------ 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)\"

Git Diff -> vimdiff

.gitignore

*.exe  # 모든 .exe 파일을 ignore 하되
!node.exe  # node.exe 는 ignore 하지 않는다. 상위 설정을 아래에서 덮어씀.

Global .gitignore

# 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 

Commit Template

$HOME/.gitmessage.txt 파일에 기본 커밋 메시지를 작성해 두고서,

git config --global commit.template $HOME/.gitmessage.txt

https certificat problem

독립 리포지토리 여러개를 하나로 묶기

Bash Prompt

bash auto completion

환경변수

문제 해결

HTTP(S) 에서 비밀번호를 물어보지 않음

Git Hosting

Git 관련 애플리케이션

빈 디렉토리 (empty directory) 유지

find . -type d -empty -exec touch {}/.gitkeep \;

Windows 등에서 파일 chmod 변경 - 특히 실행(x) 권한

shallow update not allowed

git fetch --unshallow origin
 
# 이후에
git push

git blame ignore

submodules

git clone --recursive <repos-url>

문제 해결

참조