개발자 준비과정/JAVA
깃 사용법
하늘바람a
2024. 4. 1. 23:56
Git
Git은 분산형 버전 관리 시스템으로, 프로젝트의 소스 코드를 효율적으로 관리하고 협업하는 데 사용되는 도구이다.
버전 관리, 브랜치 관리, 충돌 해결 등의 기능을 제공하여 개발자들이 프로젝트를 효율적으로 관리할 수 있도록 한다.
Git 저장소를 생성하는 곳
- 명령 프롬프트 또는 터미널: 명령줄 인터페이스(Command Line Interface, CLI)를 사용하는 명령 프롬프트나 터미널 에서 Git 저장소를 생성할 수 있다.
- 그래픽 사용자 인터페이스(GUI): 소스트리(Sourcetree), GitHub Desktop 등과 같은 GUI 도구를 사용하여 시각적으로 Git 저장소를 생성하고 관리할 수 있다.
- 통합 개발 환경(IDE): IntelliJ IDEA, Eclipse, Visual Studio 등과 같은 IDE를 사용하여 Git 저장소를 생성할 수 있다.
이러한 IDE는 Git을 내장하고 있거나 플러그인을 통해 Git을 지원하므로 통합된 개발 및 버전 관리 환경을 제공한다.

명령어
git init | 새로운 Git 저장소를 초기화합니다. |
git clone | 원격 저장소로부터 저장소를 복제합니다. |
git add | 작업 디렉토리의 변경 사항을 스테이징 영역에 추가합니다. |
git commit | 스테이징 영역에 있는 변경 사항을 커밋합니다. |
git status | 작업 디렉토리와 스테이징 영역의 상태를 확인합니다. |
git diff | 작업 디렉토리와 스테이징 영역 또는 커밋 간의 차이를 확인합니다. |
git log | 커밋 히스토리를 조회합니다. |
git branch | 브랜치 목록을 조회하거나 새로운 브랜치를 생성합니다. |
git checkout | 브랜치를 전환하거나 작업 디렉토리의 파일을 복원합니다. |
git merge | 브랜치를 병합합니다. |
git rebase | 브랜치를 재배치하여 커밋 히스토리를 수정합니다. |
git pull | 원격 저장소에서 변경 사항을 가져와 현재 브랜치에 병합합니다. |
git push | 로컬 저장소의 변경 사항을 원격 저장소에 업로드합니다. |
git remote | 원격 저장소를 관리합니다. |
git stash | 현재 작업 디렉토리의 변경 사항을 임시로 저장하고 숨깁니다. |
git tag | 태그를 추가, 삭제, 조회합니다. |
git fetch | 원격 저장소에서 변경 사항을 가져오지만 병합하지 않습니다. |
명령어 옵션
git commit | -m | 커밋 메시지를 직접 작성합니다. |
git commit | -a | 변경된 모든 파일을 자동으로 스테이징하고 커밋합니다. |
git commit | -am | 변경된 모든 파일을 자동으로 스테이징하고 커밋 메시지를 직접 작성하여 커밋합니다. |
git add | -u | 수정된 파일과 삭제된 파일을 스테이징합니다. |
git add | -A | 변경된 모든 파일을 스테이징합니다. |
git checkout | -b | 새로운 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git branch | -a | 로컬 브랜치와 원격 브랜치를 모두 표시합니다. |
git log | --oneline | 각 커밋을 한 줄로 요약하여 표시합니다. |
git diff | --cached | 스테이징 영역과 최신 커밋 간의 차이를 확인합니다. |
git pull | --rebase | 변경 사항을 가져오고 병합 대신 재배치하여 적용합니다. |
git switch | -c <branch> | 새로운 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git switch | - | 이전 브랜치로 전환합니다. |
git switch | --create | 새로운 브랜치를 생성합니다. |
옵션을 나타내는 기호 '-'와 '--'의 차이
- - 단축옵션. 보통 한 글자로 구성되며, 하나의 `-` 뒤에 여러 옵션을 조합하여 사용할 수 있다.
예를 들어, `ls -l`에서 `-l`은 파일 리스트를 자세히 표시하는 옵션이다. - -- 긴 옵션. 주로 긴 옵션 이름이 있고, 하나의 `--` 뒤에 한 개의 긴 옵션만 사용합니다.
예를 들어, `git commit --message`는 커밋 메시지를 지정하는 옵션이다.
-m : --message
-c : --create
커밋 메세지 생성하는 곳 바꾸기
vim상태에서 :q -> 빠져나감
vscode를 사용하고 싶을 때 -> git config --global core.editor "code --wait
Git에서 브랜치를 생성하는 명령어
git branch <branch_name> | 새로운 브랜치를 생성합니다. |
git checkout -b <branch_name> | 새로운 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git switch -c <branch_name> | 새로운 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git checkout --track <remote>/<branch_name> | 원격 브랜치를 추적하는 새로운 로컬 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git switch --track <remote>/<branch_name> | 원격 브랜치를 추적하는 새로운 로컬 브랜치를 생성하고 해당 브랜치로 전환합니다. |
git checkout -b <branch_name> <start_point> | 특정 커밋이나 브랜치에서 새로운 브랜치를 생성합니다. |
git switch -c <branch_name> <start_point> | 특정 커밋이나 브랜치에서 새로운 브랜치를 생성합니다. |
git switch <branch_name> | 브랜치가 이미 존재하는 상태에서 해당 브랜치로 전환 |
git checkout <commit-hash 또는 브랜치명> | 커밋 해시 또는 브랜치 이름을 지정하여 해당 시점으로 이동 HEAD 포인터가 이동하며, 작업 디렉토리와 스테이징 영역의 파일도 해당 시점의 상태로 변경됨 |
master
Git 저장소의 기본 브랜치이며, 모든 다른 브랜치의 기반이 된다.
새로운 브랜치를 생성하면 해당 브랜치에서 작업하게 되고, `master` 브랜치는 이전 상태를 유지한다.
`master` 브랜치의 역할
1. 기본 브랜치 : 새로운 Git 저장소를 생성하면 자동으로 `master` 브랜치가 생성된다다. 모든 다른 브랜치들은 이 `master` 브랜치를 기반으로 생성된다.
2. 최신 상태 유지 : 일반적으로 `master` 브랜치는 최신의 안정된 상태를 나타낸다. 새로운 기능을 개발하거나 수정할 때는 새로운 브랜치를 만들어 작업하고, 작업이 완료되면 이를 `master` 브랜치에 병합하여 최신 상태를 유지한다.
3. 릴리스 관리 : `master` 브랜치는 프로젝트의 릴리스 버전을 관리하는 데 사용될 수 있다. 안정적인 코드의 버전을 유지하고, 이를 배포하는 데에 활용될 수 있다.
HEAD
현재 작업 중인 브랜치의 최신 커밋
브랜치를 나누고 합치는 과정에서 HEAD의 위치를 자유자재로 바꿀 수 있다.
git reset 명령어
git reset --soft <commit> | HEAD를 특정 커밋으로 이동시키고, 해당 커밋 이후의 변경 사항은 스테이징 영역에 유지됩니다. |
git reset --mixed <commit> | HEAD를 특정 커밋으로 이동시키고, 해당 커밋 이후의 변경 사항은 스테이징 영역에 유지되지 않습니다. |
git reset --hard <commit> | HEAD를 특정 커밋으로 이동시키고, 해당 커밋 이후의 변경 사항은 모두 삭제됩니다. |
HEAD~<N> | HEAD에서 상대적인 위치 N 만큼 이전의 커밋을 지정합니다. |
HEAD^ | HEAD에서 한 단계 이전의 커밋을 지정합니다. |
아래는 git restore 명령어와 git reset 명령어의 주요 차이점을 비교
특성 | git restore | git reset |
목적 | 파일의 상태를 이전 상태로 복원합니다. | 커밋의 위치를 이동하거나 변경 사항을 제거합니다. |
대상 | 파일에 대한 작업을 수행합니다. | HEAD 또는 브랜치를 대상으로 합니다. |
옵션 | --source, --staged, --worktree | --soft, --mixed, --hard, HEAD~<N>, HEAD^ |
영향 | 워킹 디렉토리의 파일 상태를 변경합니다. | HEAD, 스테이징 영역, 워킹 디렉토리의 상태를 변경합니다. |
변경 사항 | 파일의 내용을 이전 상태로 복원합니다. | 커밋의 위치를 변경하거나 변경 사항을 제거합니다. |
주요 사용 사례 | 실수로 변경한 파일을 이전 상태로 되돌릴 때 사용합니다. | 최신 커밋을 취소하거나 특정 시점으로 되돌아가고자 할 때 사용합니다. |
