일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- ubuntu
- docker명령어
- 2 > /dev/null
- application.yml
- 메세지수정
- 추후정리
- 메소드명
- subquery
- 테스트메소드
- querydsl
- 적용우선순위
- appspec
- Query
- AuthenticationEntryPoint
- 서브쿼리
- 네이티브쿼리
- EC2
- WeNews
- 커밋메세지수정
- ㅔㄴ션
- appspec.yml
- 참조키
- 컨테이너실행
- 포트
- MySQL
- 외부키
- foreignkey
- 검색
- 테스트
- 예약
- Today
- Total
제뉴어리의 모든것
[GIT] 깃 공부 - 2022.11.07 본문
전체 항목
- 오늘 배운 내용 간략 정리
- 오늘 배운 상황별 명령어
오늘 배운 내용 간략 정리
Branch (브랜치)
recursive strategy 의 머지 전략
현재 브랜치와 머지 하려는 브랜치가 공통의 조상 커밋에서 각자 따로 커밋을 가지고 있기 때문에,
발생하는 머지 전략이다.
임의의 A, B 두개의 브랜치(각각의 브랜치의 최신 커밋) 는 공통의 조상 커밋과 3-way merge 를 진행한다.
그래서 현재 머지를 진행한 브랜치는 두개의 브랜치 내용을 합친 새로운 commit을 앞으로 뻗어나간다.
그렇게 생겨난 새로운 commit은 다수의 조상 커밋을 가지게 되는것이다.
이 경우에 공통의 커밋에서 특정부분이 A브랜치 에서만 수정됬거나, B브랜치 에서만 수정됬을 경우에는 문제가 되지 않지만, 두 브랜치 둘다에서 변경점이 발견 되는 경우에 Conflict(충돌)가 발생된다.
이 경우에는 수동으로 개발자가 충돌 내용을 정정하여 add, commit을 하면 된다.
master 이외의 특정 브랜치에서 파생된 브랜치를 master에 병합시킬 경우
아래와 같은 상황에서
master 브랜치가 iss91v2 브랜치와 dubmidea 브랜치를 merge 하면 (순서 상관 없음)
iss91 브랜치는 그대로 남게되며, iss91v2 브랜치가 iss91 브랜치에서 파생된 브랜치라고 하여도
iss91v2의 내용이 master에만 잘 merge가 되면 iss91은 쓸모가 없어진 경우 삭제하여도 무방하다.
git checkout [브랜치명] 명령어를 사용하여 브랜치 이동하려할때 안되는 이유
말 그대로 checkout 명령어를 이용하여 다른 브랜치로 이동하려고 할때 이동이 안되는 경우가 있다.
이럴때 안되는 이유는,
현재 브랜치에서, 아직 staging 과 commit이 안된 변경사항중에 이동하려는 브랜치의 변경 사항과 내용이 겹쳐서 에러가 발생하는 것이다.
이럴 경우,
Stash나 Commit amend 방법, 그리고 그냥 현재 브랜치의 내용을 commit을 한뒤 옮기면 된다.
git branch -d [브랜치명] 명령어로 브랜치 삭제하려 할때, error : The branch '브랜치명' is not fully merged 경우
지우려고 한 브랜치가 아직 merge 되지 않았으므로 삭제 할 경우 아무곳에도 이력을 남기지 못하고 삭제 되므로 한번 더 확인하는 것이다.
그냥 삭제하고 싶다면
git branch -D testing
오늘 배운 상황별 명령어
- git log --oneline --decorate --graph --all
깃 로그 내용을 보기 좋게 그래프 형태로 출력,
커밋 내용도 각 분기별로 한줄씩 표현하여 보기에 좋음 - git branch --merged
현재 브랜치 기준으로 머지가 된 브랜치를 보여줌.
출력시
*가 있는 브랜치가 현재 브랜치이고, *가 없는 브랜치들은 이미 현재 브랜치에 병합(merge)이 된 상태인 브랜치이다. - git branch --no-merged
git branch --merged의 반대 개념 - (staging 된 데이터에 대하여) git reset OR git reset [파일경로)
staging 된 데이터를 다시 비 staging 상태로 만들어 준다. - git commit --amend
최신 커밋에 현재 내용을 덮어씌움.
만약 현재에 staging 된 내용이 있다면 staging 된 내용이 추가 되고, 최신 커밋의 메모까지도 수정 가능 => 최신 커밋은 현재의 커밋 내용으로 덮어씌여 진다.
만약 추가로 staging 된 내용이 없다면 commit 메모만 수정하는 결과이다. - git rm -r --cached 파일/디렉토리명
git 트래킹 대상에서 제외시킴
참조
'Git' 카테고리의 다른 글
지난 커밋 메세지 수정하기 (0) | 2024.02.20 |
---|---|
.gitignore 파일 주의사항 (0) | 2022.10.22 |
Git 원격 저장소에 올라간 파일을 삭제하고 앞으로 올리지 않는 법 (0) | 2022.10.18 |
[Gir] git remote url 확인 명령어 (0) | 2021.03.23 |