본문 바로가기
개발

GIT (1)

by just다해 2024. 9. 9.

버전관리 시스템(Version Control System)이란?

  • 복원, 백업, 협업
  • 변경 사항(버전)을 관리해 주는 소프트웨어
  • CVS, SVN, GIT

버전관리를 한다는 것은 프로젝트 폴더(저장소)에 생성되는 파일들을 체계적으로 관리하겠다는 것입니다.

그중에서 현재 제일 많이 사용하는 git에 대한 사용 방법에 대해 정리하고자 합니다.

Git 명령어

--help

$ git {{명령어}} --help

해당 명령어에 대한 설명을 자세히 볼 수 있습니다.

예제

$ git config --help
$ git tag --help

config 기본 설정

config 명령어를 통해 git의 기본 설정을 변경할 수 있습니다.

$ git config

각각의 버전은 누가 작성한 것인지에 대한 정보를 가지고 있어야 하는데 아래와 같이 username과 email 정보를 설정 할 수 있습니다.

 git config --global user.name "이름"
 git config --global user.email "이메일주소"

현재 설정된 정보는 --list 옵션으로 확인할 수 있습니다.

$ git config --list
init.defaultbranch=main
user.name={{name}}
user.email={{email}}
core.excludesfile=/Users/username/.gitignore_global
core.autocrlf=input
mergetool.sourcetree.trustexitcode=true
...

init 새로운 저장소 만들기

git init은 현재 directory를 버전관리를 시작하겠다는 명령어입니다.

$ git init
Initialized empty Git repository in /Users/{{username}}/gittest/.git/

$ ls -al
total 0
drwxr-xr-x   3 username  staff   102  3 23 17:08 .
drwxr-xr-x+ 34 username  staff  1156  3 23 17:08 ..
drwxr-xr-x  10 username  staff   340  3 23 17:08 .git

ls -al.git 폴더가 생성된 것을 볼 수 있으며, 이 .git 폴더 안에서 버전관리가 이루어지게 됩니다.

status 상태 확인

$ git status
On branch main

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    test1.html
--------------------------

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   test1.html
  • Untracked files: 은 버전관리가 되지 않고 있는 파일로서 새로 추가, 수정, 삭제 즉 변경된 파일입니다. (버전관리가 되지 않고 있는 파일은 붉은색으로 표시)
  • new file: 은 버전관리에 새로 추가된 파일이며, 초록색으로 표시됩니다.

add 추가

그렇다면, 버전관리에 추가는 어떻게 할까요? git add 명령어를 통해서 파일을 버전에 포함할 수 있습니다.

$ git add {{파일명}}
$ git add test1.html

. 은 절대 경로로 해당 repository에 있는 변경된 모든 사항을 버전 관리에 포함하겠다는 의미입니다.

$ git add .

add 명령어 후 git status를 해보면 changed to be Committed: 하위에 파일이 버전관리 되는 것을 확인 할 수 있습니다.

commit 확정

이때까지 변경된 것을 확정 처리가 필요한데, git commit 명령어로 확정할 수 있습니다.
간단하게 -m {{message}} 해당 버전에 대한 설명을 간단히 적어서 관리할 수 있습니다.

$ git commit -m "first commit"
[main (root-commit) dc423a2] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 test1.html

만약 단순한 메시지로 끝나지 않고, 해당 버전에 대한 추가적인 설명이 필요한 경우 --amend 옵션으로 추가하면 됩니다.

$ git commit --amend
[main c6ce442] first commit
 Date: Thu Mar 23 17:28:55 2017 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 test1.html

push 서버에 올리기

현재의 변경 내용은 아직 로컬 저장소의 HEAD에 머물고 있으며, git push 명령어로 서버에 반영할 수 있습니다.

$ git push [리모트 저장소 이름] [브랜치 이름]

예를 들어, main 브랜치를 origin 서버에 올리려면 다음과 같이 수행하면 됩니다.

$ git push origin main

pull 저장소 받아오기

서버에 있는 저장소를 받아오기 위해서는 git clone 명령어를 사용하면 됩니다.

$ git clone [저장소 경로]

여러 가지 옵션을 통해 특정 브랜치로 저장소를 받아오거나, 특정 커밋 기준으로 받아올 수 있으며, 자세한 건 git clone --help로 확인해 볼 수 있습니다. 아래는 특정 브랜치로 저장소를 받아오는 예시입니다.

$ git clone -b {branch_name} --single-branch {repository_url}

간단한 git 사용법에 대해 알아보았으며, 다음 포스트에는 조금 더 자세한 git 사용법에 대해 알아봅시다!

reset/revert 취소

reset 과 revert 모두 현재 버전을 취소하는 개념이며, 두 명령어는 동작하는 게 조금 다릅니다.

$ git reset [돌아갈 버전]
$ git reset HEAD~1

reset은 선택한 버전의 상태로 돌아가는 것으로 해당 버전을 지웁니다.

$ git revert [돌아갈 버전]
$ git revert HEAD ~1

revert는 선택한 버전을 취소해서 그 이전 상태로 돌리는 명령어입니다.
revert와 reset은 항상 주의해서 사용해야 하며, 실제 서버에 반영하기 전에는 반드시 확인해 보는 게 좋습니다. 실제로 개발을 진행하는 브랜치에서는 reset, revert 모두 자유롭게 해도 상관없지만, 같이 사용하는 저장소에서는 특히 주의가 필요합니다.

'개발' 카테고리의 다른 글

JPA 영속성 관리  (3) 2024.09.11
GIT (2)  (0) 2024.09.10
JedisExhaustedPoolException 이슈  (4) 2024.09.08
Kafka 설정 값  (1) 2024.09.08
Transaction  (1) 2024.09.08