
되고 싶다 나도 git 고수..!
깃 repo 처음 만들면
echo "# git_practice_developer" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/2JAE22/git_practice_developer.git
git push -u origin main
이렇게 하라고 뜸. 하면 됨
⚠️ 참고로 아무것도 없는데 그냥 push 하면

이런 식으로 error: failed~~뜰거임. 아무것도 없는데 push 해서 그럼.
그래서 echo해서 README.md 파일 하나 만드셈.
① Setting -> Featuers -> Set up templates 클릭하셈.
② 밑 이미지 처럼 Template Content와 옆에 Commite message에 convention에 맞게 적어둠.

③ 하고 나면 이렇게

Template 이 추가되고 이를 local repo 에도 추가해 주어서 최신상태로 연동되게 함.

① local 에서 .github/ISSUE_TEMPLATE에서 bug_report.md를 하나 만들어준다.

② 이제는 local 에서 -> remote로 해야하니까 push 해준다.

remote에서 보면

이렇게 bug_report.md가 생성되었음을 알 수 있다.
또한 Issue 탭에 들어가면 이렇게

Issue_TEMPLATES가 생겼다.
① Issue 탭에 들어가서 템플렛으로 Feature 를 고른다(기능구현이므로)
Add a description, Assignees, Labels 를 본인의 Issue 에 맞게 고침.

② Issue submit 하면

위와 같이 Isuue 가 생겼다. 이제 Todo에 있는 것처럼 add함수를 구현하고 push 해보자.
③ local에서 함수를 만들기 전에, pull main -> Issue에 따른 branch 만들기.
git pull origin main #최신화
git checkout -b "feat-1/Add_add_function" # main브랜치에서 -> feat-1 브랜치로 이동
⚠️ 여기서 git checkout -b "feat-1/Add add_function"이렇게 띄어쓰기 있으면 안됨 ㅋ 오류뜸 ㅋㅋㅋㅋ

개짜증ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ (띄어쓰기하면 어떻노 진짜)
④ main.py -> git add-> commit(convention)에 맞게 적어서 하면 된다.
1) main.py 작성(더하기 힘수)

2) git add, commit 함
이때 주의해야 하는데 commit 은 feat: Add add_fuction #1로 뒤에 이슈 번호가 남게 해야 한다.
git add main.py
git commit -m "feat: Add add_fuction
>
> #1"

3) 그후 현재 branch에서 push 해야함
git push origin feat-1/Add_add_function

마지막에 remote 에 가보면

이렇게 Compare & Pull Request 가 딱 하고 나올 것 임
(만약에 안 나온다면 당신이 잘못한거.)
그리고 Issue 탭에 들어가보면

요렇게 밑에 feat: Add add fucntion #1로 나와있는걸 볼 수 있다.
(gihub 계정 하나 더 만들어서 Pull Request 응답하게끔 하셈.(혼자 북치고 장구치자🥁))
Pull Request Template는 remote에서 만들 수 있는 방법이 없다.
따라서 local 에서 만들어야 한다.
① 먼저 main 브랜치로 이동하기
(왜냐하면 PR_template는 프로젝트 초기 생성 시 진행되므로 main 브랜체에 merge 해야함.)
git checkout main #main 브랜치로 이동.
git branch #branch 어떤거 있는지 확인
② PULL_REQUEST_TEMPLATE.md를 .github/에다가 만들고 add -> commit -> push 해줍니다.

❗참고로 위에 폴더를 보면 지금 main 브랜치이기 때문에 main.py 가 없다.
git add .github/PULL_REQUEST_TEMPLATE.md
git commit -m "feat:Add Pull_REQUEST_TEMPLATE.md"
git push origin main

③ remote 에서 확인

생겼죠?(신가하죠?)
① 이제 Compare & pull request클릭 해보자

② PullRequest template가 뜰 텐데 이를 본인의 내용과 형식에 맞게 적어둔다.

③ Create pull request 클릭하면

이렇게 뜰 거고 이제 pull_request 를 응답해야 하는 상대방의 입장에서 보겠음.
지금부터는 상대방의 입장.
① PR은 받은 상대방은 Pull requests 탭에 들어가서 File changed를 보면 코드가 어떤게 추가되고 변화됬는지 볼 수 있다.

위 코드를 보고 틀렸다고 생각되는 점이 있다면 고쳐주면 된다.
② 예외 처리 누락됬다고 생각해서

예외 처리를 어떻게 하면 좋겠다고 코드를 쓰면
Start a review 를 누르고
③ Finishi your review 를 누르면 다음과 같이 뜸.

이렇게 comment 남겨주면됨.
④ 지금부터는 다시 작업담당자의 입장
요청했던 PR review 가 오면 comment 남기고

이제 요청했던 대로 코드 수정하자.
⑤ main브런치에서 -> feat-1/Add_add_fucntion 브랜치로 이동하자(거기에 main.py가 있으니까)
그 후 이렇게 요청받은대로 고쳐준다.

⑥ 이제 add -> commit -> push 하면됨.
git add main.py
git commit -m "refactor: add_function error"
git push origin feat-1/Add_add_function

코드가 업데이트 되어 main.py 에 outdated 표시가 생겼다.
이제 다시 리뷰어의 입장.
⑦ 리뷰어의 입장에서 File changed 에 들어가서 Review change 눌러서 Approved하셈.


이렇게 PR 에서 한거 merge까지 완료해서 마쳤네요 끝~~
✍️ 참고로 Merge할 때 선택할 수 있는 방법은 3가지 있음
Create a merge commit - Merge Commit을 남기고 코드를 Merge
브랜치에서 발생한 Commit Log + Merge Commit
Squash and merge - 브랜치 내에 추가된 모든 Commit을 하나의 Commit으로 Squash 하고 코드를 Merge 브랜치에서 발생한 Commit Log를 합친 하나의 Commit
Rebase and merge - 브랜치를 대상 브랜치와 Rebase 후 Merge
브랜치에서 발생한 Commit Log
먼저 issue 추가 -> 작업하는 브랜치 생성 -> pre-commit 브랜치에서 설치 -> 작업브랜치에 push -> PR 생성 및 요청 끝
