Git 이란? Git은 버전을 편리하게 관리 할 수 있게 도와주는 도구입니다. 우리가 작업하고 있는 파일들을 원하는 순간으로 다시 돌아갈 수 있게 만들어주죠. 많은 개발자가 자신이 개발한 프로그램을 Github를 통해 관리하고 있고 Git, Github를 알고 있다면 협업할 때 큰 도움이 됩니다.

Git 설치 - Git은 명령어를 기본으로 한 명령어 프로그램이기 때문에 Terminal에서 Command를 통해 배워야 다양한 기능 사용이 가능하지만 GUI 프로그램도 많이 있습니다. Git 공식 홈페이지에 가시면 관련 사용 할 수 있는 GUI Application 프로그램을 확인하실 수 있습니다. (모든 Git의 기능을 담은 GUI Application은 찾기도 힘들고 각 버튼을 클릭 시 어떠한 기능이 수행되는지 정확히 알기 어렵기 때문에 Git을 처음 배울 때는 Terminal을 이용하여 명령어로 수행하여 배우는 것을 추천함)

Git 공식홈페이지 - GUI 프로그램

  • GitHub Desktop : 사용 가능한 기능이 제한적
  • SourceTree : 전반적으로 많이 이용 (명령어를 이용하여 할 수 있는 기능보다는 제한적이만 다양한 기능이 포함)
  • GitKraken : 화려한 UI

1. Terminal

Mac이나 Windows에서 제공하는 기본적인 Terminal Tool을 이용해도 되지만 좀 더 편리한 기능이 포함된 Terminal을 사용하고 싶다면 아래 Terminal 프로그램을 추천합니다. 

  • iTerm2 (Mac)
  • Cmder (Windows) : 윈도우 사용자들에게 권장하는 터미널 프로그램. DOS 명령어 뿐만 아니라 리눅스의 명령어도 그대로 사용할 수 있다는 장점이 있음 (Cmder Full Version은 Git이 기본적으로 포함되어 설치되기때문에 별도로 Git을 설치 할 필요는 없음)

2. Git 설치

현재 Git이 설치되어 있는 지 확인하려면 아래 명령어를 수행합니다.

C:> git --version
git version 2.29.1.windows.1

Git 버전 확인

Git 이 설치되어 있지 않다면 Git 다운로드 페이지로 이동하여 OS에 맞는 Git을 다운로드 하여 설치합니다.

Git 다운로드 페이지

3. Git 설정 (Text Editor)

git config --list 입력하여 현재 설정된 git 설정을 확인 할 수 있습니다.

c:> git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
diff.astextplain.textconv=astextplain
rebase.autosquash=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=helper-selector

Git 설정 확인

git 설정을 파일로 열어보기를 원한다면 git config --global -e 이라고 입력하시면 Terminal에서도 Edit 모드가 수행됩니다.

git config --global -e

# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
#	name = unknown
#	email = Administrator@SKCC20N01081.SKCC.NET

Teminal Edit 모드가 불편하신 분은 Text Editor 프로그램을 연결 할 수 있습니다. 편집기에 해당하는 명령어 입력 후 git config --global -e 를 다시 입력하시면 해당 Text Editor 프로그램으로 수행되는 것을 확인하실 수 있습니다.

편집기 환경설정 명령어
nano $ git config --global core.editor "nano -w"
Text Wrangler $ git config --global core.editor "edit -w"
Sublime Text (Mac OS) $ git config --global core.editor "subl -n -w"
Sublime Text (Windows) $ git config --global core.editor "'c:/program files/sublime text 2/sublime_text.exe' -w"
Notepad++ (Windows) $ git config --global core.editor "'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
메모장 (Windows) $ git config --global core.editor "notepad"
VS Code $ git config --global core.editor "code"
Kate (리눅스) $ git config --global core.editor "kate"
Gedit (리눅스) $ git config --global core.editor "gedit -s"

Text Editor 연결 예시 (Notepad ++)

4. Git 설정 (User)

User 정보를 아래와 같이 설정합니다.

C:> git config --global user.name "Yunwoong"
C:> git config --global user.email "이메일 주소@gmail.com"
## 아래와 같이 입력하여 설정한 User정보 확인 가능
C:> git config --global user.name
Yunwoong
C:> git config --global user.email
이메일 주소@gmail.com

