버전관리 시스템(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 |