1. 나의 commit을 다른 git에 병합하는 것은 불가능 한 것 같다

git commit을 실행하고 해당 커밋을 다른 프로젝트의 브랜치에 병합 하려고 하였으나 병합이 되지 않았다.

디렉터리 구조와 파일 이름까지 동일하게 작업을 했지만 깃허브에서는 비교할 커밋이 존재하지 않는 완전히 다른 커밋이라고 출력하며 병합을 시켜주지 않았다.

이유는 git 파일 자체가 다르기 때문에 발생한 것이였다.

A 디렉터리에 깃으로 형상관리를 하고 있고, B디렉터리에서도 같은 내용으로 작업을 한다고 해도,

B디렉터리가 A디렉터리의 깃을 복사하여 작업하는게 아니면 전혀 다른 git 파일이기 때문에 똑같은 디렉터리 구조와 파일이라고 해도 전혀 관련이 없는 git 파일이 되는 것이다.

나무에 비유하면 A나무에서 자라난 가지와 똑같이 생긴 B 나무의 가지를 A 나무에게 붙여줄 수 없다.

모양은 똑같을 지언정 뿌리가 다른 가지이기 때문이다

당연한 소리 같겠지만 팀단위로 깃을 사용할 경우, 최조로 작성된 git 프로젝트를 git clone하고 복사한 파일에서 작업을 시작해야 한다.

 

2. pull request가 승인되어 병합된 브랜치에는 다시 수정된 commit을 push 할 수 없는 것 같다.

작업이 완료되어 작업 결과를 커밋하고 pull request 요청을 하고난 뒤, 관리자께서 병합을 진행해주셨다.

나의 작업 브랜치를 병합한 main 브랜치를 clone 명령어로 받아서 페이지가 정상적으로 동작하는지 테스트 하였으나 CSS쪽에 문제가 있었다.

오류 부분을 수정한 후 다시 병한된 내 작업 브랜치에 push 명령어로 작업 내역을 올리려고 하였으나 에러가 발생하면서 거절당했다. 

non-fast-forward 에러가 발생했는데 구글링을 해보니 '다른 사용자가 동일한 분기에 푸시한 경우 내가 다시 푸시할 수

없다'는 내용이었다. 

병합이 된 브랜치는 이미 역할이 끝났기 때문에 같은 분기의 내용을 다시 올릴 수 없다는 내용같아 보였다.

해결 방안으로는 fetch 명령어와 pull 명령어를 사용하여 다시 시도하라는 글이 있었지만,

fetch와 pull 명령어를 사용하여 git의 분기를 과거가 아닌 현재로 바꾸는 결과이기 때문에  내가 원하는 결과가 아니라고  생각되었다.

가장 일반적인 방법은 새 브랜치를 생성하고 브랜치를 새로 생성한 이유를 잘 작성한 뒤 새로운 commit 내역을 다시 깃허브에 push 하면 된다고 한다.

 

'Git' 카테고리의 다른 글

Git 공부중  (0) 2024.05.02

+ Recent posts