1. 리모트의 같은 브랜치에서 작업할때 A,B 사람이 각자 로컬 브랜치에 작업하고 A가 먼저 푸쉬했는데 이제 B도 작업 끝나고 리모트 브랜치에 푸쉬하려는데 오류가 난다.(B사람 코드로 덮어버리면 A가 했던 코드가 다 날라갈테니)
그럼 이제 리모트에 있는걸 풀을 해와야하는데 동작하는 원리가 A가 로컬에 작업했던 코드랑 B가 먼저 푸쉬후 갱신된 리모트에 있는 코드랑 머지 작업을 하는거다.
그러니깐 풀은 머지작업도 하는거다.
당연 conflict에러가 뜨는데 해결하고 이제 다시 B가 푸쉬하면 된다.
2. git fetch 는 리모트 레포지토리의 있는 브랜치 내용을 바로 머지하는게 아닌 일단 가져와서 살펴본후 머지하고 싶을때 사용한다.
예를들어 A가 리모트 프리미엄 브랜치 파일에 어떤 함수를 추가하고 푸쉬했는데
B가 프리미엄 브랜치에서 git fetch를 하면 ↓이런식으로 나온다.
이제 이상이 있나 확인해보기위해 diff를 이용해서 커밋뿐 아니고 브랜치간의 차이도 확인할수있으니
diff premium origin/premium 으로 확인후 코드에 이상 있으면 A에게 연락후 고치고 다시 푸쉬하라 하거나 B가 직접 리모트 프리미엄 머지후 코드 고치고 푸쉬한다.
3. 리모트 레포지토리의 브랜치 검토할 필요 없이 바로 합치고 싶으면 pull 사용하고
리모트 레포지토리의 브랜치를 검토해야할땐 fetch를 사용한다
4. git blame 파일이름 하면 그 파일에 대한 지금까지 커밋한 정보가 나온다
그리고 해당 커밋은 누가 했는지 알아볼땐 git show 커밋아이디 입력해서 누가 한건지 알수있다.
5. git revert 는 특정 커밋에서 이루어진 작업을 되돌리는 커밋을 새로 생성
회사원이 어떤 자바파일을 추가하고 리모트에 푸쉬까지 했는데 회사측에서 방금 올린 자바파일을 취소해야한다해서 그러면 자바파일 삭제후 다시 커밋하면 되지만 이걸 한번에 해주는 작업이 revert다
(이때 바로 전 커밋상태로 되돌아가야해서 reset을 생각 할 수도 있으나 그러면 안된다.
밑에 사진보면 로컬 master브랜치에서 세번째 커밋으로 리셋하고 푸쉬하려하면 리모트 브랜치가 더 최신상태라 pull해야한다면서 오류가 난다)
근데 revert를 하면 세번째 커밋 상태의 파일이랑 똑같에 만들면서 새로운 커밋하고 리모트보다
더 최신 상태에 있게되니 이제 푸쉬를 해도 아무 이상 없이 리모트에도 새로운 커밋이 생긴다.
'Git' 카테고리의 다른 글
Git History 에서 특정 파일 기록 삭제 (0) | 2023.11.18 |
---|---|
직접 gitignore 생성하기 (0) | 2023.11.14 |
브랜치 정리 (0) | 2023.10.10 |
커밋 정리 (0) | 2023.10.08 |