부트캠프 학습할 때 실습하려고 fork해왔던 Repository들이 너무 많아서 한 곳에 모아놓고 볼 수 없나 해서 방법을 알아보니 한 Repository 안에 여러 개의 폴더로 만들 수 있다고 해서 그 방법을 간단히 정리해보려고 한다.

 

먼저 Github에 Repository들을 모아놓을 부모 Repository를 만들기 위해 빈 Repository 를 하나 생성한다.

 

Repository를 생성한 후 git clone을 진행해야하는데 clone을 할 로컬 저장소가 필요하다.

폴더를 하나 생성한 후, 깃 저장소를 생성한 후 clone한다.

gint init

git clone <레포지토리 주소>
git clone https://github.com/bonbon0808/newnew.git

 

 

clone한 리포지토리에는 아무런 기록이 없기 때문에 먼저 커밋 기록을 남겨줘야 한다고 한다.

(그런데 커밋메세지를 남겨도 따로 히스토리에서는 확인되지 않았다.)

git add .
git commit -m 'commit'

 

여기까지 진행한 후에는 이제 리포지토리들을 합치는 일만 남았다.

git subtree add --prefix=<repository 이름> <repository 주소> <branch명>

 

 위와 같은 명령어를 입력하면 되는데 리포지토리 이름, 주소, 브랜치명은 새롭게 생성한 부모 리포지토리가 아니라 '옮길' 리포지토리여야 한다. 

 

명령어를 입력하고 정상적으로 수행되면 로컬저장소에도 폴더가 생성된 걸 확인할 수 있다.

이 작업 후에는 push를 진행하면 정상적으로 리포지토리들이 합쳐져 있는 걸 확인할 수 있다.

 

 

 

 

※ 처음 코딩을 학습할 때 맥 환경에서 진행하다 윈도우 환경으로 넘어와서 깃을 다시 설치했는데 처음 깃 저장소를 생성한 후 커밋하려고 하니 아래와 같은 오류를 만났다.

깃을 처음 설치하면 사용자 이름이랑 메일주소를 설정하지 않아서 만난 오류였다.

 

이 후 이름, 메일주소를 설정 한 후  GitHub CLI를 설치하려 했는데 gh auth login 명령어를 통해 로그인을 시도하려니 아래와 같은 에러를 만났다. 공개키를 등록하는 걸 빼먹어서 그런가 싶어서 ssh-keygen 명령어로 ssh키를 생성해서 공개키를 깃허브에 등록했지만, 계속 아래와 같은 에러가 떴고 에러메세지를 따라 명령어를 입력하다보니 정상적으로 로그인 절차가 진행됐다.

? What accout do you want to log into? > GitHub.com
? What is your preferred protocol for Git Operations? > HTTPS
? Authenticate Git with your GitHub credentials? > Yes
? How would you like to authenticate GitHub CLI? > Login with a web browser

 

 

'Git&Github' 카테고리의 다른 글

GitHub merge & PR  (0) 2023.08.09
GitHub 원격 저장소 브랜치  (0) 2023.08.09
Git과 GitHub 차이점  (0) 2023.08.07

🚨 원격 저장소에서 내 레포지토리로 fork한 경우

-> 이 경우는 내 레포지토리로 연결해서 작업을 해서 commit , push 한 후 원격 저장소로 PR하는 방법

1. git clone { fork한 내 레포지토리 url }

2. git fetch  최신사항반영

 

3. git branch - r  브랜치 확인

 

4. git remote prune origin

main 브랜치만 뜨는 경우

-> (원격 브랜치가 확인되지 않는 경우라고 봐도 무방할듯함)
4-1. git branch -r -


5. git switch { 작업할 브랜치명 }  브랜치 전환

 

6. git pull

 

( 코드 수정 )

 

7. git add . 

 

8. git commit -m "커밋메세지 내용"

 

9. git push 

 

10. push 성공 시 fork한 내 레포지토리에서 PR

 

11. 원격저장소 PR에서 merge

 

🚨 원격 저장소에 직접 연결하는 경우

-> 이렇게 직접 레포지토리에 연결해서 하는 경우에는 PR을 따로 안해도 merge가 됐음. 

이 방법으로 다시 한 번 다른 것도 올려보고 문제가 있는지 정상적으로 잘 되는지 확인해보기.

 

1. git remote add origin { 레포지토리 url }  레포지토리 연결

 

2. git remote -v  연결 확인

 

3. git fetch 최신사항반영

 

4. git branch - r  브랜치 확인

 

