그럼 자네가 어제 룰루랄라 처논건 말이 되고…?
- (사실 진짜 룰루랄라 처놀지는 않았다…)
- 근데 어쩌다보니까 토요일날 강의를 많이 못들은게 사실이긴하다.
- 오늘 진짜 깃강의와 하루를 같이 보냈다.
git-sourceTree 강제종료 이슈 해결
- 팀원분 중 한분이 소스트리에서 계정추가를 하려면 갑자기 종료되는 이슈가 발생했다.
- 많은 우여곡절 끝에 근본적인 해결은 아니지만 그래도 계속 코딩을 진행할 수는 있게 해결이 되었다.
- 나도 팀원을 도와줌으로써 받는 부수적인 이득이 상당히 많아 팀원에게 고마운데
- 팀원분께서도 상당히 고마워해줘서 참 뿌듯하고 기쁘고 살짝 부끄럽기도하고 그랬다.
- 같은 프로그래밍의 길을 걷는 개발자들에게는 낭만이 있다.
react & 알고리즘아 진짜 미안…
- 어제에 더불어 오늘은 알고리즘까지 못했다..
- 내일은 그래도 하지 않을까?.. 알고리즘은 하겠지 진짜
- 근데 내일 항해 본격적으로 시작하면 오늘처럼 계속 여유없으면 진짜 어떡하지..
sourceTree 강제종료
문제
- 소스트리 실행까지는 되는데 계정추가를 하려면 갑자기 소스트리가 종료되는 이슈 발생
해결과정
- 소스트리 전체 완전 삭제 이후 재설치 했으나 같은 오류 발생
- 설치과정의 오류는 아님
- 구글링의 깃클론시 같은 증상의 해결법 실행했으나 같은 오류 발생
- 전역 사용자 설정과 언어문제, token문제는 아닌 것으로 확인
- 설치시 계정 이름과 이메일을 다른 사람의 것으로 해봤으나 같은 오류 발생
- 깃허브 계정의 문제는 아닌 것으로 확인
해결
- 아틀라시안의 계정을 만들고
- 소스트리 구버전인 2.6.10.0 을 설치하는 것으로 우선 실행 완료 되는 것을 확인했습니다.
Sourcetree Download Archives | Sourcetree
-> 소스트리 버전들 archives
혹시 다른 분들도 문제가 생기시고 해결법들이 안통한다면 최후로 다른 버전 설치도 고려하시면 좋을 것 같습니다.
문제 원인 추측
- 백그라운드의 어떤 프로세스와 최신 소스트리의 계정추가 기능이 충돌을 일으켜 종료되는 것으로 추측됩니다.
- 명확한 문제 해결은 아니었으나 차후 다시 같은 오류가 발생할경우
- 명확하게 의심되는 프로세스가 있을시 그 프로세스 종료
- 또는 다른 구버전 설치
- 로 해결 가능할 것 같습니다.
git 3주차
1. 3주차 오늘 배울 것
- 협업을 위한 작업(commit) 관리
- Git 프로젝트 관리 - 협업 매너
- 오픈소스로 정보 탐색하고 함께 즐기기
- Github 으로 개발자인 나를 나타내자 - 포트폴리오
2. 내 작업을 반영해주시겠어요? - PR 01
- PR(Pull Request, 풀리퀘스트) 는 내 작업내역을 바로 merge 하지 않고, 참여하고 있는 프로젝트에 내 작업(branch)를 merge해달라고 요청(Request) 를 먼저 보내는 것입니다.
- base: merge 를 할 브랜치. main. 따로 선택하지 않았다면 자동으로 해당 repo의 기본 브랜치가 보입니다. 따로 설정을 하지 않았다면 우리 프로젝트처럼 main 브랜치가 기본 브랜치가 됩니다.
- compare : base 에 합치고 싶은 브랜치. feature/jjim
- Create pull request : PR 생성하기
- 하단에 feautre/jjim(compare) commit 내역이 보입니다.
- 원격 repo 의 main branch 에 commit 이 생겼으니, 로컬 repo 의 main branch 에 pull 해오겠습니다.
- sourcetree를 켜서 페치(fetch) 를 눌러줍니다. pull은 commit 내역을 가져와서 로컬 branch 에 commit 을 합친다면, fetch 는 연결되어있는 원격 repo 의 commit 내역을 가져만 옵니다. 원격 repo 의 commit 내역을 합치지 않고 보기만 할때 주로 사용합니다.
3. 내 작업을 반영해주시겠어요? - PR 02
- 내가 주인이 아닌 다른 repo 에 PR 하려면 어떻게 해야할까요? 바로 fork (포크, 일종의 프로젝트 복사) 가 필요합니다!
<aside> 💡 다른 repo에서 PR 하기도 fork를 하고 나서 이후 과정은 같은 repo에서 PR하기 와 유사합니다.
단, 여기서는 내가 merge 할 권한이 없으므로 repo 관리자의 merge pull request (PR merge하기) 를 기다려야합니다. 여기 실습에서는 PR하는 것까지 해볼게요!
</aside>
- issue를 눌러 구하는 작업을 확인한다.
- 먼저 내가 작업하겠다고 이슈에 등록하고 확인을 받는다.
- 클론하고 브렌치만들어서 작업한다.
- 커밋할때 이슈번호를 포함시켜준다. (작업내역 관리를 위해서)
- push하면 이후 full request를 쏠 수 있고 그 PR은 내가 merge할 수 없다.
4. 최신 commit 고치기 - amend
- 강제 푸시에 대해서 배운다.
- 이 강제 푸시라는 건 다른 사용자의 브렌치에서 사용하면 매우 큰 영향을 미치기 때문에 반드시 내 브렌치에서만 써야 한다.
- 또한 그렇게 위험하기 때문에 따로 설정을 해줘야 이 강제푸시기능을 사용할 수 있다.
- 커밋을 고칠때는 그냥 커밋하는 창에서
- 커밋옵션을 들어가 마지막 커밋 수정을 해주면 된다.
- 하지만 푸쉬를 고칠때는
- 우선 강제푸쉬기능을 켜주고
- 마지막 커밋을 수정한 이후에
- 푸시에서 강제푸시를 선택하고 푸시하면 된다.
👉 강제 푸시 옵션은 꼭 필요할 때만 나 혼자만 작업하는 branch에서 사용해야합니다!
다른 사람이 내가 수정하려고 한 commit 을 pull 하지 않은 상태여야합니다. 그렇지 않으면 다른 사람의 작업내역이 모두 꼬이기 때문에 다른 사람들은 기존에 작업하던 프로젝트를 지우고 새롭게 프로젝트를 clone 해야하는 상황이 발생합니다!
일반적인 push 를 할 때는 강제푸시 옵션에 체크가 되어있지 않는지 꼭 확인해보세요.
5. commit 되돌리기 - revert, reset
- revert
- 이전 commit의 내용을 수정할 수가 있다.
- 즉, commit이 변경되었다는 걸 알리면서 되돌리는 것이다.
- reset
- reset (리셋)은 commit 했던 작업내역을 말 그대로 리셋시키는 것입니다.
- reset 에는 세 가지 모드가 있습니다.commit 들을 되돌리고 변경된 파일 작업 내역은 보존해서 파일 변경사항으로 보여줍니다. 이때 변경사항은 add 되지 않은 상태로 보입니다.commit 들을 되돌리고 변경된 파일 작업 내역은 보존해서 파일 변경사항으로 보여줍니다. 이때 변경사항은 add 된 상태로 보입니다.commit 들을 되돌리고 그동안 작업했던 모든 것도 없애버립니다. 즉, 작업내역을 복원할 수 없습니다.
- hard(하드)
- mixed(믹스드)
- soft(소프트)
6. 변경사항 임시 보관하기 - stash
- 작업하다가 commit 메시지에 오타가 났거나 파일을 까먹고 add(staging)하는 경우가 있겠죠? 이 때 최신의 commit을 수정하는 것을 amend(어맨드,고치기) 라고 합니다! amend 로는 가장 최신의 commit 만 고칠 수 있다는 것을 꼭 기억하세요!
- 다른 사람들과 같이 협업하고 있다면 어떤 내용이 되돌려졌는지 기록으로 남기는 것도 중요합니다. 어떤 내용을 되돌렸는지 새로운 commit을 남기는 것을 revert(리버트) 라고 합니다. 최신 commit 뿐만 아니라 이전에 했던 commit 도 revert 로 되돌릴 수 있답니다!
- **reset (리셋)**은 commit 했던 작업내역을 말 그대로 리셋시키는 것입니다.
****'기억이 리셋되었다' 가 '기억이 없다'는 말인 것처럼요. 과거로 돌아가서 새로운 삶을 사는 것처럼 reset 이후에 작업내역은 없어진 commit 기록과 관계없습니다. - stash(스태시) 는 숨겨두거나 넣어둔다는 뜻이죠? 프로젝트의 변경사항을 임시적으로 보관해둘 때 사용합니다. 예를 들면, 다른 branch 로 체크아웃 하는 경우 현재 branch 의 변경사항이 사라지게 됩니다. 아직 작업 중이라서 commit 하지 않고 변경사항만 보관해두고 싶을 수 있겠죠? 이 때 commit 대신 stash 를 사용합니다.
7. 작업으로 의사소통하기
- 커밋메시지를 적을 때 항상 한번 생각을 해보고 작성하면 좋다.
- 왜? 라는 질문을 스스로에게 해보자 좋은 프로그래밍 습관이다.
- 커밋메시지를 작성할때도 왜? 이렇게 작성하지 라는 생각을 해보자.
- 예를 들면,
- 나는 가장 작게 쪼갤 수 있는 기능 단위로 commit 하겠어! 하면 웹사이트를 개발할 때,
- 메뉴바를 개발하고 commit
- 카카오 로그인 기능을 개발하고 commit 하는 식입니다.
- 아니면 issue 단위로 commit 을 할 수도 있겠죠?
- 나는 가장 작게 쪼갤 수 있는 기능 단위로 commit 하겠어! 하면 웹사이트를 개발할 때,
- 👀 좋은 commit 메시지, 단위로 작성하게 되면
- 어떤 작업을 했는지 commit history (commit log)만 보고 알 수 있다
- 버그를 찾을 때와 코드 고치기 쉽다
- 다른 사람이 코드를 리뷰할 때 편하다
8. 코드리뷰로 서로에게 피드백 주기
- 보통 코드리뷰는 아래의 단계에서 많이 일어납니다. 앞서 PR 수업 들었을 때 기억나시나요? 주로 PR 한 내역에서 댓글을 달면서 리뷰를 남기는 방식을 많이 사용한다고 했습니다.
- 코드리뷰를 하는 이유
- 코드의 품질을 높일 수 있다!
- 다른 사람의 눈으로 버그를 빠르게 발견할 수 있다!
- 서로의 지식을 나누면서, 더 나은 방법을 찾아낼 수 있습니다.
- 코드리뷰를 해주는 사람이 있으면 좋겠지만, 없다면 스스로의 코드리뷰를 리뷰어의 입장으로 바라보는 것도 꽤 도움이 된답니다!
9. Git 프로젝트 관리 - gitignore
- 공유하거나 공개되면 안되는 파일들은 공개된 repo 즉, 공개 Github repo 에 올라가면 안되겠죠? Git 이 마치 이런 파일들을 없는 것처럼 무시하게 하는 설정이 바로 .gitignore 입니다.
- 파일명을 .gitignore 로 만들고 여기에 Git 이 무시해야할 파일 또는 폴더이름을 적어주면 됩니다. 그리고 나서 내 프로젝트의 최상위 폴더에 저장하면 끝!
gitignore 검색 사이트
https://[gitignore.io](<http://gitignore.io/>)
10. Git 프로젝트 관리 - README
- README 는 한국어로 나를 읽어주세요 정도가 될까요? 😉 프로젝트나 소프트웨어 사용할 때 먼저 읽어야하는 정보를 적어두는 파일입니다.
- Github 프로젝트에서도 README.md 를 만들어 프로젝트 안내글을 적어둡니다. 프로젝트의 어마어마하게 많은 파일들을 하나하나씩 다 읽어볼 수는 없으니 꼭 이런 안내 파일이 있는게 좋겠죠!
- markdown 은 서식이 적용된 텍스트 파일입니다. 보통 텍스트 편집기로도 사용할 수 있지만, markdown 문법을 제공하는 편집기를 사용하면 서식이 어떻게 적용되는지 한 눈에 볼 수 있어요.
- 컴퓨터에 있는 image 를 링크로 만들 수 있는 꿀팁!
11. Github 에서 정보 얻기 - 개발자의 SNS
- 좋은 게 어떤 건지는 많이 많이 봐야 알아요~ Github 에서 기술 트렌드, 다른 사람들의 프로젝트를 찾아봅시다.
- 해당 언어와 기술을 잘 사용하고 있고 → 공식 튜토리얼, 공식 문서의 코드 조각, 공식 개발 프로젝트
- 그 기술을 만든 사람이 제일 잘 이해하고 있겠죠? 가장 그 기술답게, 그 프로그래밍 언어답게 만들어져있을 거에요.
- 다른 사람에게 유용한 → 많은 사람들에게 반응이 좋고 널리 쓰이는 프로젝트
- 해당 언어와 기술을 잘 사용하고 있고 → 공식 튜토리얼, 공식 문서의 코드 조각, 공식 개발 프로젝트
- Github 상단 expore 탭을 눌러 들어가보세요.
- 여기서는 Github 이 토픽별로 큐레이션 해주는 정보와 내 관심사(star 해둔 프로젝트, 토픽, 참여 Github 프로젝트)기준으로 추천해줍니다. 마치 넷플릭스, 왓챠같은 OTT 서비스처럼요!
12. 다른 프로젝트에 참여하고 싶어요 - 오픈 소스
- 어랏? 근데 왜 내가 열심히 만든 프로젝트를 나만 보지 않고 오픈소스로 만들까요?
- 누구나 사용할 수 있다면, 사용하는 사람이 많아지겠죠? 즉, 이 프로젝트가 가진 생태계를 넓힐 수 있어요!
- 협업할 수 있다! 프로젝트에 관심있는 사람들이 참여한다면, 적은 규모로 개발했을 때보다 빠르게 프로젝트를 개선시켜나갈 수 있겠죠?
- 버그를 빠르게 고치고 개선해나갈 수 있다! 우린 서로 다른 시각을 가지고 버그를 찾으니까, 다양한 방식으로 여러 버그를 찾고 고칠 수 있어요!
- 우리 조직의 개발력을 널리 홍보할 수 있다! 프로젝트 코드가 공개가 되니까 조직의 기술력을 잘 보여줄 수 있겠죠?
- [코드스니펫] 추가자료 - 성당과 시장 한글판(한빛미디어) 링크
- [<https://www.hanbit.co.kr/store/books/look.php?p_code=E8095481781>](<https://www.hanbit.co.kr/store/books/look.php?p_code=E8095481781>)
- 프로젝트의 bug report(버그 신고)하기 - 동작하지 않는 것을 issue 에 적기
- 버그리포트하는 issue 에 해결 답변 달기 - 종종 프로젝트 사용할 때 잘 안되는 것들을 도움받기 위해 issue 에 적는 경우가 있어요. 만약 내가 해결했던 내용이라면 댓글을 달아주면 너무 좋겠죠! 질문자 뿐만 아니라 그 글을 보는 다른 사람들도 도움이 될 수 있어요.
- 기술 문서화 - 오타 수정, 서식 수정, 기술을 설명하는 문서 작성에 참여
- 번역하기 - 주로 영어를 한글로 번역하는 프로젝트가 많습니다! translation 할 사람을 구할 때, 한국어 번역 제가 할게요! 하고 지원하면 됩니다 😉
- 버그 코드 수정
- 새로운 기능 추가
- 프로젝트에서 필요로 하는 자료 모으기
- 프로젝트 행사 운영 기획에 참여하기
- 그리고 프로젝트가 필요로 하는 모든 것!
13. Github 으로 나를 드러내자
- Repository name 은 내 github name 과 같게, public, Add a REAEME file 을 선택해주세요!
- ⭐특별한 repo ⭐ 이기 때문에 오른쪽에 profile 업데이트 할 수 있다는 문구가 뜹니다. 초록색 Edit REAEME 를 눌러보겠습니다.
- 아래처럼 내 페이지에 정보가 보입니다!
💡 Github page 를 빠르게 만들어볼게요! 이 포트폴리오페이지에 내가 배운 걸 기록했던 TIL 주소를 적어도 참 좋겠죠? 😉
- Github 에 접속해서 로그인하고 - 왼쪽 상단 초록색 new 버튼 눌러서 repo 새롭게 만들어봅시다.
- 아래처럼 적어주세요. Repository 이름은 꼭! 여러분들 github_name.github.io 로 만들어주세요. 그래야 blog 로 만들 수 있어요! 아래는 githubname 이 siyoungoh 니까 siyoungoh.github.io 로 만들었어요! 라이센스도 만들고, README 체크해서 만들어줄게요!
14. 총 정리 가봅시다!
- 1주차. 나를 위한 Git! 내 프로젝트를 위해 Git 을 바로 쓸 수 있었습니다. 👀 핵심 키워드 : 버전 관리, commit, pull, push + TIL
- 2주차. 같이 하기 위한 Git! 협업하기 위한 기초 개념을 배웠습니다. 👀 핵심 키워드 : Issue branch, merge
- 3주차. 모두의 Git! Git 으로 의사소통하는 방법과 Github 으로 만날 수 있는 새로운 세계를 만나봤습니다.
- 협업을 위한 작업(commit) 관리
- 👀 주요 키워드 : PR (작업내역 반영해주시겠어요?) , commit 되돌리기 - amend, revert, reset , 작업내역 임시 저장 - stash
- Git 프로젝트 관리 - 협업 매너
- 👀 주요 키워드 : commit 메시지 컨벤션, gitignore, README
- 오픈소스로 정보 탐색하고 함께 즐기기
- 개발자스럽게 진짜 개발 정보를 찾는 방법
- 👀 주요 키워드 : github exprore , 오픈소스(open source)
- Github 으로 개발자인 나를 나타내자 - 포트폴리오
- 개발자들 명함과 이력서에 Github 주소가 들어가는 이유! Github 에서 profile, 프로젝트 소개, 개발 블로그를 작성하는 방법을 알아봅니다.
- 👀 주요 키워드 : github profile , repo 소개 , github page
- 협업을 위한 작업(commit) 관리
15. 3주차 끝 & 숙제 설명
💡 내 TIL repository 업데이트 하기! 내 프로젝트를 업그레이드 해볼 거예요.
'항해99' 카테고리의 다른 글
[항해99] TIL D+2 (0) | 2022.07.13 |
---|---|
[항해99] TIL D+1 (0) | 2022.07.12 |
[항해99] TIL 사전과제 스터디 D-2 (0) | 2022.07.10 |
[항해99] TIL 사전과제 스터디 D-3 (0) | 2022.07.10 |
[항해99] TIL 사전과제 스터디 D-4 (0) | 2022.07.09 |