[git] 내가 보려고 정리한 git 명령어

jinne·2021년 7월 25일
0
post-thumbnail

🖥 Git 명령어 정리하기

Do it! git & github를 보고 정리한 git 기본

git init

디렉토리에 저장소를 만들기 위해 디렉토리를 초기화한다.

.git이 생기며, 이 디렉토리가 깃을 사용하며 버전이 저장될 저장소(repository)이다.

해당 디렉토리는 감춰져있는데, 맥에서는 shift + command + . 를 누르면 숨은 파일을 확인할 수 있다.

깃에서 버전이란, 문서를 수정하고 저장할 때 생기는 것이다. 깃에서 버전을 관리하면 기존 파일 이름은 그대로 유지하며, 파일에서 무엇을 변경했는지 변경 시점마다 저장할 수 있다!

작업 트리에서 문서를 수정하고 - 수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 저장 - 스테이지에 있던 파일을 저장소로 커밋하는 것이 깃이 버전을 만드는 순서이다

2장 깃으로 버전 관리하기

git status

깃의 상태를 확인하는 명령어

한 번이라도 커밋한 파일은 수정 여부를 계속 추적한다 (tracked 파일)

한 번도 깃에서 버전 관리를 하지 않은 파일은 untracked 파일이라고 표시한다.

git add

작업 트리에서 파일을 만들거나 수정 후 스테이지에 수정한 파일을 추가한다.

git commit -m "메시지 내용"

커밋할 때는 그 버전에 어떤 변경사항이 있는지 확인하기 위해 메시지를 함께 기록한다.

git log

저장소에 저장된 버전을 확인할때 사용 커밋을 만든 사람과 시간이 함께 나타난다.

commit 항목 옆, 영문과 숫자로 된 긴 문자열을 commit hash / git hash라고 부른다. 커밋을 구별하는 아이디라고 볼 수 있으며, commit hash 옆 (HEAD → master)은 이 버전이 가장 최신이라는 표시이다.

git log —-stat

가장 최근의 커밋부터 순서대로 커밋 메시지와 관련 파일이 나열된다. Enter 입력 시 다음 로그 화면을 볼 수 있고 Q를 누르면 로그 화면을 빠져나올 수 있다.

git commit --am

git add와 commit을 한 번에 처리할 수 있는 명령어

git commit --amend

커밋을 만든 즉시 커밋 메시지를 수정할 수 있다. 가장 최근의 커밋 메시지를 수정할때 사용

git diff

작업 트리에서 수정한 파일과, 최신 커밋 버전을 비교할 수 있다. 수정한 내용으로 새 버전을 만드려면 스테이지에 올린 후 커밋하고 수정한 내용을 버리려면 git checkout 명령어를 사용해 수정 내용을 취소한다.

git checkout -- 파일이름

가장 최신 버전 상태로 되돌려야할 때 사용한다. checkout으로 되돌린 내용은 다시 복구할 수 없음

스테이지에 올라가있지 않을 때, (git add 전) 작업 트리의 변경 사항을 취소할때 사용

git reset HEAD -- 파일이름

스테이지 한 후, (git add 후) 스테이지에서 내릴때 사용한다. 파일이 스테이지에 올라가기 전으로 돌아온다.

git reset HEAD^

수정한 파일을 스테이징하고 커밋까지 한 후, 마지막에 한 커밋을 취소하는 방법이다. 커밋도 취소되고, 스테이지에서도 내려간다. 취소한 파일이 작업 트리에만 남는다.

git reset HEAD~3 최근 3개의 커밋을 취소할 때 사용한다.

git reset --hard 복사한 커밋 해시

복사한 commit hash 위치로 HEAD가 옮겨진다. 복사해서 붙인 커밋이 가장 최신 커밋이 된다.

git revert 복사한 최신 커밋 해시

커밋을 삭제하지 않고 되돌릴 때 사용한다. reset의 경우, reset 명령 뒤 돌아갈 커밋 해시를 지정하지만 revert의 경우 취소하려고 하는 버전을 지정한다.

3장 깃과 브랜치

모든 버전 관리 시스템에는 브랜치라는 개념이 있는데,

나무가 가지에서 새 줄기를 뻗듯 여러 갈래로 퍼지는 데이터 흐름을 가리킨다.

깃으로 버전관리를 시작하면 기본적으로 master이란 브랜치가 만들어진다.

사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다.

새 브랜치를 만들면, 기존에 저장한 파일을 master에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있다. 그 후, 새 브랜치에서 원하는 작업을 다 끝내면 새 브랜치에 있던 파일을 원래 master 브랜치에 병합(merge)할 수 있다.

HEAD는 여러 브랜치 중 현재 작업중인 브랜치를 가리킨다.

git brach

