Git

[Git] 깃 저장소(Git Repository) 생성 및 Git 사용 방법 총정리

Git을 사용하기위해 Git 저장소를 생성해야합니다. 우리가 인터넷에서 파일을 다운로드 받을때 다운 받은 파일이 저장되는 디렉토리(폴더)가 있습니다. 보통 윈도우의 경우 C:UsersilikeDownloads 와 같이 User폴더안에 사용자 계정명 그리고 그 안에 Downloads폴더에 다운로드 됩니다. 이와 마찬가지로 우리가 개발한 소스코드를 업로드할 디렉토리를 생성하여 지정하는 것을 Git 저장소 생성이라고 보시면 됩니다.

 

저장소를 만들 때 Git에서 지원하는 인터페이스는 2가지가 있으며 Git CLI (Command LIne Interface)를 사용하는 방법과 Git GUI (Graphical User Interface)를 사용하는 방법이 있습니다. 아래 도표에서 실행한 프로그램의 캡쳐이미지를 보시면 이해가 되실겁니다. CLI를 사용할 경우에는 리눅스 운영체제에 대한 지식이 필요합니다.

Git CLI (Command LIne Interface) Git GUI (Graphical User Interface)
윈도우용 Git Bash 윈도우용 Git GUI


그럼 내컴퓨터를 서버라고 가정하고 로컬(Local) 저장소를 만들어봅니다. 두가지 방법으로 생성해볼것이며, 리눅스를 모르는 경우라면 Git GUI를 사용하는 방법을 추천합니다.

 

Git CLI 방법으로 생성방법

깃 저장소로 사용할 디렉토리를 생성합니다. 저는 C:gitexample 폴더를 생성하였습니다.

이렇게 만든 폴더를 Git Repository로 지정하기 위해서는 Git Bash 프로그램을 실행합니다.

그리고 리눅스 명령어를 사용하여 현재 디렉토리 위치를 파악하기 위한 명령어 pwd를 실행합니다.

Jinsu@DESKTOP-8C3UPL2 MINGW64 ~ (master)
$ pwd
/c/Users/ilike

Jinsu@DESKTOP-8C3UPL2 MINGW64 ~ (master)
$

 

이제 리눅스 cd명령어를 사용하여 내가 만든 폴더로 이동합니다. ../의 의미는 상위 폴더로 들어간다는 의미입니다. c드라이브에 gitexample를 생성하였기 때문에 c드라이브까지 찾아 들어가는 것입니다.

Jinsu@DESKTOP-8C3UPL2 MINGW64 ~ (master)
$ cd ../../git/example

Jinsu@DESKTOP-8C3UPL2 MINGW64 /c/git/example
$

 

git init 명령어를 실행하여 저장소로 지정합니다.

$ git init
Initialized empty Git repository in C:/git/example/.git/


저장소 생성이 마무리 되었습니다. 해당 폴더에는 .git폴더가 생성됩니다. (숨김상태로 보이지 않음) 안보이게 했다는 것은 중요한 파일이니 건들이지 말라는 의미입니다. 삭제하시면 눈물 나실거에요.

 

Git GUI 방법으로 저장소 생성하기

Git GUI를 실행합니다. 아직 저장소를 만들지 않았다면 아래와같은 3개의 선택 옵션이 나타납니다.

  • Create New Repository
  • Clone Existing Repository
  • Open Existing Repository


Create New Repository를 클릭하여 저장소로 지정할 폴더를 선택해주면 Git 저장소 생성은 마무리 됩니다.

 

Git 저장소 파일의 상태 정보

Tracked File Untracked File
깃이 관리하고 있음을 의미 깃이 관리하고 있지 않음을 의미

Tracked File의 세 상태

  1. Unmodified: 파일의 내용이 변경되지 않은 상태
  2. Modified: 파일이 수정된 상태 
  3. Staged: 파일을 저장소에 저장할 상태(즉 commit 대상)
 

 

Git 저장소의 파일 상태 확인 : git status

생성한 깃 저장소의 상태를 확인할 때 반드시 저장소 위치로 이동 후 git status 명령어를 실행합니다.

Jinsu@DESKTOP-8C3UPL2 MINGW64 ~ (master)
$ cd ../../git/example

Jinsu@DESKTOP-8C3UPL2 MINGW64 /c/git/example (master)
$ git status
On branch master

No commits yet

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

Jinsu@DESKTOP-8C3UPL2 MINGW64 /c/git/example (master)
$


 

Git 저장소에 소스코드 등의 파일을 업로드 해야할 경우 Git에서 사용하는 명령어를 사용해야 추적됩니다. 단순히 파일을 복사해서 저장소에 넣으면 Git저장소를 사용하는 의미가 없습니다. git 저장소를 사용하는 목적은 소드 코드의 형상관리(버전관리) 목적이 있기 때문입니다. 파일을 강제적으로 복사하거나 추가 후 git status 명령어를 실행하면 UnTracked file임을 알려줍니다.  그럼으로 git add 혹은 commit 명령어를 사용하여 소스코드나 파일을 추가해야합니다.


 

파일을 Stage상태로 변경할 명령어 : git add [대상 파일]

