2023. 3. 10. 01:50ㆍ프로젝트 관리/github
드디어 이론적(?)인 깃사용법은 끝났고.. 혼자서 개발한다는 설정으로 git을 한번 사용해 보자.
사실상 혼자서 토이프로젝트를 하거나 공부용으로 한다고 생각하면 master branch만 있으면 된다.. 킹치만 실제 서비스를 하는 앱이나 어플을 만들떄는 master, dev, topic 처럼 branch를 최소한 세 개쯤은 만들어 놓고 시작을 한다.
할 것은 1. 환경설정, 2. 회원가입, 3. 로그인, 4. 글쓰기 이렇게 만든다고 생각 해 보자.
우선 github에 New repository를 만들어 주자. Name은 blog-alone 그리고 Add a README file에 체크를 해주자.
그러고 Create repository 클릭
그 Add a README file 체크 안해주면 origin에 1번만 적용되고 체크 해주면 4번까지 적용되어 master branch가 생긴다. 통상적으로 프로젝트 만들때 그냥 체크하는편. 그렇게 해서 만들면
커밋 로그남고, main이라는 브랜치가 생김.. 몽고디비에서는 master라고 쓰는데 깃허브에선 main이라고 만들어진단다.. 이름이 뭔상관이겠노.. ㅋㅋ;; 나중에 명령어 쓸때 브랜치명 들어가는 곳만 주의해서 쓰면된다. 그러면 만든 깃허브 저장소의 프로젝트를 내 로컬 gitworkspace로 옮겨오자
원하는 폴더로 가서 git bash를 킨 후 git clone 원격 주소~ 명령어의 입력으로 해당 폴더로 내려 받아주면 blog-alone폴더가 받아지고 그 안에 들어가서 git log를 쳐 보면 inital commit이 찍혀있는게 뜬다. ㅇㅇ; 현 상태를 그림으로 간략하게 요약하자면
이런 상태이다. 이 상태에서 개발은 main에서 하면 안되기때문에 새로운 브랜치를 따고 기본작업을 해 주자.
그러면 우선 git checkout -b명령어로 브랜치 2개를 따주자. dev, setting_topic 이라는 브랜치 명으로... setting_topic 브랜치에서 마저 작업을 이어가도록 한다..
우선 touch 명령어로 환경설정.txt를 생성 해 주고 그 안에 다음 캡처와 같은 내용을 입력 후 저장 해 준다. README 파일도.. 한번 열어 볼 것인데.. .md 파일로 되어있는데 이 것은 HTML로 번역되는 마크업랭기지 라고 하는데.. 이게 뭐냐면
웹의 웹 브라우저가 HTML로 번역해서 읽어준다. 킹치만 메모장으로 열어서 해당 내용을 동일하게 작성 후 저장하자.. 둘 다 저장을 했다면, add & 커밋을 하자. 그러면 환경설정 완료 했고, topic이 할 일은 다했으니 dev branch로 넘어가서 merge를 해 주자.
현재 상태를 그림으로 요약한 것이다. 지금까지 한것이.. setting_topic 브랜치에서 환경설정 완료를 commit하고, dev브랜치로 HEAD를 옮긴 상태이다. setting_topic 브랜치는 환경설정을 완료한 상태에서 지? 할일은 다 끝난 것이다. 그러면 dev에서 merge를 해주면 fast-forward merge가 되어서 환경설정완료 커밋쪽으로 dev branch pointer가 내려오게 되고, merge log가 남지 않기때문에.. 개발 브랜치에서는 merge log를 남기는게 좋기때문에.. git merge 명령어의 새로운 옵션을 사용해서 merge log를 남도록 해주자.
git checkout dev 명령어로 우선 HEAD를 옮긴 후 git log를 찍어보면 inital commit 밖에 안찍혀 있는 부분에..
git merge --no-ff setting_topic 명령어로 merge를 해 주면 Vi에디터로 넘어가서 위의 캡쳐에서 드래그 된 부분처럼 커밋메세지가 뜨는데 그대로 shift + : wq로 저장 후 종료를 하면.. merge가 완료되고 git log를 찍어보면 merge message가 남는 것을 확인 할 수 있다.
그러면 이어서 git checkout -b join_topic 브랜치를 생성 해 주고.. 회원가입.txt를 생성 후 메모장 처럼 기능을 다만들어 주고, add & commit을 해준다. 그러고 다시 dev로 이동을 해 주자.
현재 한 것을 그림으로 요약 한 것이다. 이제 dev 브랜치 포인터를 바로 회원가입 완료 커밋으로 내려주면 또 ff merge가 되기 때문에.. log가 안남아서 남기기 때문에 밑에다가 merge로그를 남기면서 merge완료 쪽으로 dev bp를 끌고 내려올 것이다. 실제 상태는 위의 그림과 같고 보기좋게 나열하자면
이런 상태이다. 그러면 한번 해보자.
git merge --no-ff join_topic 명령어로 merge message를 남겨주면서 해준다. git log를 찍어보면 의도대로 된 것을 확인 가능하다. 그 다음으로 회원가입과 동일하게.. 로그인 기능을 만들어 주자.
새로운 브랜치를 따서 기능 제작 후 git merge --no-ff 브랜치명을 이용해서 메세지를 남기면서 merge를 해 주자.
git log 명령어로 잘 된 것을 확인했다.
현재 전체적인 상태이고.. 마지막으로 글쓰기 기능까지 만들어 주자.
git checkout -b write_topic 브랜치를 생성 해주면서 HEAD를 옮겨준다. 그 후 글쓰기 생성 하고.. 중간에 3번까지만 쓰고 퇴근을 하게 되었다고 생각하고.. add & commit(글쓰기 아직안됨) 해주자. 그러고 마저 이어서 5번까지 작성하고.. 다시한번 add & commit(글쓰기 완료)를 해주자... 그러면 보통 이런 상황에서 git log를 찍어보면 저런 자잘한 과정 로그들이 남는데 이럴때 git rebase를 사용한다.. 대부분.. 사용 해 보자.
git rebase -i HEAD~2 명령어로 vi모드 켜주고 INSERT MODE를 키는 키보드 i키로 pick과 squash 포지션을 정해 주고.. Shift + : + wq로 저장후 종료를 한다.
이 때 주의할 점이.. squash 포지션을 잘 정하는 것이 중요하다. 제일 최근 커밋된 것부터 squash를 해주고 해당 기능의 제일 뿌리가 되는 커밋이 pick이 된다. 그렇게 하지않으면 데이터가 날아감. 모르겠으면 깃허브 찍먹하기 rebase편 내용 확인
그러면 위,위의 캡쳐처럼 깔끔하게 로그가 정리가 된다.
그러면 다시 dev로 돌아와서 로그남기면서 fast-forward merge를 해 주고.. git log를 확인 해 보자. 프로그램이 다 만들어 졌고.. 완료가 된 것을 볼 수 있다.
마지막으로 main brach로 가보면 아무 파일도 없을 것인데.. 완성된 dev 파일을 merge log를 남기면서 merge 하자.
git log를 확인 해 보자면.. 처음 github repository를 생성했을때 만든 inital commit 부터 마지막 dev branch에서 완성본을 merge한 log까지 깔끔하게 남아있는 것을 확인 한 후. 이제 github에 올려주기만 하면되는데.. 올려주기 전에.. tag를 달아주는게 좋다. 어떻게 하냐면..
git tag 태그명 명령어를 입력 하면.. 현재 HEAD가 있는 곳에 해당 태그명으로 태그가 생기게 된 것을 확인 할 수 있다.
git tag -n이라는 명령어를 입력 하면.. 현재 존재하는 태그와 태그의 위치를 알 수 있다.
그러면 git push origin main명령어로 push해 주자. 만약에 push 에러가 뜨면..
git error: 403이 뜨면서 push가 안되면.. 제어판>사용자 계정> 자격 증명 관리자 에서 형상관리 프로그램 관련 자격 증명을 삭제 해 주면 된다.
push하고 github를 가보니까 파일은 제대로 올라갔는데.. git tag가 업로드가 안되었다. git tag까지 같이 올릴때는
git push --tags origin main 명령어를 사용해서 push를 해주면 올라간다.
개발을 지속해야 하니.. dev branch까지 push를 해 주고, 내 github repository를 들어가보면.. 빨간색 동그라미를 보면.. branch와 tag가 제대로 올라간 것을 볼 수 있다. 그리고 파란색으로 표시된 부분이 README파일이다.
이런 식으로 계속 개발을 이어가면 된다.
이상 여기까지 혼자 개발할 케이스의 경로를 설명 했다. 수고링~..
'프로젝트 관리 > github' 카테고리의 다른 글
메타코딩 -무작정 깃허브 찍먹하기 -6- (Github 초보 기본기 & Remote 브랜치 이해) (0) | 2023.03.03 |
---|---|
메타코딩 -무작정 깃허브 찍먹하기 -5- (Github push & pull 및 github clone 해보기) (0) | 2023.03.01 |
메타코딩 -무작정 깃허브 찍먹하기 -4- (Git Merge 실습 및 rebase로 로그관리) (0) | 2023.02.22 |
메타코딩 -무작정 깃허브 찍먹하기 -3- (Git branch 기본개념 및 브랜치 포인터 개념) (0) | 2023.02.21 |
메타코딩 -무작정 깃허브 찍먹하기 -2- (Git Reset, Reflog or Git 최종 로그변경하기) (0) | 2023.02.20 |