GIT

GIT 기본, 트러블슈팅

kjw81024 2026. 1. 7. 17:50

1. Git 입문

fork 와 clone 의 차이점 

  fork clone
의미 다른사람의 GitHub 코드 저장소(업스트림)에서 나의 GitHub 코드 저장소(다운스트림)로 가져옴 (복제)
로컬로 가져오진 않음
로컬로 가져옴
GitHub 코드 저장소(다운스트림) 로 가져오는 건 아님
순서와 권한 변경사항을 push 할 권한이 x
fork 된 프로젝트를 다시 clone 해서 가능 

로컬에 새 폴더 생성,
하위 디렉터리(.git) 초기화 
push 로 기여가능
pull 로 내려받을 수 있음 

Download ZIP 은 비추천 

- 버전관리가 어려움 : commit history , branch constructure 확인 불가능 + 협업 힘듦 + 업데이트(pull) 어려움

- 작업 속도 느려짐, 하위모듈을 포함하지 않을 수 있음 

 ZIP은 해당 파일 안에 .exe 실행파일이 존재 할 때 바로 실행하고 설치해서 사용할 때 씀 

 

 

1. clone : url 복사해서 clone 받을 폴더의 상위 터미널에서

git clone <url>

2. branch

// branch 수정 또는 삭제 
//0. 현재 로컬에 있는 branch 들 확인
git branch 

//1. main 또는 master branch로 이동
git checkout main //or master

// 2. 수정
git branch -m <old-name> <new-name>

// 2. 삭제
git branch -d <branch-name>

// 3. 다시 branch로 돌아가기 
git checkout <branch-name>

git branch <branch name> // mk branch 
git checkout <branch name> // mv to branch

이렇게 뒤에 적힌게 (main) -> (jiwonee) 로 되면 branch 가 이동된 상태

 

3. 수정

굳이 vim 을 사용해서 수정할 필요 없고 (nano, ctrl x . .) IntelliJ에서 그냥 수정해도 됨

branch 에서 수정하면 main에 영향이 바로 가지 않기때문

 

4. add, commit, push

git add <file name> //수정한 파일명
git commit -m "<수정 세부사항 메시지>" 

//git push -u origin <branch name> 
//initial push method 

git push origin <branch name>

 

5. pull

사이트로 이동해서 메시지 확인하고 pull request 하기

pull request : 불필요한걸 버릴지 말지 고민, 합쳐지는지, 리뷰 

충돌 발생시 여기서 문제

 

이러면 이제 main 에 업데이트 됨!

7. pull 

다른사람이 업데이트 한 내용을 나의 로컬 branch 에 가져오기

git pull origin main

 

 

 


참고자료

https://yujindevv.tistory.com/38 clone 과 fork 차이점

https://www.freecodecamp.org/korean/news/git-delete-local-or-remote-branch/ 

https://www.freecodecamp.org/korean/news/git-rename-branch-how-to-change-a-local-branch-name/ branch 명령

 


2. Git 과제 트러블슈팅 

 

강의를 보며 그대로 따라했고 조원들과 함께 하다보니 따로 오류가 나거나 문제가 생긴 상황이 없었습니다. 

대신 시간이 비교적 오래걸린 도전과제 문제하나를 다시 정리해봤습니다.


ch 5-3: 프로젝트 관리하기 (4) - 변경 충돌 사항 해결하기

 

같은 main 을 각각 branch 하여 작업하고 있는 A와 B가 있다고 가정했을 때 A가 파일의 내용을 수정 후 add, commit, push, PR, merge 등 일련의 과정을 다 수행하여 main 을 업데이트 한 상황을 가정합니다.

해당 상황에서 B가 A의 변경사항을 pull 하지 않은 상태에서 B의 branch 에서 똑같은 파일을 수정하여 add, commit 합니다. 이후 B가 fetch, merge 명령어를 작성하면 conflict 메시지를 확인할 수 있습니다. 

git add index.html
git commit -m "B: change main font 000000"
git fetch origin
git merge origin/main

CONFLICT (content): Merge conflict in index.html 메시지를 확인했고,

Automatic merge failed; fix conflicts and then commit the result: 충돌을 해결하고 결과를 commit 하라는 메시지가 옵니다.

 

해당메시지 이후 수정했던 파일을 보면 

<<<< head 

======

>>>> origin/main 에서 어느부분에서 conflict 가 발생하는지 알 수 있었고 

상단의 파일이 해결되지 않은 병합 충돌이 있습니다 메시지 오른편에 충돌 해결 텍스트를 좌클릭합니다.

가운데를 기준으로 conflict 가 발생한 branch 의 내용들이 보입니다. origin/main 의 변경내용과 frontend/jiwon-e-e (B의 branch명) 중에서 어떤 수정사항을 기준으로 할것인지 결정할 수 있습니다. 

 

X 와 >> 버튼을 이용해 A B 둘 다, 또는 한쪽, 또는 아무것도 선택하지 않고 적용을 누르면 모든 변경사항 처리 완료 메시지가 가운데 표시됩니다.

 

 

git log를 확인하고 다시한번 add, commit, push 단계를 실행하면 안전하게 충돌을 해결했다는 메시지를 확인할 수 있습니다.

git log
git add <충돌 이후 수정한 파일명>
git commit -m "<commit 메시지 작성>"
git push origin <branch name>

 

 

'GIT' 카테고리의 다른 글

Local -> Git 업로드  (0) 2026.02.03
GIT 강의 정리 1  (0) 2026.01.07