▶ 용어
- git
: 형상 관리 시스템의 한 종류로 코드 파일을 저장, 공유, 기록할 수 있어 이전 버전의 파일로 다시 되돌릴 수 있음 - Staging(add)
: Commit하기 전에 파일을 묶는 것 - Commit
: Staging Area에 있는 파일을 Repository에 저장하는 것, 변경된 사항을 기록하여 저장함. 내 로컬에 최종 저장됨. - Push
: 원격 저장소(gitHub)에 업로드하여 최종 저장 - Fetch
: 로컬에는 없는 원격 저장소에 저장되어 있는 데이터를 모두 가져옴. 상태를 최신으로 업데이트 한다고 생각하면 쉬움. - Pull
: 원격 저장소의 데이터를 가져오고 현재 작업하는 로컬 브랜치와 머지하는 것. Fetch+Merge - Merge
: 브랜치 병합. 가지라는 의미로 브랜치를 만들어서 작업하다가 원래의 브랜치에 다시 합쳐주는 것. - Checkout
: 브랜치 전환. 프로젝트 기록의 특정 시점으로 리포지토리 상태를 업데이트 하는 것. - Branch
: 하나의 프로젝트에 대한 여러 버전을 만들어 둔 것 - Project 와 Repository 의 차이
: 프로젝트는 코드를 사용해 목표를 달성하기 위한 작업의 집합이고, 저장소는 코드의 버전을 관리하는 공간임
▶ 깃 상태
- Modified
: 수정한 파일이 로컬 데이터베이스에 커밋되지 않은 상태 - Staged
: 현재 수정한 파일을 곧 커밋할 상태 - Commited
: 파일이 로컬 데이트베이스에 저장된 상태
▶ 깃 영역
- Working Directoryd
: 작업하는 공간 - Staging Area
: 커밋하기 위한 파일을 올려 놓은 공간 - Repository
: 커밋한 파일이 모여 있는 공간(저장소)
▶ 파일 상태
- Unmodified
: 기존에 커밋했던 파일을 수정하지 않은 상태 - Modified
: 기존에 커밋했던 파일을 수정한 상태 - Staged
: 커밋 가능한 상태 - Untracked
: 관리 대상이 아닌 파일, Unmodified 상태에서 파일을 제거하면 이 상태가 됨
▶ Git 설정 (커밋할 때 사용하는 정보를 수정해야 됨)
- Git Bash에서 사용자 정보를 수정하는 명령어들 입력
git config --global user.name "abc"
git config --global user.email "abc@naver.com" - 사용할 기본 브랜치명 입력(주로 기본 브랜치는 main 또는 master를 입력함)
git config --global init.defaultBranch "main" - 제대로 설정했는지 확인하는 명령어
git config --list - 개별로 제대로 설정했는지 확인하려면, 예를 들어 유저 이름이 제대로 입력 되었는지 확인하려면 아래 명령어 입력
git config --global user.name
▶ Commit, Push 하는 법
▷ GUI 로 커밋 및 푸시
- 좌측 '커밋' 메뉴에서 파일 선택 후 커밋하기
- 상단 '깃' 메뉴에서 'Push'를 통해 푸시하기
- 내 깃허브 사이트 들어가서 새로고침하면 푸시한 내용 뜨는 거 확인할 수 있음

