본문 바로가기
Git , Github

Git(Branch 합치기) , Github 기본설정 및 가져오기

by 개발적금 2022. 11. 24.

안녕하세요 개발적금입니다.

오늘은 Git Branch 합치는 방법과 

Github의 기본설정 및 자료가져오기를 알아보겠습니다.

 


목차

 

1. Git(Branch 합치기) - merge 와 rebase

 

2. Github 기본설정 및 가져오기

 


1. Git(Branch 합치기) - merge 와 rebase

 

Branch(나뭇가지)를 합치는 방법은 두가지가 있습니다.

 

1-1) merge

-> 브랜치가 연결되어서 이어집니다.

-> 히스토리가 남아서 상황파악이 쉽습니다.

-> 하지만 많은 브랜치를 작업하면 Git graph가 더러워져서

-> 나중에가면 보기가 힘들어집니다.

 

** 문법 **

 

git merge [가져올 브랜치명]

예를들어서 

[ branch 명 : develop ]

[ branch 명 : feature ]

[ branch 명 : hotfix ] 3개가 있다고 가정해봅시다.

 

저는 develop에 브랜치 feature와 hotfix를 연결하고싶습니다.

1. develop에 연결해야하니 , git branch 명령어를 통해

-> 지금 *(바라보고있는방향)이 어딘지 확인해주셔야하고 , 

-> develop을 바라보고있지 않다면, git switch develop을 통해

-> 바라보게 해줍니다.

 

2. git merge feature 를 하시면 feature가 develop에 연결이되었습니다

-> 가져오고 연결하였으니 feature를 지워줍시다(안헷갈리기위해)

-> git branch -d feature 를 통해 지워줍니다.

 

3. feature와 마찬가지로 hotfix도 동일시 작업해줍니다.

-> 바라보는방향을 확인해주시고 , git merge hotfix 를 해주시고

-> git branch -d hotfix 를 통해 헷갈리지않게 지워줍니다.

 

** 만약에 **

위의 예시를 하던 중 , 똑같은 파일이 다른내용으로 있다면

conflict 충돌에러가 발생할수있습니다.

충돌 에러가 나오셨다면 , git merge --abort를 통해 작업을

중지할수 있습니다. 그자리에서 해결하고 싶으시면

충돌 된 파일이 빨간색으로 지정되어 있을텐데

차분하게 변경될 내용들을 수정해주시고 저장하시면됩니다.

저장 후에는 당연히 

-> git add -> git commit 을 해준 후에 메세지가 뜨는데,

정말 저장할거냐는 의미입니다. :wq!를 통해 저장후 빠져나오면 됩니다.

************

 

1-2) rebase

 

rebase는 " 보낸다 "라는 개념으로 알고계시면 됩니다. base를 재지정 한다는

뜻도있는데 너무 어렵습니다.

 

예제) [ branch 명 : develop ] / [ Commit 명 : main ] 

위의 예제를 통해 develop에 feature와 hotfix를 연결하였습니다.

연결된 develop을 main으로 " 보내고 " 싶습니다.

 

** 문법 **

저는 develop를 보낼거니까 , 바라보는방향(*)이 develop이어야 합니다

( git branch 를 통해 확인해주시고 다르다면 git switch [브랜치명]을통해 바꿔줍시다)

 

- git rebase main : main으로 develop(바라보는방향)를 보내고싶어! 라는 말입니다.

--> 창이 뜨는데 , 계속 rebase를 하고싶으면 git rebase --continue , 중단하고싶으면 --abort 사용!

 

***** 여기서도 동일하게 같은 파일 다른내용이 존재한다면

에러가 생깁니다. 위의 merge의 conflict 해결방법과 동일하게

변경할 내용을 수정한 뒤 동일하게 진행해주시면 됩니다 ******

 


 

2. Github 기본설정 및 가져오기

 

Git 과 Github은 엄연하게 다릅니다. 어떤분은 그차이를 이렇게 설명합니다.

 

" Git은 애니팡이고 Github은 애니팡서버 "

 

Github은 사이트이고 , 우리가 작업한 내용들중 Commit된 내역을 저장하기위해

사용합니다. 그 Commit된 내용을 가지고 다른 개발자분들과 공유하여 협업을 합니다.

 


Github 사이트로 가서 회원가입을 해줍니다!

Github은 다른 사이트들과 "인증" 의 개념이 다릅니다.

다른사이트들은 아이디와 비밀번호로 자기를 인증하는데 ,

Github은 본인을 인증 확인 시키려면 Token을 발행시켜줍니다.

 

우리는 Git에서 작업한 내용들을 Github으로 보낼것입니다.

그런데 작업내용들을 보낼때마다 "인증"을 받아야합니다.

