일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 페이징
- resttemplate
- 자료구조와 함께 배우는 알고리즘 입문
- 이터레이터
- 친절한SQL튜닝
- 자료구조와함께배우는알고리즘입문
- 알파회계
- 선형대수
- 티스토리 쿠키 삭제
- GIT
- 코드로배우는스프링웹프로젝트
- ㅒ
- 구멍가게코딩단
- 데비안
- /etc/network/interfaces
- d
- 목록처리
- 코드로배우는스프링부트웹프로젝트
- 처음 만나는 AI수학 with Python
- 처음 만나는 AI 수학 with Python
- 자바편
- 네트워크 설정
- 스프링 시큐리티
- 서버설정
- baeldung
- network configuration
- iterator
- 리눅스
- 스프링부트핵심가이드
- Kernighan의 C언어 프로그래밍
- Today
- Total
bright jazz music
blog15 : Git 자주 쓰는 명령어 예제 2 본문
11. git merge --no-ff --log
: fast forward를 사용하지 않고 merge log를 포함해서 현재 사용중인 main 브랜치에 mybranch를 머지하기.
git merge --no-ff --log mybranch 입력하면
아래와 같이 vi로 들어간다. 커밋 메시지를 확인하고 q 또는 wq를 입력하여 나온다.
이를 소스트리와 같은 툴에서 확인하면 차이를 확인할 수 있다. 이전 포스팅의 9번 항목에서 merge했을 때에는 브랜치의 분기가 보이지 않았다. 그러나 이번의 경우는 브랜치가 분기 됐다가 다시 합쳐지는 모습을 확인할 수 있다.
그런 다음 git push해서 원격 리포지토리로 커밋 사항을 push한다.
12. 충돌이 발생 경우 1
1. testbranch라는 브랜치를 만들었다.
2. 소스 코드에 변경사항을 발생시켰다.(PostController.java)
3. git status
4. git add . (변경사항 스테이지에 전부 올림.)
5. 작업사항 커밋.
(만약 어떤 (여기서는 testbranch)에서 변경사항을 만들고 커밋하지 않은 채 다른 브랜치(여기서는 main)로 checkout한려 한다면 아래와 같은 에러가 발생한다.
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout:
src/main/java/com/endofma/blog/controller/PostController.java
Please commit your changes or stash them before you switch branches.
Aborting
이럴 때는 커밋을 하거나 git stash를 사용하여 임시저장할 수 있다. 난 권고를 지키지 않았을 때의 결과를 보고 싶어 git checkout -f main을 사용하여 강제로 main 브랜치로 이동했다. 그러자 나의 변경사항이 삭제되었다.
그런데 누군가 메인브랜치에서 변경사항을 만들고 push를 해버렸다.
이렇게 되면 문제가 생긴다. 내가 분기하여 작업한 시점이 최신이 아니게 되기 때문이다.
내가 분기하고 나서 누군가 메인에 작업을 했다면, 그 이후에 머지 했을 시에 문제가 발생할 수 있다.
<<<<<<< HEAD
//메인의 최신상태
System.out.println("누군가 main에 작업하고 push 1");
=======
//내가 작업하던 내용
System.out.println("test for test branch1");
>>>>>>> testbranch //내 작업의 위치
둘 중에 사용할 것을 선택하면 된다.
머지 되었다.
그런데 이 경우 커밋이 깔끔하지 않다.
충돌 발생 경우 2 : git rebase 사용하기
다른 방법을 실습하기 위해 커밋을 되돌린다.
이럴 때 testbranch에서 git rebase main을 사용하면 메인의 최신 커밋을 내 분기 밑으로 오도록 만들어 준다.
git add . 또는 해당 파일을 선택해서 스테이지에 올린 뒤,
다시 git rebase --continue
명령어 입력 직후에는 vim으로 커밋창이 뜬다. :wq 해서 나온다.
이후에 main 브랜치로 checkout해서 머지한다.
이렇게 하면 처음에 사용한 방법과 다르게 분기가 하나만 생기는 깔끔한 커밋처리를 볼 수 있다.
'Projects > blog' 카테고리의 다른 글
blog17 : 글 작성화면 만들기 1 (기초) (0) | 2023.02.01 |
---|---|
blog16. Vue.js 설치 (0) | 2023.01.30 |
blog15 : Git 자주 쓰는 명령어 예제 1 (0) | 2023.01.29 |
blog14 : Github SSH 설정, 프로젝트 올리기 (0) | 2023.01.29 |
blog13: Spring REST Docs3 - 커스터마이징 (0) | 2023.01.29 |