git add명령어를 사용하여 저장소에 안에 UnTracked상태인 파일을 Tracked 상태의 하나인 Stage상태로 변경합니다. 이것이 의미하는 바는 깃 저장소에 commit할 대상으로 지정함을 의미합니다.

$ git add whoami.txt

위명령어 실행후 git status를 사용하여 상태를 확인합니다. 그 결과 Untracked 파일에서 new file 상태로 변경되었습니다.


파일이 많을 경우 저장소 안의 모든 파일및 디렉토리를 일괄로 처리하기위해 get add -A 옵션 명령어를 사용하면 됩니다.

git add -A
git add .

위 명령어는 동일한 의미입니다. 
현재 폴더위치 기준으로 처리됩니다.

 

폴더 안에 있는 모든 파일을 stage상태로 변경해야할 경우 git add [폴더명] 명령어를 사용합니다.

./은 현재 디렉토리를 의미합니다.

git add ./폴더명

 

 

index정보 확인하는 명령어

git ls-files --stage


 

git 저장소에 올리기 : git commit

최종적으로 git 저장소에 올리기 위해 git commit 명령어를 사용합니다. git commit 명령어를 실행하면 리눅스에서 자주 사용하는 vi에디터가 실행됩니다. 


stage상태의 파일들이 Changes to be committed 대상에 올라옵니다. 키보드에서 a키를 누르면 에디터에서 글을 작성할 수 있는 상태가 됩니다.  commit대상 파일에 대한 정보를 남깁니다. 저는 "2021.01.19. txt파일 변경" 문구를 넣었습니다.

이제 ESC키를 누른후 콜론을 입력합니다. wq를 타이핑 후 엔터키를 칩니다. w는 저장한다는 의미이며, q는 에디터를 종료함을 의미합니다.


git log 명령어를 사용하여 commit 이력을 확인할 수 있습니다.

 

vi에디터로 넘어가지않고 commit과 동시에 처리방법

git commit 명령어 뒤에 -m 옵션 주고 뒤에 코멘트를 작성합니다.

git commit -m "2021.01.19. txt 파일변경"

 

commit 코멘트 변경하는 방법

가장 최근에 commit한 건에 대한 메시지(코멘트)를 변경하고 할 때는 git commit --amend 명령어를 사용합니다.

 git commit --amend 

 

커밋한 사람(사용자)을 변경하는 방법

git commit --amend --author="변경할 사용자이름 <변경 대상 이메일 주소>"

git commit --amend --author="User1 <user1@gmail.com>"

#변경 후 확인하기
git log

 

가장 최근이 아닌 기존에 commit한 건에 대한 코멘트 변경 혹은 커밋한 사람 변경하기

git rebase 명령어를 사용합니다. HEAD는 가장 최근 commit을 의미하며 숫자 3은 가장 최근으로 부터 이전 3번째를 대상으로 하겠다는 의미입니다.

git rebase -i HEAD~3


명령어를 실행하면 아래와 같이 pick eb745c4 헬로우 git 과 함께 사용할 수 있는 명령어(Commanes) 가 보입니다.

pick eb745c4 헬로우 git

# Rebase 1045556..eb745c4 onto 1045556 (1 command)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.

 

수정을 위해 pick를 지우고 edit로 변경합니다. 그런 다음 ESC키 누른 뒤 wq(대문자 안됩니다.)를 타이핑해서 에디터를 빠져나옵니다. 그러면 아래와 같이 2가지의 명령어를 실행하여 변경할 수 있는 상태가 되는 것입니다.


git commit --amend를 사용하여 위에서와 같이 동일한 방법으로 코멘트와 사용자를 변경합니다. 변경이 완료되었다면 반드시 git rebase --continue 명령어를 실행하여 마무리해야합니다.

 

존재하지 않는 위치를 지정하는 경우 fatal: invalid upstream 'HEAD~12' 잘못된 업스트림이라고 알려줍니다.

 

자주 사용하는 Git명령어 

명령어 설명
git init 저장소 지정
git add commit 대상으로 지정
git commit 저장소에 업로드
git clone 저장소 복제
git push 원격 저장소에 파일이나 폴더 업로드
git pull 원격 저장소에서 파일이나 폴더를 다운받기
git status 저장소 파일의 상태 확인
git log commit이력 확인
git remote -v 원격 저장소 모두 확인

 

다음시간에는 원격저장소(Remote REpository)인 GitHub 가입부터 사용방법까지 알아봅니다. GitHub는 마이크로소프트에서 제공하는 온라인 공유 저장소입니다.

 

[연관 글 더보기]

[Git] 윈도우용 Git 설치 방법 따라하기 및 Git 환경 설정 방법 알아보기

 

[Git] 윈도우용 Git 설치 방법 따라하기 및 Git 환경 설정 방법 알아보기

PC에서 Git을 사용하기 위해 윈도우 버전(Git for Windows)의 Git을 설치하는 방법에 대해 알아봅니다. Git은 소스 코드의 형상관리(버전관리)를 위해 사용하는 저장소라고 생각하시면 이해하기 쉽습니

playground.naragara.com

 

Leave a Reply

error: Content is protected !!