안녕하세요 개발적금입니다.
오늘은 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의 기본설정 및 사용용도에대해
몇가지 알아보았습니다. 손에 익을때까지 숙지해야겠습니다.
감사합니다.
'Git , Github' 카테고리의 다른 글
[Mac] Git 설치방법 및 기본세팅 그리고 commit과 branch에대해 알아보자 (0) | 2022.11.24 |
---|