운영체제마다 Editor에서 새로운 줄바꿈을 할 때 들어가는 문자열이 달라집니다. Windows 경우는 text\r\n 와 같이 carriage-return line feed 가 들어가는 반면 Mac에서는 text\n 와 같이 line-feed 하나만 들어가게 됩니다. 이런 차이점때문에 Git repository를 다양한 운영체제에서 사용하는 경우에 수정을 하지 않았음에도 문자열 줄바꿈이 달라서 Git History나 Git blame 보는데 문제가 있을 수 있습니다. 이것을 수정 할 수 있는 설정이 autocrlf 설정입니다.

Windows에서 true 로 설정하게 되면 Git에 저장 할 경우carriage-return 을 삭제하게 되고 다시 Git에서 Windows로 가져올 때에는carriage-return을 붙여주게 됩니다. Mac에서는 input으로 설정하게 되면 Git에서 받아올 경우에는 그냥 받아오게 되고 저장 시에는carriage-return을 삭제하게 됩니다. (Mac에서는 carriage-return을 추가하지 않는데 저장 시에 삭제하는 이유는 이메일 등에서 복사/붙여넣기로 인해 carriage-return이 실수로 추가되는 경우가 존재하기 때문입니다.)

## 윈도우 사용자
git config --global core.autocrlf true
## Mac OS 사용자
git config --global core.autocrlf input

5. Git 명령어

Git에서 사용가능한 모든 명령어는 Git 공식홈페이지 Documentation-Reference 에서 확인해 보실 수 있습니다. 각 명령어를 클릭하면 사용가능한 옵션도 확인이 가능합니다.

Git 명령어

또한 Terminal에서 명령어 다음에 --h 를 입력하면 간단하게 정보를 확인 할 수 있습니다.

C:\git > git config --h
Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    --worktree            use per-worktree config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

Action
    --get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --get-urlmatch        get value specific for the URL: section[.var] URL
    ...
    ...
    ...

6. Git 초기화/삭제

Git을 초기화 하고 싶다면 git init명령어를 통해 할 수 있습니다.

## 폴더 생성
C:\> mkdir git
C:\> cd git
## Git 초기화
C:\git > git init
Initialized empty Git repository in C:/git/.git/
C:\git (master) > ls -al
drwxr-xr-x 1 Administrator 197121 0  6월 16 22:18 ./
drwxr-xr-x 1 Administrator 197121 0  6월 16 22:18 ../
drwxr-xr-x 1 Administrator 197121 0  6월 16 22:18 .git/

ls -al 명령어를 수행하여.git 이라는 숨겨진 폴더를 확인 할 수 있습니다. (폴더나 파일명 앞에 "." 포함되어 있다면 숨겨진 파일이거나 폴더입니다.) 해당 폴더를 열어보면 Git  repository에 관련된 다양한 폴더와 파일을 확인 할 수 있습니다. Git과 관련된 정보들이 .git 폴더에 저장된다는 것을 알 수 있습니다.

## Windows
explorer .git\

## Mac OS
open .git

그리고 init을 수행하여 git을 초기화하게되면 기본적으로 master branch 가 생성이 됩니다. 저장소에 새로운 파일을 추가 한다거나 추가한 파일의 내용을 변경하여 그 내용을 저장(커밋, Commit)하는 것은 모두 'master' 라는 이름의 branch를 통해 처리할 수 있는 일이 됩니다. 'master'가 아닌 또 다른 새로운 branch를 만들어서 '이제부터 이 branch를 사용하겠다!'라고 선언(checkout)하지 않는 이상, 모든 작업은 'master' branch에서 이루어 집니다.

.git 폴더

Git을 삭제하고 싶다면  rm -rf .git 명령어를 이용하여 삭제 할 수 있습니다.

C:\git (master) > rm -rf .git\
C:\git >
더보기

Sourcetree를 통해 추가하는 방법은 이미 생성된 Git 폴더가 있는 경우 Drag&Drop을 통해 추가 하거나 Create를 통해서 신규 repository를 추가 하실 수 있습니다.

Sourcetree를 통해 기존 git폴더 추가
Sourcetree를 통해 신규 git폴더 추가

Git의 상태를 확인하고 싶다면  git status 명령어를 사용 하시면 됩니다.

C:\git > git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

7. Git 명령어 단축키

반복적으로 사용하는 명령어를 단축하여 사용하고 싶다면 global의 alias를 이용하여 단축키를 설정 할 수 있습니다. 예를들어 status라는 명령어를 st로 설정한다면 아래와 같이 설정하여 수행 가능합니다.

C:\git > git config --global alias.st status
C:\git > git st
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

[ Git, Github ] 기본 사용법

반응형