git branch는 branch를 확인하는 명령어이다. master은 저장소를 만들 때 기본적으로 만들어지는 브랜치!

git branch 브랜치명

브랜치를 만드는 명령어

git checkout 브랜치명

브랜치명에 해당하는 브랜치로 이동한다. 브랜치가 분기 후 다른 브랜치에 추가된 커밋은 해당 브랜치에 영향을 미치지 않는다. 만약 원격저장소에서 새 브랜치가 추가되었을 경우 git remote update 를 통해 새 브랜치 정보를 받아올 수 있다. 이 이후 git branch -r 로 원격 브랜치 조회 한 후 checkout 하면 된다.

git log --online --branches

--online 은 로그를 한 줄씩 보여주는 명령어이다. --branches 를 사용하면 각 브랜치의 커밋을 함께 보로 수 있다. 어떤 브랜치에서 만든 커밋인지 구별할 수 있는 것!

git log --online --branches --graph

브랜치와 커밋의 관계를 좀 더 보기 쉽게 그래프 형태로 표시할 때 사용한다.

git log 브랜치명..브랜치명2

브랜치 사이의 차이점을 알 수 있다. 왼쪽 브랜치를 기준으로 오른쪽 브랜치와 비교한다.

git merge 브랜치명

다른 브랜치에서 작업을 하고 브랜치를 병합할 수 있다! 이 작업을 실행한 브랜치에서 작성한 브랜치명이 합쳐진다. git log --online --branches --graph로 브랜치와 커밋들이 어떻게 병합되었는지 확인할 수 있다.

다른 파일을 수정하거나, 같은 파일 내에서 다른 위치를 수정할 때는 큰 문제가 없다! 하지만 같은 문서의 같은 위치를 수정했을 때는 충돌이 발생한다. 이 충돌 부분은 사용자가 직접 충돌을 해결해야한다.

git branch -d 브랜치명

병합이 끝난 후, 더 이상 사용하지 않는 브랜치는 깃에서 삭제할 수 있다.

git reset 커밋 해시

현재 브랜치가 가리키는 커밋을 여러 브랜치 사이로 넘나들며 제어할 수 있다. 이 부분이 조금 어려운 것 같음 git checkout 은 HEAD를 제어해 브랜치를 이동할 수 있고, git reset 을 사용하면 HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있다.

git stash

브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 다른 파일을 커밋해야할 경우 사용한다. 아직 커밋하지 않고 작업중인 파일을 잠시 감춰둘 수 있다.

git stash pop

stash 목록에서 가장 최근 항목을 되돌린다.

4장 깃허브로 백업하기

원격 저장소에 연결해서 버전 관리하는 파일들을 백업한다.

원격 저장소에 지역 저장소를 백업 + 협업 프로젝트에 사용! 또, 개발 이력을 남길 수 있다. 나도 나름대로 아는 부분이니까 간단하게 정리!

git remote -v

원격 저장소에 제대로 연결 되어있는지 확인할 수 있다

git push -u origin master

원격 저장소에 파일 올릴때 git push 를 사용하는데, 가장 처음 푸시할때는 -u origin master을 붙여 사용하는 것이 좋다. 해당 파일은 원격 저장소에서 바로바로 볼 수 있다.

git pull origin master

원격 저장소에서 파일을 내려받을 때 사용할 수 있다.

ssh-keygen

SSH 원격 접속이란, 보안이 강화된 안전한 방법으로 정보를 교환하는 방식이다. SSH에서는 프라이빗 키와 퍼블릭키를 한 쌍으로 묶어 컴퓨터를 인증한다. ssh-keygen을 입력하면 화면에 SSH 키가 저장되는 디렉토리 경로가 표시되며, 파일 이름을 입력하라고 한다. Enter을 누르면 SSH를 통해 다른 컴퓨터에 접속할 수 있는 비밀번호가 생성된다. id_rsa 파일이 프라이빗키, id_rsa.pub 파일이 퍼블릭키이다.

이 키를 깃허브에 전송해 저장소에 접속할 수 있다.

5장 깃허브로 협업하기

git clone

원격 저장소를 기존에 연결된 지역저장소 외 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용을 지역 저장소로 가져와야한다. cloning을 통해 지역 저장소로 가지고 온다. 이렇게 원격 저장소를 복제하면 자동으로 지역 저장소와 원격 저장소가 연결된다. git remote -v를 통해 확인할 수 있다. A 컴퓨터에서 push한 파일을 B 컴퓨터에서 pull 받아서 작업할 수 있다.

git fetch

원격 브랜치 정보를 가져올 때 사용한다. git pull이 원격 저장소의 커밋을 가져와 지역 저장소와 합친다면 fetch는 원격 브랜치에 어떤 변화가 있는지 그 정보를 가지고 온다.

0개의 댓글