[git] git fork와 git clone

여리·2023년 3월 31일
0

git에 대해서 나름대로 열심히 공부하고 있다고 생각했는데
다른 미션을 하면서 무지성으로 git을 clone했다가 'permition denied'라는 메시지가 떴다.

이유인 즉슨 다른 사람의 github repository를 clone해서 작업을 하고 push를 하려했던 것이었다.. 이 얼마나 어리석은 생각인가...

repo의 주인은 당연히 아무한테나 pr을 하게해주지 않을텐데 말이다...

그래서 이런경우에는git fork를 사용해야 하는것이다. git fork와 clone을 비교해보면 다음과 같다.

git fork
다른 사람의 Github repository에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 respository를 내 Github repository로 그대로 복제하는 기능이다
git fork의 명령어는 다섯가지 일반적으로 다섯가지 명령어를 알면된다.

① git clone {포크한 주소} (포크한 주소의 git을 clone한다.)
② git remote (포크한 주소의 git의 연결을 확인할 수 있다.)
③ git add . (git의 작업물을 전체를 remote로 staging 한다.)
④ git commit ( staging한 작업물을 commite한다.)
⑤ git push (commit한 작업물을 remote repo로 보낸다)

fork한 저장소는 원본(다른 사람의 github repository)와 연결되어 있다. 여기서 연결 되어 있다는 의미는 original repository에 어떤 변화가 생기면(새로운 commit) 이는 그대로 forked된 repository로 반영할 수 있다. 이 때 fetch나 rebase의 과정이 필요하다.

만약 fork한 repo의 원격 저장소와 연결을 해제하고자 한다면 명령어가 필요하다.

🖇️ 원격 remote와 연결된 내용 확인

$git remote -v 

🔓원격 remote와 연결 해제

$git remote remove

✅ git fork는 결국 다른사람의 github repo를 나의 github(remote git)에 가져오는 역할을 한다. 그리고 나서 clone을 하는거지...
그리고 나서 remote를 해제를 해도되지만 해제를 하지 않고 작업을 하고 push를 하면 repo의 연결성 때문에 나의 작업물을 원격저장소의 주인에게 pr을 할 수도 있다.

git clone
clone은 특정 repository를 내 local machine에 복사하여 새로운 저장소를 만든다. clone한 원본 repository를 remote 저장소 origin으로 가지고 있다. 권한이 없는 경우 해당 저장소로 push 하지 못한다.
또한 기존의 제일 처음 original repository와 연결되지 못한다. 즉 저장소의 commit, 등의 로그를 보지 못함
git clone의 명령어는 일반적으로 4가지 명령어를 주로 쓴다.

① git clone {복사할 주소} (나의 local에 git을 복제한다.)
② git add . (git의 작업물을 전체를 remote로 staging 한다.)
③ git commit (staging한 작업물을 commite한다.)
④ git push (commit한 작업물을 remote repo로 보낸다)

다른 사람의 원격 repo에서 내가 remote repo에 권한을 부여 받은게 없다면 git push가 되지 않을 것이기때문에 이럴때는 fork를 이용하여 작업하면 된다.

이번을 계기로 git fork에 대해서 보다 가까이 이해할 수 있게된 것 같다..
혹시라도 이 내용이 잘못된 내용이 있거나 고쳐야하는 내용이 있다면 꼭 알려주세요....

git work flow를 통해서 협업할때 좋은 자료

profile
beckend developer

0개의 댓글