일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lazy propagation
- 플로이드 와샬
- back propagation
- object detection
- DP
- 조합론
- 알고리즘
- 세그먼트 트리
- 다익스트라
- 문자열
- dfs
- 이분 탐색
- 회고록
- Overfitting
- 우선 순위 큐
- c++
- 가끔은_말로
- 크루스칼
- 백트래킹
- 분할 정복
- dropout
- BFS
- NEXT
- 가끔은 말로
- 2023
- 너비 우선 탐색
- 자바스크립트
- tensorflow
- 미래는_현재와_과거로
- pytorch
- Today
- Total
Doby's Lab
[깃허브/Github #1] 깃허브, 강제 커밋은 어떻게 해결할까? 본문
깃허브에 새로운 커밋을 하다보면
'git push origin master'라는 명령어에 대해 궁금증이 생긴다.
[git push origin +master를 통해 강제 커밋을 해야하는 경우]
git push origin +master는 꽤 위험하다.
강제 커밋을 하면 기존의 데이터가 날아가는 경우가 발생할 수도 있기 때문이다.
그렇다면 강제 커밋을 하지 않고 커밋을 하는 방법은??
이 궁금증을 해결하기 위해 test 리포지토리와 test commit을 해두었다.
dldld
여기서 커밋 에러를 발생 시키기 위해 다음과 같이 해주었다.
커밋을 하기 위해 파일 하나를 더 만들고, 깃허브에서 커밋해두었던 파일을 수정하고
커밋을 하면 다음과 같이 에러가 발생한다.
그렇다면 에러의 발생 원인이 무엇일까?
바로 코드 간의 충돌이다.
생각을 해보면 깃허브의 텍스트 파일 수정
Hello, World
Bye, World Bye Bye
원래 파일에서의 텍스트 파일
Hello, World
이 둘은 같은 파일이지만 내용이 달라서 충돌이 발생하는 것이다.
해결하는 법은 pull을 이용한다.
깃허브에 올라가있는 파일을 받아와서
pc에 있는 파일과 merge(병합)되어 덮어씌어진 것처럼 된다.
이때 vi편집기가 켜져서 당황했지만 :wq를 입력하여 종료해주었다.
master 브랜치를 merge(병합)하라는 메시지인 거 같다.
pull을 이용하여 깃허브에서 수정한 내용을 잘 받아온 것을 확인할 수 있다.
지금까지 내용을 소스트리를 통해 정리해보겠다.
우선 'modified text commit'과 'Update commit_test_text.txt' 커밋은 무시를 해야한다.
오류를 내기 위해 테스트를 하다가 실패한 커밋이다.
'second test commit'도 무시해도 좋다.
(첫 포스팅이라 그런지 실수가 좀 잦다..)
그럼 봐야 할 것은
1. first test commit
2. Update commit_test_text.txt
3. master, origin/master Merge branch....
이다.
1번에서 테스트를 하기위해 커밋을 해주었고,
2번을 통해 깃허브에서 파일을 수정해주었다.
차후에 커밋을 하니 강제 커밋이 필요하다는 메시지가 떴고,
pull이라는 해결책을 찾아 pull을 해준 다음 기존의 pc 파일과 merge되었다.
merge된 내용이 3번이다.
이것으로 강제 커밋은 git push origin +master을 통해 해결할 수 있지만
데이터 손실이라는 큰 위험 부담을 안고있기 때문에 다음과 같이 해결 할 수 있다.
그렇지만 강제 커밋이 필요하다는 메시지는 다른 이유에서도 발생했던 것을 기억할 수 있었다.
다음 내용은 차후에 발생하게 되면 포스팅을 하도록 하겠다.
(큰 이유가 아니라면 수정이나 댓글을 통해 이야기 하겠다.)