5. git switch { 작업할 브랜치명 }  브랜치 전환

 

6. git pull

 

( 코드 수정 )

 

7. git add .

 

8. git commit -m "커밋할 메세지 내용"

 

9. git push

 

 

 

 

'Git&Github' 카테고리의 다른 글

github repository 합치기  (0) 2024.03.13
GitHub 원격 저장소 브랜치  (0) 2023.08.09
Git과 GitHub 차이점  (0) 2023.08.07

깃허브 사용법을 익히기 위해서 프로젝트용으로 제공받은 레포지토리에 push한 후 merge 해 보는 연습을 해보기로 함.

 

1. 먼저 디렉토리를 하나 만들고 git init으로 새로운 Git 저장소를 생성.

 

2. git remote add orign { 연결할 레포지토리 url }로 프로젝트 레포지토리에 연결.

 

3. git fetch로 변동사항 확인 후 push작업을 할 브랜치로 이동.

git checkout -b < new -branch-name> - 새 브랜치 생성과 전환
git branch로 작업 중인 브랜치 확인

4. git pull origin feat/backend_init로 프로젝트 가져오기

 

5. 프로젝트 실행 후에 수정.

 

6. 수정한 내용을 commit.

 

7. 그리고 push를 시도했는데 오류가 남.

 

8. 다시 pull 시도를 했지만 실패됨.

오류 메세지에 대해서 알아보니 두 브랜치 간에 관련 없는 커밋 히스토리를 병합하려고 시도했을 때 발생하는 것이라는데 충돌이 일어난 부분을 어떻게 해결해야 할지 알 수가 없었음.

GPT를 통해 답변받은 오류가 나는 이유

 

일단 강제로 병합을 시도하게 되면 충돌 해결에 올바른 상황은 아닌 것 같아서 먼저 진행한 팀원들한테 물어가면서 진행했지만 여전히 계속 위의 상황에서 벗어나지 못했음.

 

추후에 다른 팀원분이 풀리퀘스트 후 병합까지 성공하여서 알려주신 방법으로 merge까지 성공함.

 

🚨 내 레포지토리에 fork 해 온 경우의 과정

 

1. 디렉토리를 하나 생성한 후 git clone { 내 레포지토리로 fork 해온 url }

그리고 git remote -v를 통해 제대로 레포지토리와 연결되었는지 확인.

중간에 cd remote -v는 실수...

2. git fetch를 통해 원격 저장소에서 최신 변경사항을 가져옴. ( 변경사항은 로컬 브랜치에 자동으로 병합되지는 않는다고 함 )

 

3. git branch 혹은 git branch -r로 브랜치를 확인했음.

-> git branch와 git branch -r의 차이?

더보기

둘의 차이가 궁금해서 찾아보니 아래와 같은 차이가 있다고 함.

 

4. git branch -r 로 브랜치를 조회했을 때 main만 떠서 git remote prune origin를 한 후 다시 브랜치를 조회하니 프로젝트에 있던 브랜치들이 전부 확인됐음.

-> git remote prune origins 명령어는 Remote에 존재하지 않는 브랜치들을 로컬에 반영하여 삭제를 진행해준다고 함.

의문점 :

prune 명령어를 사용하면 원격 저장소 origin과 로컬 저장소 간에 더 이상 존재하지 않는 원격 브랜치들이 제거된다고 설명하는데 main만 확인되던 로컬에서 저 명령어를 실행한 걸로 왜 원격 저장소 브랜치들이 확인됐는지는 아직 이해가 안됨.

prune는 삭제하는 작업이고 위에 git fetch로 동기화를 진행했기 때문에 보이는건가?

 

5. git switch { 작업할 브랜치 } 명령어를 통해 작업할 브랜치로 이동

파일이 제대로 pull 됐는지 확인했고 제대로 가져와진걸 확인. 

왜 pull을 수시로 하라는건지 조금 알 것 같기도 한 순간이었음...

 

6. 커밋할 내용이 있는지 확인 한 후 git add .로 변경사항을 스테이징 영역으로 추가 후 커밋

7. 커밋이 확인 됐으면 git push로 푸쉬까지 완료하니 fork해 온 내 레포지토리에 compare&pull request라는 알림같은게 떴음.

compare & pull request 버튼을 누르니 내가 push 해야할 브랜치가 있는 원격 저장소로 PR하는 창이 뜸.

내 레포지토리 dev에서 -> 프로젝트 원격 저장소 dev로 PR

