gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

git(형상 관리 툴), git 명령어 및 gitlab 작업 시나리오

gbmin 2023. 5. 12. 21:23

git은 분산 버전 관리 시스템 (VCS - Version Control System) 중 하나로, 소스 코드와 같은 파일들을 관리하고 추적하는 형상관리 도구다. git는 대표적으로 GitHub, GitLab, Bitbucket 등과 같은 온라인 플랫폼과 함께 사용된다.
git을 사용하면 여러 사람이 동시에 작업하면서 변경 사항을 추적하고, 코드의 이전 버전으로 되돌릴 수도 있다.
또한 git은 코드를 저장하고 공유하는 데 사용되는 중앙 저장소를 가지지 않고, 각 개발자의 로컬 컴퓨터에 모든 변경 내용을 저장한다. 이는 코드를 보다 효율적으로 관리하고, 협업 과정에서 빠른 작업을 가능하게 한다.

 

1. git 명령어 (자주사용 하는 명령어)

git data transport commands

git status

현재 저장소의 상태를 확인, 변경된 파일이나 새로운 파일이 있는지 확인할 수 있다.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   file.txt

no changes added to commit (use "git add" and/or "git commit -a")

 

 

 

 

 

git log

저장소의 커밋 로그를 확인, 커밋 메시지, 작성자, 날짜 등을 포함한 정보를 확인할 수 있다.

$ git log
commit 1234567890abcdefg (HEAD -> master, origin/master)
Author: John Doe <gbminnote@gbminnote.com>
Date:   Tue May 10 16:41:24 2023 +0900

    Add file.txt

commit 9876543210fedcba
Author: Jane Smith <gbminnote@gbminnote.com>
Date:   Mon May 9 11:22:18 2023 +0900

    Update README.md


git add

변경된 파일을 스테이징 영역에 추가, 스테이징 영역에 추가된 파일은 다음 커밋에 포함된다.

$ git add filename


git fetch

원격 저장소의 변경 사항을 로컬 저장소에 반영.

$ git fetch origin


git branch

브랜치를 생성, 확인, 삭제

$ git branch feature
$ git branch
* master
  feature
$ git branch -d feature


git checkout

브랜치를 전환하거나 파일을 복원.

$ git checkout feature
$ git checkout HEAD file.txt


git merge

브랜치를 병합

$ git merge feature


git rebase

브랜치를 재배치

$ git rebase master feature


git reset

변경 사항을 취소하거나 커밋을 제거

$ git reset HEAD file.txt
$ git reset HEAD~1


git push

로컬 저장소의 변경 사항을 원격 저장소에 업로드

$ git push origin master


git init

새로운 저장소를 초기화

$ git init


git clone

원격 저장소를 로컬에 복제

$ git clone https://github.com/example/repo.git


git commit

변경 사항을 커밋 스테이징 영역에 추가된 파일들이 커밋된다.

$ git commit -m "Add filename"

 

 

2. git cheat sheet

git-cheatsheet

 

3. git 작업 시나리오

step.1 develop 브랜치
브랜치 생성 및 이동

$ git switch -c [my_branch]​

 

step.2 my_branch 브랜치
작업 수행
새로운 브랜치로 이동한 후, 작업을 수행. 이 단계에서는 파일을 수정하고 변경 내용을 커밋한다.

$ git add .
$ git commit -m "Commit Message"
$ git switch develop

작업이 완료되면, develop 브랜치로 이동하여 변경된 내용을 불러옴.

step.3 develop 브랜치

$ git fetch
$ git merge origin/develop
$ git switch [my_branch]​


step.4 my_branch 브랜치
develop 브랜치에서 변경된 내용을 가져온 후, my_branch 브랜치를 develop 브랜치를 기준으로 리베이스 한다.

$ git rebase develop
$ git add .
$ git rebase --continue
git push origin [my_branch]​


step.5 gitLab
리베이스가 완료되면, GitLab에서 MR(Merge Request)을 생성, 코드 리뷰를 진행하고 필요한 경우 변경 내용을 추가로 커밋하고 push 한다. 코드 리뷰 완료 후, develop 브랜치에 변경된 내용이 있는 경우, 다시 리베이스를 진행한다. push (--force 옵션) 해야 한다.
마지막단계로 MR(Merge Request) 처리하여 브랜치가 develop 브랜치로 병합한다.