-
Git & GitHub 관련 명령어 모음Git&GitHub 2025. 1. 11. 00:01
git과 github관련 명령어를 짧은 설명과 함께 기록해둔 문서입니다. Ctrl + F키 또는 Command+F키를 통해 원하는 명령어를 찾아가시는 걸 추천합니다.
Git
로컬에서 지정한 특정 프로젝트의 버전 관리를 해주는 프로그램
GitHub
Git과 같은 것(X)
Git으로 관리하던 레포지토리를 저장할 수 있는 외부 컴퓨터(원격 저장소)< Git >
git init
: 로컬에 레포지토리(.git)를 만드는 명령어
레포지토리가 존재하지 않으면 버전 관리를 할 수 없다.
git init 한다. = 로컬에서 Git 저장소를 초기화 = 버전 관리를 시작할 수 있는 환경이 된다.git add git add 파일이름 // 특정 파일만 staging area에 업로드 git add . //모든 파일을 staging area에 업로드
: 커밋할 파일또는 폴더를 지정하는 명령어 (*이 단계가 왜 필요할까? -> 가장 하단으로)
git commit // 텍스트 에디터(vim 등)로 커밋 메세지 남김 git commit -m "커밋 메세지" // -m : 커밋 메세지 남기기 옵션 git commit --amend // 최신 커밋 수정해서 새로운 커밋으로
: 로컬 레포지토리에 버전을 저장하는 명령어
git status
: Git이 인식하고 있는 파일또는 폴더의 상태**를 보여주는 명령어
**(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository) 상태 이미지 참고
git reset git reset 파일이름 -- git reset --soft 커밋해시 // a git reset --mixed 커밋해시 // a, b git reset --hard 커밋해시 // a, b, c (c의 이유로 권장되지 않음)
: staging area에 업로드된 파일또는 폴더를 제거하는 명령어
= git add 취소
: 이전 커밋으로 돌아가기
a. Head가 과거 특정 커밋을 가르켜 로컬 레포지토리(repository)로 지정한다.
b. staging area를 과거 특정 커밋의 내용과 같게 한다.
c. working directory를 과거 특정 커밋의 내용과 같게 한다.git log git log --pretty=oneline // log를 한줄로, 커밋해시-커밋메세지
: 커밋 히스토리를 확인하는 명령어
상단이 최신 커밋이다.git show 커밋해시네자리
: 커밋의 변경 사항을 구체적으로 알 수 있는 명령어
git diff 커밋해시 커밋해시
: 커밋을 비교하는 명령어
git tag // 모든 태그 조회 git tag 태그이름 커밋해시
: 중요한 커밋(->버전)을 저장하는 용도의 명령어
git branch 만들브랜치이름 git branch - d 삭제할브랜치이름
: 브랜치 제작과 삭제 관련 명령어
git checkout 이동할브랜치이름 git checkout -b 만들고이동할브랜치이름
: 브랜치 이동 관련 명령어
git merge 브랜치B이름 git merge --abort // merge 취소
: 브랜치A와 브랜치B를 합칠 때 사용하는 명령어
브랜치A로 이동(checkout)한 후, 해당 명령어를 씁니다. = "브랜치 B에 있는 사항을 브랜치 A에 합칠게"더보기Fast-forward : 같은 선상에 있는 브랜치를 merge할 때
A -- B (main-Head) -- C -- D (experiment)$ git merge experiment
A -- B -- C -- D (experiment) (main-Head)
3-way merge : a.공통 조상 커밋, b.Head가 가리키고 있는 브랜치가 가리키는 커밋, c.다른 브랜치가 가리키는 커밋 세 가지를 고려하여 merge하는 방식
분리된 두 선상에서 merge할 때 일어나는 merge라고 생각하면 된다.
< GitHub의 원격 레포지토리와 교류하는 명령어 >
git push
: 로컬 레포지토리를 원격 레포지토리로 전송하는 명령어
GitHub의 원격 레포지토리를 생성, 연결한 후 부터 쓰는 명령어입니다.// 실제 명령어를 입력할 때는 {}를 쓰지 않고, 해당 자리에 적절한 값을 넣으면 됩니다. git push origin {원격 레포지토리에 생성할 브랜치 이름}
: 원격 레포지토리에 브랜치를 생성하면서 코드를 전송하는 명령어
이때, 원격 레포지토리에 생성할 브랜치는 로컬 레포지토리 상에 미리 생성되어 있어야 합니다.
git pull
: 원격 레포지토리를 로컬 레포지토리로 전송하는 명령어
GitHub의 원격 레포지토리를 생성, 연결한 후 부터 쓰는 명령어입니다.// 실제 명령어를 입력할 때는 {}를 쓰지 않고, 해당 자리에 적절한 값을 넣으면 됩니다. git clone {원격 레포지토리의 URL}
: 원격 레포지토리를 내 컴퓨터의 공간으로 복사해오는 명령어
git remote -v // 정상적인 출력 // 원격저장소별칭 연결된 원격 레포지토리 주소 fetch/push할때사용됨 // origin 연결된 원격 레포지토리 주소 (fetch) // origin 연결된 원격 레포지토리 주소 (push)
: 연결돼있는 원격 레포지토리를 확인하는 명령어< 그 외 >
Head :
Head -> Branch -> Commit
$git checkout 커밋이름
을 통해 Head를 Branch에서 분리시킨 Detached HEAD 를 만들 수도 있다. 보통 과거의 특정 커밋에서 새로운 브랜치를 만들고 싶을 때 쓴다. Head가 가리키고 있는, Branch가 가리키고 있는, 커밋과 같은 상태로 Working Directory를 변경한다.
@헷갈림 주의 : $git reset -soft는 특별히 "Working Directory, Staging Area의 파일 상태를 유지한 채" 커밋 포인터만 이동하려는 의도(=커밋만 취소하고 싶어...!!! 과거의 커밋으로 돌아갈래...!!!)로 설계된 명령어이기에 Working Directory를 변경하지 않는다.
git remote add origin {원격 레포지토리의 URL} : Github에서 레포지토리를 가져올 때 쓰는 명령어. origin = {원격 레포지토리의 URL}. orgin이 변수같은 역할을 한다.
git push -u origin master : 로컬 레포지토리에 있는 master 브랜치의 내용 -> origin으로 등록된 원격 레포지토리로 보내는 것. 원격 레포지토리에 master라는 브랜치가 없으면 생성한다.
-u는 --set-upstream 로컬 레포지토리가 원격 레포지토리를 추적하게 만든다.
=> tracking connection : 해주는 이유 ) 이후에 git push origin master:master 라는 귀찮은 걸 반복하지 않기 위해
----이 단계가 왜 필요할까?
더보기working area - staging area - repository (이미지 참고 : https://git-scm.com/about/staging-area)
git add는 working area(말 그대로 코드를 작업하는 공간)에서 작업하는 파일들을 staging area로 올리는 명령어입니다.
"working area에서 A 파일과 B 파일 두 가지를 수정했지만
A 파일은 완전히 마무리 되지 않아 올리고 싶지 않고(그 외에도 다양한 이유 존재), B 파일은 올리고 싶다!"
"working area에 특정 기능을 하는 코드가 담긴 A 폴더와 B 파일을 작업했지만 아직 A 폴더는 올리고 싶지 않다.라는 니즈를 충족하기 위해 만들어진 단계라고 할 수 있겠습니다.
'Git&GitHub' 카테고리의 다른 글
git fetch와 git pull의 차이점 (0) 2025.01.10 git rebase와 git merge의 차이점 (0) 2025.01.10