독학/[책] git, github

[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY4

최연재 2023. 2. 12. 05:17

2월 12일에는 챕터 5인 <실무 사례와 함께 Git 다루기>를 학습했다. 
 

교재 실습하기

📌 실습을 위한 사전 준비

❗gitHub에서 새로운 원격저장소 만들기

MIT 라이센스 : 소스 재가공&amp;재배포 가능

❗소스트리 클론하기

계정 전환
clone 클릭

 

📌 amend : 마지막 커밋 수정하기

❗파일 생성 후 커밋

푸시는 하지 않는다

❗기존 커밋 수정하기

파일 변경
커밋 옵션을 [마지막 커밋 정정]으로 한다.
스테이지에 올린 변경사항이 기존 커밋에 추가되면서 기존 커밋이 덮어 씌워진다.

❗amend로 마지막 커밋 메시지 수정 후 원격저장소 브랜치에 강제 푸시하기

push로 원격저장소에 푸시하기
코드 수정 없이 커밋 메시지만 수정했다. (커밋 옵션에서 [마지막 커밋 정정] 체크!)
현재 히스토리
강제 푸시 기능 체크
강제 푸시
최종 히스토리

 

📌 cherry-pick

 feat/a 브랜치의 커밋 하나를 feat/b 브랜치에 반영하기

❗feat/a 브랜치 생성 후 커밋 추가

브랜치 생성
첫 번째 커밋

 

두 번째 커밋
세 번째 커밋
현재 히스토리

❗feat/b 브랜치 생성 후 커밋 추가

커밋
현재 히스토리, 이제 두 번째 커밋-탐나는 커밋만을 가져와서 feat/b에 반영할 것이다.

❗체리픽

feat/b 브랜치에 있는 상태에서 복제하길 원하는 커밋을 우클릭해 체리픽 클릭
확인
feat/b 브랜치의 최신 커밋이 '두 번째 커밋- 탐나는 커밋'으로 변할 걸 확인할 수 있다. (커밋 ID가 서로 다름!)

 

📌 reset

feat/b 브랜치의 최신 상태를 직전으로 되돌리기

❗이전에 실습한 변경사항들을 원격저장소 브랜치에 반영하기

push

❗reset ; Mixed 옵션

되돌아갈 커밋 우클릭 후 [이 커밋까지 현재 브랜치를 초기화] 클릭
커밋은 되돌렸지만 변경사항은 '두 번째 커밋 - 탐나는 커밋'을 커밋하기 전 상태로 남겨둔 상태이다.

❗reset ; Soft 옵션 : Mixed 옵션과 비슷하나, 변경사항을 바로 커밋할 수 있다.
❗reset ; Hard 옵션

돌아갈 커밋을 우클릭 후 [이 커밋까지 현재 브랜치를 초기화] 클릭
Hard 옵션은 커밋하지 않은 변경사항이 모두 사라질 수 있다.
현재 히스토리
featb 기능 추가로 되돌아가기

❗강제 푸시 : 히스토리를 수정하는 푸시이므로 강제 푸시한다.

 

📌 revert

❗되돌려야 할 커밋 만들기

README.md 파일 내용 삭제
커밋 &amp; 푸시

❗커밋 되돌리기

되돌려야 할 커밋 우클릭 후 [커밋 되돌리기]
[예] 클릭
'사이트 제목 삭제'를 명시적으로 되돌리는 커밋인 'Revert "사이트 제목 삭제"'가 생성되었다.

 

📌 stash

❗여러 파일의 변경사항 만들기

❗스태시

스태시 클릭
메시지 작성후 저장

 

 
❗스태시를 서랍에서 꺼내기

스태시를 계속 사용하지 않을 것이므로 [적용 후 삭제] 박스 체크
변경사항이 다시 작업공간에 나왔다.

 

 

배운 내용 정리

⭐ amend
- 방금 했던 커밋을 수정할 수 있는 명령어
- 로컬저장소의 변경사항을 강제로 덮어씌우며 푸시하는 명령인 강제푸시를 해야 한다. 
 
⭐ cherry-pick
- 다른 브랜치의 커밋 하나만을 내 브랜치에 반영할 수 있다.
- 체리픽으로 복제한 커밋과 복제된 커밋은 서로 다른 커밋이다.
 
⭐ reset
- 과거 커밋으로 브랜치를 되돌린다. Hard, Mixed, Soft 옵션이 있다.
- Hard

  • 커밋하지 않은 변경사항이 없어진다.

- Mixed

  • 커밋을 없던 것으로 되돌리고, 변경사항은 되돌리기 전의 현재 커밋을 커밋하기 전 상태로 남긴다.
  • 변경사항을 스테이지 아래에 둔다.

- Soft

  • 커밋을 없던 것으로 되돌리고, 변경사항은 되돌리기 전의 현재 커밋을 커밋하기 전 상태로 남긴다.
  • 변경사항이 스테이지 위에 있다.

- 히스토리를 수정하는 푸시이기 때문에 강제 푸시해야 한다.
 
⭐ revert
- 커밋의 변경사항을 되돌리는 커밋을 만든다.
 
⭐ stash
- 변경사항을 커밋을 만들지 않고 저장한다.