▷ 인텔리제이 터미널로 커밋 및 푸시
※ 기타 자세한 내용과 커밋 및 푸시 과정 중 오류가 발생한다면 스크롤 내려서 "인텔리제이 터미널 명령어" 부분 참고
- 풀 받을 게 있다면 풀 받기(로컬 저장소와 원격 저장소의 파일이 다를 수도 있기 때문, origin은 리모트 저장소 이름, master 또는 main)
: git pull origin master - 스테이지에 올리기(커밋을 하기 위한 준비 단계)
: git add * - 커밋해서 내 로컬 저장소에 올리기
: git commit -m "커밋 메시지" - 푸시해서 원격 저장소(깃허브)에 올리기
: git push origin master - 내 깃허브 사이트 들어가서 새로고침하면 푸시한 내용 뜨는 거 확인할 수 있음
▶ 인텔리제이 터미널 명령어
▷ 깃 저장소 초기화
- git init
: 새로운 저장소 생성, 버전 관리 활성화
( 다음과 같은 에러가 뜰 경우 " fatal: not a git repository (or any of the parent directories): .git " )
▷ Git 변경사항 확인
- git status
: 변경 사항 있는지 확인 - git status -s 또는 git status --short
: 깃에서 변경된 내용을 간단하게 보여줌.
'M'은 수정한 파일, 'A'는 새로 생성한 파일, '??'는 untracked, 'MM'은 staged이면서 unstaged를 의미함
▷ Pull
- git pull origin master
: 풀, 원격 브랜치 내용 가져오기
(로컬 브랜치와 원격 브랜치 간의 히스토리가 다를 경우
error: failed to push some refs to 'github.com:내 깃허브 주소' 에러가 뜸,
origin은 리모트 저장소 이름이고 master는 브랜치 이름)
▷ Add(스테이징, 커밋을 하기 위해 스테이지에 올리기)
- git add *
- * : 현재 디렉토리의 모든 파일과 폴더(하위 디렉토리는 제외)를 스테이징
- . : 현재 디렉토리와 그 하위 디렉토리의 모든 변경 사항을 스테이징(* 보다 포괄적이며 숨김 파일도 포함하므로 일반적으로는 이것을 사용하는 것이 더 안전함)
- 파일경로 : 특정 파일만 추가할 경우 * 대신 추가할 파일의 경로를 입력하면 됨
▷스테이지 관련
- git rm 파일경로 --cached
: 스테이지에 올린 파일 삭제하기(로컬에 파일 그대로 남아 있음. git 관리에서 완전히 제거하고 싶을 때 사용) - git restore --staged 파일명
: 스테이지 상태를 마지막 커밋 상태로 되돌리기(작업 디렉토리의 변경 사항은 그대로 유지. 최근 스테이지한 변경 사항을 취고 하고 싶을 때 사용) - git diff
: 스테이지에 올라가지 않은 파일의 변경 부분을 확인할 수 있음 - git diff --staged 또는 git difff --cashed
: 스테이지에 올라간 파일의 변경 부분을 확인할 수 있음
▷ Commit
- git commit -m "커밋 메시지"
: 커밋 - git commit --amend -m "수정할 새로운 커밋 메시지"
: 가장 최근에 한 커밋 메시지 수정
▷ 커밋 관련
- git log, 커밋 정보 확인
: git log -p
▷ Push
- git push origin master
: 푸시 (origin은 리모트명, 보통 기본 브랜치명은 master 또는 main)
(git push 리모트명 브랜치명)
▷ Push 관련, 리모트 저장소 없다고 뜨는 경우
- 깃 설치, 깃허브 생성조차 안 했을 경우 [Git & GitHub_1-1] 게시글 참고
- 이전에 깃을 등록한 이력이 있는 상태에서 새로운 프로젝트 작업 후 푸시 했는데 " error: failed to push some refs to 'origin' " 에러가 뜨는 경우는
인텔리제이 상단 '깃' 메뉴에서 원격저장소 다시 등록하면 됨
▷ 원격저장소
- git remote -v
: 현재 설정된 원격 저장소의 이름과 URL을 보여줌 - git remote show origin
: 리모트 저장소 상세 정보 보여줌
▷ Branch 관련
- 원격 브랜치 목록 확인
(" fatal: couldn't find remote ref main " 에러는 main 브랜치가 존재하지 않아서 뜨는 거임, 보통 main 또는 master 브랜치 중 하나임)
: git fetch origin
git branch -r - git branch 브랜치명
: 브랜치 생성 - git checkout -b 브랜치명
: 새로운 브랜치를 생성하고 바로 체크아웃(전환)하기 - git checkout 브랜치명
: 브랜치 전환 - git branch
: 현재 브랜치 확인
▶ 새 프로젝트 생성 후 새로운 브랜치 생성
※ 인텔리제이에서 새로운 프로젝트로 만들면 원격저장소를 재등록해야 함
- git init으로 깃 초기화
- 원격저장소 등록 (git remote add origin repository주소)
- git checkout -b 브랜치명으로 새로운 브랜치 생성 후 체크아웃
- git add *로 스테이징
- 커밋, 푸시
▶ .gitignore 파일
- 빌드 시스템으로 인해 자동으로 생성되는 파일로 git 관리가 필요 없는(무시할) 파일 패턴을 작성해 둔 파일
- *.a
: 확장자가 '.a'인 파일은 모두 무시한다는 의미 - !lib.a
: 확장자가 '.a'인 파일은 모두 무시하도록 했지만 'lib.a'인 파일은 예외적으로 무시하지 않겠다는 의미 - build/
: build/ 디렉토리에 있는 파일은 모두 무시한다는 의미 - doc/**/*.pdf
: doc 디렉토리 아래있는 모든 '.pdf'은 모두 무시한다는 의미
'Git & GitHub' 카테고리의 다른 글
[Git & GitHub_1-1] 윈도우 환경에서 깃 초기 설정, 깃허브 SSH key 등록 (0) | 2024.10.05 |
---|