8. 마지막으로 원격저장소로 가서 내가 PR한 페이지를 들어가보면 아래쪽에 merge 버튼을 누르면 병합이 됨

이미 meage를 한 후에 캡쳐해서 완료 상태

 

이렇게 진행하면 원격 저장소에서 push까지 완료되어 내가 파일을 수정하고 커밋해서 merge된 것도 확인이 가능하지만 다른 팀원들은 원격 저장소에 똑같이 PR을 했을텐데 나한테 이 방법을 알려준 팀원말고는 PR로 merge된 부분이 보이지 않았음.

 

 

가만보니까 fork한 내 레포지토리를 통해서 원격저장소로 보내려면 레포지토리에서 레포지토리로 보내는 거라서 PR을 하지 않고는 안되는 것 같아서 다시 한 번 바로 프로젝트 레포지토리로 연결해보기로 함.

 

🚨 프로젝트 레포지토리로 바로 연결한 경우

 

1. git remote add origin { 레포지토리 url } 연결 후 git remote -v로 연결 확인.

2. git fetch로 최신 변경 사항을 가져온 후 git branch -r로 브랜치 조회

-> 조회했더니 정상적으로 원격 저장소 브랜치가 전부 확인됐음.

3. 작업할 브랜치로 이동해 준 후에 pull을 한 후 코드 수정하고 commit한 후  push.

언제 pull을 해서 가져왔지...? pull을 너무 수시로 했나..?

4. 여기서 커밋하고 푸쉬하는 작업은 명령어가 아니라 인텔리제이의 깃 UI를 통해서 푸쉬할 파일 하나만 선택해서 했음. 

아까 실패했을 때랑 같은 방법으로 하고 있는데 또 실패할까봐 다른 방법으로 진행해봄.. 혹시나 해서..

-> 커밋 후 git status로 확인해 보았을 때 아래 빨간색 mdified는 왜 때문에 뜨는 건지 잘 모르겠는데 알아봐야 할듯함!

5. 푸쉬한 후 PR을 하지 않아도 내가 작업한 브랜치에 잘 merge된 걸 확인했음. 

 

'Git&Github' 카테고리의 다른 글

github repository 합치기  (0) 2024.03.13
GitHub merge & PR  (0) 2023.08.09
Git과 GitHub 차이점  (0) 2023.08.07

 

Git을 사용할 때는 항상 GitHub의 Repository를 이용했기 때문에 같은걸 이야기하는 것이라고 생각했는데, 오늘 수업을 듣다가 Git과 GitHub는 다른 것이라고 이야기를 해서 의문이 들어서 조금 자세히 알아봤다.

 

📌 Git
Git은 로컬 환경에서 코드 변경 사항을 추적하고 버전 관리하는 도구로 명령줄을 기반으로 작동한다.
코드의 변경 내역을 효과적으로 관리하고 이전 버전과의 차이를 추적할 수 있다.
Git 자체를 사용하는건 로컬 내에서 가능하기 때문에 인터넷이 연결될 필요도 없다. 따라서 로컬에 저장되는 코드는 공유가 되지 않는다고 보면 된다.
(인텔리제이같은 IDE에 Git이 내장되어 있어서 IDE에서 Git 기능을 사용할 수 있음. 인텔리제이에서는 GUI로 사용할 수 있다.)

 


📌 GitHub
GitHub는 Git을 이용한 웹 기반 호스팅 서비스로 원격 저장소를 제공해서 코드를 온라인으로 저장하고 관리할 수 있게 해준다.
쉽게말해서 Git 소프트웨어를 지원하는 클라우드 서비스라고 볼 수 있다고 한다.
GitHub를 사용해서 원격 저장소에 코드를 저장하고 다른 개발자들과 코드를 공유하며 협업할 수 있고,
코드 리뷰, 이슈 트래킹, 프로젝트 관리 등 프로젝트를 효율적으로 관리할 수 있는 다양한 기능을 제공한다.

 

정리하자면,

Git은 로컬에서 작업할 수 있는 코드의 버전 및 변경 사항을 추척하는 도구. (프로젝트를 로컬에서 관리)

GitHub는 Git을 기반으로 한 웹 기반 호스팅 서비스로 개발자의 협업을 지원하는 여러 기능들을 제공한다.

(프로젝트를 웹에서 협업하고 공유하게 해주는 도구)

 

'Git&Github' 카테고리의 다른 글

github repository 합치기  (0) 2024.03.13
GitHub merge & PR  (0) 2023.08.09
GitHub 원격 저장소 브랜치  (0) 2023.08.09

+ Recent posts