Git 정리

Git 정리

remote Repository (원격 저장소)

원격 저장소란 내 로컬 PC가 아닌 네트워크상의 다른 위치에 존재하는 Git 저장소를 말한다.

자신의 컴퓨터에 있는 저장소를 “로컬 저장소”, 서버 등 네트워크에 있는 저장소를 “원격 저장소” 라고 한다.

원격 저장소에 데이터를 쓰는 것을 Push라고 하며, 가져오는 것을 Pull이라고 한다.

커밋(commit) : 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업

푸시 (push) : 파일을 추가하거나 변경내용을 원격 저장소에 업로드하는 작업

풀 (pull) : 원격 브랜치의 변경 사항을 캡처하는 작업

대표적인 원격 저장소 서비스로는 Github, GitLab 등이 있다.

git remote

git remote 명령어는 현재 사용중인 Git 프로젝트에 연결된 원격 저장소를 확인할 수 있다.

원격 저장소를 clone한 경우 원격 저장소의 별칭은 자동으로 origin이 된다.

-v 옵션을 사용하면 저장소의 URL까지 볼 수 있다.

1
2
# 원격 저장소에 연결하는 명령어
$ git remote add [별칭] [원격 저장소 URL]
1
2
# 원격 저장소로 파일들과 커밋 내역을 추가하는 방법
$ git push [원격 저장소 별칭] [브랜치 이름]
1
2
3
4
5
# 원격 저장소에서 가져온 소스를 현재 지역 브랜치에 merge 함
$ git pull [remote] [refspec]

# default origin 원격 저장소에서 현재 브랜치로 merge 함
$ git pull

rebase

1
2
3
4
두개의 브랜치가 존재하는 상활일 때, 하나의 브랜치에서 다른 브랜치로 합치게 되는 경우 Git에서는 일반적으로 두 가지 방법을 사용할 수 있다.

1. Merge
2. Rebase

Merge 에 대한 설명은 https://velog.io/@godori/Git-Rebase

rebase는 브랜치의 공통 조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것이다

다음 예제는 master 브랜치의 마지막 커밋인 M2 이후에 New 의 변경 사항인 N1, N2 가 일어난 것처럼 하기 위해 rebase를 수행한 것이다.

New 브랜치의 base를 A가 아니라 M2로 재설정(rebase) 하는 것이다.

1
2
3
# Rebase의 기본 전략
1. Rebase 하려는 브랜치 커밋들의 변경사항을 Patch라는 것으로 만든 다음에 어딘가에 저장
2. master 브랜치에 하나씩 적용하여 새로운 커밋을 만듬

git_rebase

1
2
3
$ git checkout new	# new 브랜치로 checkout
$ git rebase master	# master 브랜치로 rebase
$ git merge new		# new 브랜치를 master로 fast-forward merge

@ Rebase을 선택하는 관점

Rebase의 경우는 브랜치를 병합할 때 이런 Merge commit을 남기지 않으므로, 마치 다른 브랜치는 없었던 것처럼 프로젝트의 작업 내용이 하나의 흐름으로 유지된다.

reset

reset을 이용하여 Squash (합치기)

reset_squash

예제 [설명] >

첫 번째 커밋은 파일 하나를 추가, 두 번째 커밋은 기존 파일을 수정, 새로운 파일 추가 세 번째 커밋은 첫 번째 파일을 다시 수정 -> 두 번째 커밋은 아직 작업 중인 커밋으로 이 커밋을 세 번째 커밋과 합치고 싶은 상황

1
2
3
4
# HEAD 포인터를 이전 커밋으로 되돌림
$ git reset --soft HEAD~2 

$ git commit

자세한 설명

stash

PR


출처

https://dololak.tistory.com/346

https://mobicon.tistory.com/114

https://tagilog.tistory.com/377

https://velog.io/@godori/Git-Rebase # Merge vs Rebase 설명 좋음

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0