"인증"받을때 이 노트북, 계정이 내꺼다 라고 짱박아두는 작업을 해봅시다.

 

1) keychain

우선 Mac기준만 말씀드리겠습니다.

Command + Space 를 누르시고 검색을 "keychain"을 하여

키체인 접근을 실행해줍니다.

-> 오른쪽위에 검색창에 github을 검색하여 없으시면

-> 키 체인 항목 추가를 해줍니다(검색창 왼쪽에있는 네모난모양)

-> 추가할 키 체인 항목 이름 :https://github.com ]

-> 별다른거 없고 여기서 username을 적어주셔야하는데 이 username은

-> 로그인 계정아이디가 아니라 로그인하셨을때 1시방향 내정보를 누르시면

-> username이 나오는데 그 값입니다.

 

2) 연결하기

이제 keychain을 통해 내가 맥이다! 라는것을 확인시켜주었습니다.

그러면 연결해야죠? 

 

** 문법 **

- git remote add [원격저장소이름] [원격저장소 주소] 입니다.

- 대체로 [원격저장소이름]은 origin을 많이씁니다.

- [원격저장소 주소]는 자기자신의 github 주소입니다.(폴더안에까지의주소)

- git remote add origin [https://github.com/[github아이디]/git_sample]

- git remote add (연결 추가)를 하였으니 잘되었는지 git remote -v를 하여 확인해봅니다.

 

 

- git push origin main -> main에 있는 내용을 [원격저장소 이름 : origin]에 "push(넣다)하고싶다" 입니다.

----> 진행하시면 귀찮게 username과 password를 물어봅니다.

----> 앞으로 많은 push를 할건데 계속물어보면 귀찮죠?

----> git config --global credential.helper "osxkeychain" 명령어를 써줍니다.

----> " 나 아까전에 mac에 keychain해놨어, 그거 참고해 라는 말인거같습니다.

 

 

git push를 통해 보내기를 해보았습니다( github에서 잘올라갔는지 확인해봅시다)

그러면 가져오기도 해봐야죠?

 

- 가져오기

 

가져오기에는 두가지종류가있습니다. 전부 가져올것인지 , 일부만 가져올것인지 

 

1) 전부 가져오기

 

** 문법 **

- git clone [원격저장소 주소] : clone을 실행하기전에 꼭! 터미널에서 경로를 지정해주셔야합니다

------> 꼭꼭 지정해주셔야합니다. 잘못했다가 덮어씌어질수 있습니다!

------> 저는 빈폴더를 만들어서 터미널에서 빈폴더에 경로를 지정해 준후에

------> git clone [원격저장소 주소] 를 하여 clone을 하였고 터미널에서

------> code . 을 하여 새로운 작업폴더에 가져왔습니다.

 

2) 일부 가져오기

 

** 문법 **

- git pull [원격저장소 이름] [로컬저장소 이름] : 진행하면 [로컬저장소 이름] 기준으로 [원격저장소 이름]

에 있는 자료를 가져올수있습니다.

 


 

마지막으로 목차에는 적지않았지만 알아두면 좋은것이 있는데

- [ rebase -i ] 입니다.

 

rebase는 연결시켜주는 , base를 재설정 한다는 의미로 설명을 하였습니다.

[ -i ] 라는 옵션이 붙게되면 기능을 쓸수있는데 많이 쓰는 기능들을 알아보겠습니다.

 

** 문법 **

 

- git rebase -i [수정할 커밋의 이전해시] : 커밋해시로 HEAD가 이동합니다.

 

** 명령어 **

insert 모드에 실행하는 명령어 입니다

 

- p,pick : 커밋을 그대로 둡니다.

- r,reword : 커밋 메세지 변경합니다.

- e,edit : 수정을 위해 정지를 합니다.(커밋을 나눌때 사용)

- d,drop : 커밋을 삭제합니다.

- s,squash : 이전 커밋에 합칠때 사용합니다.

 


git rebase는 이전 커밋 히스토리를 변경하는것 이기 때문에 정말 조심해야합니다.

그리고 이미 github 같은 원격저장소에 push된 상태라면 더더욱 조심해야합니다.

만약 그래도 불구하고 진짜진짜 써야한다면

 

- git push --force 또는 git push -f

----> 강제로 커밋을 덮어씌어야 합니다.

----> 이런 상황이 일어나면 안되지만 일어난다면 다른 협업 개발자와 이슈가 생길수있으니

----> 꼭 사전에 이야기하고 사용해야합니다

 

 


 

오늘은 Git 과 Github의 기본설정 및 사용용도에대해

몇가지 알아보았습니다. 손에 익을때까지 숙지해야겠습니다.

감사합니다.