git merge <branch_name>
• 현재 위치한 버전에 다른 버전을 병합하는 작업
• Branch 를 병합하거나
• Push Pull 할때도 일어난다.
• merge할때 commit 메세지가 비어있으면 자동으로들어간다.
⭐ merge를 할때 주의해야될 것은 head의 위치!
↪️ branch에서 작업을 하다가 작업 결과가 잘나와서 merge를 하고 branch를 종료하는 경우에 main으로 많이 합친다.
Merge Commit
↪️ 별도로 작업을 하고는 있지만 메인에서 계속 갱신되는 부분에 대해서 계속 공유를 받아야되는 경우, 개발중에 소스 싱크를 맞춰야할 때 주로한다.
↪️ c2 버전에서 branch를 냈는데 main은 갱신이 없다.
그런데 dev만 갱신을 한 상태 main에서 dev를 merge 하고 싶지만 합쳐도 이 버전 그대로 이다.Merge Commit
Dev Branch 에서 변경 사항이 없는 Main Branch 를 Merge
↪️ merge를 해도 버전 차이가 없기 때문에 아무일도 일어나지 않는다.Merge Commit
• 두 Branch 에서 같은 버전의 같은 부분을 수정하는 경우,
Auto Merge 가 불가능한 상황에서 발생
• 개발자가 직접 해결해야 한다
• Conflict Message 와 Git Status 로 파악할 수 있다
• Merge 과정에서 충돌 발생시 가운데 =======를 기준으로 충돌 부분을 보여주는데 이를 기준으로 코드 수정
1. 파일 수정
print("Hello, cat!")
2. Git Add
git add <conflict_file_name>
3. Git Commit
git commit -m <merge_message>
• Git Commit 까지 완료되면 Conflict 상태가 해지되어 Merge 할 수 있다.
• Git Commit 이 실패하는 경우 ‘git commit -i’ 로 강제 commit 할 수 있다
• Merge 도 완료된다
Push 동작 중 Conflict 상황이 발생하면,
• Push 가 실패함
• Pull 을 해서 Conflict 에러를 확인 할 수있음
Pull 동작 중 Conflict 상황잉 발생하면,
• Fetch 만 되고 Merge 가 실패한 Conflict 상태가 됨
• Conflict 를 해결하면 Merge Commit 이 완료됨
❗그래서, 바로 Push 하지말고 항상 Pull 먼저 하는 습관이 좋다!!
- GitHub 에 Remote 저장소를 만들기
- Local 저장소로 클론해서 복제
- Dev Branch 를 만들고
git branch dev
- Main Branch 에 파일 추가
echo .> main.py
git add main.py
git commit -m "add main.py"
- 이번에는 Dev Branch 에 파일 추가
echo .> dev.py
git add dev.py
git commit -m "add dev.py"
- 각각 Branch 에 파일이 존재
- 이제 Main Branch 에서 Dev Branch 를 Merge
git merge dev
git fetch
git merge origin/deve2
📌 gihub 프로젝트 삭제 방법
setting - general 맨밑 Delete this repository 누르기
📌 git checkout -b dev2 - 만들고 바로 브랜치로 이동도 해준다.
dev -당시 만들 때 내 시점으로 생긴다.
❓만약에 내가 만든 branch가 아닌데 remote에는 branch가 있는 경우
dev2를 패치만 하고 반영이 안된 상태였다가 내가 로컬에서 checkout를 하자
↪️ 로컬에 없던 dev2를 만들어 같다라는 걸 해주고 checkout을
해주겠다는 말
↪️remote에 있는 dev2를 pull하는 순간 나는 지금 메인 브랜치에 있어서 패치만 한 것이다.(git fetch)
= 로컬에 저장만 한 상태 그래서 내가 브랜치를 봤을 때 저장만 되어있지 정보를 갱신하지는 않는 상태이다.
그런데 checkout 하겠다는 순간 패치는 해서 갈 수 있는 준비는 다 되어있는 상태이다.
그래서 로컬에도 dev2를 만들고 checkout을 자동으로 해준 것이다.