Wecode 부트캠프 -Foundation 2/Git, Github Database (저장소)

Foundation Test: 깃허브 branch 생성, remote 올리고, pull request, main branch pull 까지 : 한 사이클 정리

JBS 12 2023. 9. 10. 14:01

간결하고 이해하기 쉬운 실습 

 

[깃허브] branch 생성 후 github 업로드 성공!

포스팅 업로드를하다가, user- 회원가입 , 로그인 posting- 포스팅 이렇게 구분해서 코드를 미리 올려놓으면 좋겠다 싶어서, 내 개인 repository에 올리고 싶어서 다시한번 실패했던, 질문하려고 했던 g

pm-developer-justdoit.tistory.com

1) 로컬폴더  만들기

terminal에서

cd desktop > mkdir  폴더 만들고  (로컬 폴더)

깃허브 가서 new repository> create 만들고

terminal에서 git init 하고, git remote 혹은 git remote-v 하면 아무것도 안 나오는 게 정상

 

이제 깃허브의 new repository와 로컬 폴더를 연결해줄 건데, 

터미널에 git remote add origin [repository 주소] 

 

touch [내이름].md 로     마크다운 파일을 만들었다 (touch는 파일생성 명령어) 

ls 눌러보면, 위 만든 파일이 나온다. 

 

git add, commit 

이 상태에서 git status 하면 아무것도 안 나오는게 정상이고, no commits 맞다. 

아직 업로드 되지 않은 파일 리스트가 빨간색으로 나오고 (untracking이라며)

 

git add . 후에 잘 올라갔는지 확인하려고 git status를 찍고나면 

이제 초록색으로 잘 올라갓다고 나온다. 

 

add 후에는 commit 해야 하니 

git commit -m " " 

git status : 터미널 내용이 없다 깨끗하다. commit한 이후로 수정된 게 없다. 

 

내가 commit한 내역을 보고싶다면, git log 치면 들어가지고, 

'누가 언제 어떤내용'을 수정했는지 나옴. 

첫번째 줄은 commit hash (내가 원하는 버전으로 돌아갈 수 있음)

commit을 보고 나서는  'q'로 나오면 됨. 

 

 

 

commit을 했으니 이제 push를 해야 함.

git push origin [branch 이름] 


2) branch로 진행할 경우 

작업공간이라는 branch 

1.branch 생성 

git branch feature/[이름] 

 

2. (선택) git branch로 확인 (들어가보면, 내 위치가 'feature/[이름]'으로 됨, q로 나오고)

3. git  check out feature/ [branch 이름] 

지금 branch에서 다른 branch 로 이동 --> 'switch to feature/[이름]' 뜰 것

이러면 앞에 branch이름이 따라 다닐 것 

 

4. cp gildong souou (복사) 이거 왜하는거지, 어디서 어디에 무엇ㅇ르 복사

5. git add . 

6. git commit - m " "      이 버전에 gildong과 souou 2개를 저장을 할 거야

(git checkout main 다시 가보면 ls 하면 폴더 만든 거 없음. 같은 컴퓨터여도. checkout은 버젼을 왔다갔다 하는거)

그래서 git branch로 내가 지금 어디에 와있는지 확인하는 것

 

7. git push origin feature/[ ]   remote 깃허브 저장소에 이제서야 올라간 거 

8. 내 버전을 main 버전에 합쳐주는 깃허브 > pull requests > compare: [branch선택] >create pull requests 초록 버튼 >들어가서, 쓰고 > 또 create pull requests


 

프로젝트할떄, 각 팀원들이 다른 팀원이 만든 코드를 main 저장소에 올린 거를

clone으로 각자 로컬에 다운 받는다

 

터미널에서 git clone  [해당 branch url 복붙] 

하면 폴더가 로컬에 다운 받아짐.   ---> branch를 별개로 생성해야 함


(만약 vi [ ].md 파일로 안에 들어가서 text 수정 후 저장했으면

변경 사항이 생겼으니까,

git add . , git commit -m " " , git log 해서 commit 확인, q로 나오기) 


branch로 작업했으면, 내 remote(=github) 에 branch로 올려줘야 함

 

remote에는

방금 내가 만든 branch가 없는 상태, 

내 로컬 환경에서만 존재 하는 것 (아직 Push를 안했다면)

 

 

만약에 remote 공간에 Local branch가 있다고 하면

commit해서 수정만 하면 되는데, 

 

 

없는 상태에서,

처음 만든 branch를 push한다면,

remote 공간에 branch 를 하나 생성한다로 생각.  --> git origin feature/[branch이름]

== 내 remote 공간에 feature/[ ]를 만들어주는 것 

로컬에만 있던 branch가 내 remote 공간에도 생김
깃허브 새로고침해보니, 정말로 생겼다!!! (그렇게 안 보이던..)


vi 로 md파일 내용 수정도 해보았다 (readme.md 개념)

그리고 나와서 cat으로 찍어보고, 

깃허브를 아무리 새로고침해도 올라오지 않았다. 비어있던 파일에 내가 내용 추가 했으니, git add [특정 파일.md] , git commit -m " " 

git log으로 commit 내역 보니 잘 됐고. 

이후에도 깃허브에 새로고침해도 안 나와서 git push origin [.md] 도 해봤는데 안 되길래 

알고보니, git push origin feature/[branch name]을 한번 더 했어야 

git push feature/ [branchname]이 아닌 git push origin feature/ [branchname] !!!

앞머리의 내가 '로컬에 만든 폴더'에 위치하고 있고, 

여기에서, 내가 '로컬에 만든 branch'로 이동했고, 

여기에서, git push origin으로 깃허브에 branch 폴더가 옮겨졌고

'로컬에 만든 branch'안에, 내가 이전에 git add . 로 들어간 '로컬에 만든 폴더'의 내용물들이 담겨있다 (즉, branch에 먼저 올리는것) 

드디어 내가 추가한 내용이 나왔다.

add-commit-push 잊지말자! 


자, 이제 branch를 만드는 이유를 생각해봐야하는데,

 

작업물을 main에 바로 올릴 수 없기에,

branch를 만들어서, 그 branch를 작업 공간(remote)에 올린 것. 

 

그렇다면, 결국

내 'main' branch에 , 내가 작업한 내용이 합쳐져야 하는 것

== pr = pull request

== pr이 수락되면, 내 코드가 main branch에 합쳐진다. (merge)

 

깃허브 > pull request 탭> new pull request

구러면 compare changes로 비교 하는 게 나오는데,

base:는 항상 main 이다. --> 코드가 Merge 병합돼서 합쳐질 장소 

compare: main에 병합 시켜야 할 branch 선택하기 

왼쪽 main , 오른쪽 branch 으로 수정된 거 비교 가능

feature/[branch 이름] 에서 작성한 내용이 main branch에도 가게 되는 것

 

 

pr 만들어주세요 : branch 생성 후 과제 진행, add, commit, push , 깃허브에서 pull request. 

 

remote에 merge 후에는 더 이상 branch는 필요 없음

로컬의 main에는 아직 모르니, 다른 branch 생성하기 위해, 최신화 위해 

git checkout main으로 돌아옴 

 

깃허브 commit history가 아직 local에 없으니, push 반대인 pull로 remote(origin)에서 local로 받아오겠다 --> git pull origin main


 

<이게 하나의 기능을 만드는 cycle>

다시 큰 흐름 정리하면,

 

1. branch라는 작업 공간 만들고 작업해서

2. git add, commit, push 하고 

3. 깃허브에서 repository pr 만들고 올리고 main branch에 merge되고

4. pull 해서 그 main branch 를 다시 받아오는 거