안녕하세요. delay100입니다!
오늘은 IntelliJ에서 Github를 연결해볼건데요, Github에서 README.md를 추가한 경우에 대해 다뤄보려 합니다.
1. Github에서 README.md를 추가한 경우
2. local에는 이미 프로젝트가 존재하는 경우
1, 2가 모두 만족한 경우에는 어떻게 IntelliJ에서 연결해야 할지 알아봅시다.
먼저, 1, 2번 조건이 만족하기 위한 작업을 해주었습니다.
GITHUB
먼저, Github에서 새로운 레포지토리를 생성해주었습니다.
특히 옵션 중에서 Add README file을 체크해주었습니다.
다 만들어주면 위와 같이 repository가 생성됩니다.
README를 체크 안 해주었을 때랑 결과가 좀 다른데, README를 체크 해주지 않으면 로컬과 연결하는 명령어들이 뜹니다.
그러나 우리는 README를 추가해주었기 때문에 연결 명령어 안내가 나오지 않고 있습니다.
LOCAL
start.spring.io에서 만든 tasteyom_backend 폴더 내부 모습입니다.
**springboot 프로젝트를 만들 때는 아래의 사진처럼 dependencies를 설정해 만들었습니다.
IntelliJ
다음으로 IntelliJ에서 local의 프로젝트를 켜주었습니다.
이렇게 킨 후에, IntelliJ 하단의 Terminal을 클릭하면 아래와 같은 상태가 됩니다.
우리는 이제 IntelliJ에서 Github를 연결할 준비가 다 되었습니다!
자 그럼, 이렇게 Github에 파일이 있는데 local에도 이미 파일이 있는 경우에는 어떻게 Github를 연결할 수 있을까요?
아래의 명령어들을 차근차근 따라와주세요!! 명령어는 위에서 언급한 것 처럼 IntelliJ 내부의 Terminal에 작성하면 됩니다.
사진의 명령어를 그대로 따라와주시면 됩니다.
작업은 아래와 같은 순서로 진행됩니다.
1. git repostiory와 local 연결하기
2. local에 있던 내용 master 브랜치 생성 후 반영
3. master 브랜치에 기존 main 브랜치 내용(README) 반영
4. 다시 main 브랜치에 master 브랜치 내용 반영 후 master 브랜치 삭제
1. git repository와 local 연결하기
git init 명령어를 통해, 새로운 git repository를 생성해줍니다.
git add . 명령어를 통해, 현재 폴더 내의 모든 파일들을 git에 올리는 명령어입니다.
여기서 "." 대신에 직접 파일명을 적어주면 해당 파일만 add 됩니다.
다음으로, commit message를 작성해줍니다. commit message는 규칙대로 작성하는 것이 좋습니다.
추후에 잘못된 코드를 어디서 추가했는지 알기 쉽고, 유지보수하기 편하기 때문입니다.
해당 내용에 대해 잘 적어둔 블로그 링크도 첨부해두겠습니다.
https://jane-aeiou.tistory.com/93
git remote -v 명령어로 현재 연결된 github 링크가 있는지 확인합니다. 아무것도 뜨지 않는 경우에는 아무것도 연결되지 않은 겁니다!
git remote add origin "github clone 링크" 명령어로 연결해줍니다.
해당 링크는 github 사이트의 repository 내의 Code를 클릭하면 복사하기가 나옵니다.
그리고 다시 git remote -v 명령어를 이용해 연결을 확인합니다. 사진과 같이 origin + 링크가 뜨면 연결된겁니다!
2. local에 있던 내용 master 브랜치 생성 후 반영
그리고 git branch 명령어로 현재 branch 를 확인합니다. 그대로 따라하셨다면 master 브랜치가 떠있을겁니다.
git의 gui툴인 git fork를 이용해 확인해보면, local master 브랜치가 생성되고 commit 명령어도 위에서 작성했던 대로 저장되어있음을 알 수 있습니다.
그런데 우리는 아직 local의 master 브랜치에만 push를 해둔 상태입니다.
이걸 origin(github)에 반영해봅시다.
git push origin master 명령어를 이용해 원격(github)상에 master 브랜치를 만들어주면서 현재 local master 브랜치의 내용을 반영시켰습니다.
github에서 확인 시 원격(origin)에 master 브랜치가 생성된 것을 볼 수 있습니다.
내용도 local에 있던 내용이 그대로 잘 올라갔군요.
그런데 아직 부족합니다. 왜냐하면 README.md가 아직 반영이 되지 않았기 때문이죠!
3. master 브랜치에 기존 main 브랜치 내용(README) 반영
git pull origin main --allow-unrelated-histories 명령어를 이용해 master 브랜치에 기존 main 브랜치를 pull합니다.
이 명령어에 대해 더 잘 알고싶은 경우, 아래의 블로그를 참고해보세요. 간략히 말해서 master의 history와 main history가 겹치는 점이 아예 없기 때문에 위와 같은 명령어를 이용해야합니다.
위에서 main과 병합하는 명령어(git pull origin main ~)를 실행했기 때문에
local master 값과 origin/master값이 현재 달라져 있는 상태입니다.
따라서 git push origin master 명령어를 이용해 다시 origin/master를 최신화 시켜줍니다.
이제 README와 우리의 프로젝트 코드가 합쳐졌습니다.
4. 다시 main 브랜치에 master 브랜치 내용 반영 후 master 브랜치 삭제
그런데 여기서 끝내면 뭔가 아쉽습니다..
바로 main이 default 브랜치인데, master 브랜치에 병합이 되었기 때문이죠!
master 브랜치를 없애고 main 브랜치에 병합 결과가 존재하도록 바꿔봅시다.
git checkout "origin/브랜치명"을 이용하면 origin에 있는 main 브랜치로 이동해야한다고 생각이 될겁니다.
하지만 우리는 HEAD로 이동되었습니다. (뜨는 문구를 보니 git switch를 이용해 브랜치를 이동했어야했을 것 같네요..)
그렇지만 상관 없습니다! 어쨌거나 origin/main으로 이동된 것과 유사한 상태이기 때문이죠.
여기서 main으로 이동하는 이유는 master의 내용을 가져온 후에 master를 삭제해주기 위함입니다.
git merge origin/master를 이용해 main 브랜치에 origin/master 내용을 병합해옵니다.
그리고 여기서는 git push origin main이 아닌, git push origin HEAD:main을 써주어야합니다!(중요)
왜냐하면 위에서 HEAD로 이동했기 때문이죠..!! 혹시나 위에서 제 글과 똑같이 하지 않고 git switch origin/main을 이용했다면 git push origin main을 이용해도 될 것 같습니다.
이 명령어를 이용하면 이제 origin/main에 우리가 원하는 내용들이 전부 들어가게 됩니다.
아무튼 origin/main에 모든 파일들이 들어왔으니 origin/master를 제거해줍시다.
그리고 아직 현재 위치한 브랜치가 main 브랜치가 아니라 HEAD 브랜치입니다.
git checkout main 명령어를 통해, HEAD 브랜치에서 origin/main 브랜치로 이동하면서 local에 main 브랜치를 가져왔습니다.
git branch 명령어를 통해, local에 main 브랜치가 생긴 것을 볼 수 있습니다. 또한 현재 local의 브랜치 위치가 main이라는 것도 알 수 있죠.
그리고 이 main 브랜치는 origin의 정보를 가지고 왔기 때문에 현재 origin/main 브랜치와 main 브랜치는 동일한 파일들이 들어있게 됩니다.
그럼 이제 본격적으로 master 브랜치를 지워보겠습니다.
local에 존재하는 master 브랜치와 origin에 존재하는 master 브랜치는 별개이기 때문에, 각각 지워줘야 합니다.
먼저 local에 있는 master 브랜치를 지워봅시다.
4-1. local master 브랜치 지우기
git branch -d master 명령어를 이용해 local에 있는 master 브랜치를 지웠습니다.
4-2. origin master 브랜치 지우기
git push origin -d master 명령어를 이용해 origin에 있는 master 브랜치를 지웠습니다.
이제 master 브랜치와 관련된 것들이 전부 사라졌습니다.
최종 결과
브랜치도 1개 남고, 우리의 프로젝트와 README.MD도 잘 들어가게 되었습니다.
궁금하신 점은 댓글 또는 메일로 보내주시면 최대한 빠르게 답변해드리겠습니다. 감사합니다!
'Study > 나름쓸모있는정보' 카테고리의 다른 글
[BOJ] 백준 자바 기본 제출 형식(BufferedReader, BufferedWriter, StringTokenizer 이용) (0) | 2024.01.29 |
---|---|
10초만에 VSCode 언어 변경하기 (0) | 2022.07.04 |
깃허브(Github) 프로필 꾸미기(feat. README.md) (0) | 2022.06.14 |