[패스트캠퍼스 FE MGS 3기] - 3일차

	

오늘 배운 내용


협업을 위한 Git 활용법

  • Git license
  • Git ignore
  • Git Branch
    • branching models
      - git flow

첫 팀 프로젝트

  • git을 활용한 협업

기타

  • 명령어 및 꿀팁들...




협업을 위한 Git 활용법


벌써 몇일째 git에 대해서 배우는지 모르겠다....
나는 그래도 git을 조금 다뤄본 경험이 있어서
"아 이게 이래서 쓰였던 거구나" 하면서 재밌게 들었지만,
아마 처음 배우는 수강생분들은 조금 힘들것 같았다.

html이나 css처럼 한눈에 보이는 학습이 아니라서,
강의를 듣는 내내 크게 와닿지는 않았던 것 같다.
하지만 마지막에 팀원들의 git commit이 나의 branch에 무사히 merge되었을때
모두 환호성을 지를 만큼 짜릿했다! 아 이게 개발자지~~

그리고 솔직히 git을 배우는 이유 자체가 원활한 협업을 위해서 이기도 하니,
배우려면 오늘처럼 deep 하게 배우는 편이 좋을 것 같다. (진짜 실무자급으로 배운것 같다.)

그럼 시작하겠다~~!




Git에 처음 들어가 레포지토리를 생성하려고 하면,
이런 창이 뜰 것이다.


✔️Repository name 여기에는 이름 쓰고...

✔️public private 이거는 공개 비공개 설정일 테고...

✔️Add a README file 이거는 설명하는 README.md 파일 추가....

Add.gitignore는 뜬금없이 뭐지..? 뭘 무시해...?

Choose a license는 또 뭐야... 사업자 등록증인가


이 두가지를 한번 알아보자...!


❓ Git ignore

git에 올려지지 않고 무시되는 파일들을 설정함.

  • node modulesgit에 연결할 필요 없음.
    -> 용량도 많고 나중에 라이브러리 이름으로 자동으로 받아짐
  • keyfile.pem : 특히 조심. 크롤링 해서 해커들이 가져가서,
    사용자 aws 계정에 접속해서 비트코인 광산 노예로 만듬...ㄷㄷ
  • https://www.toptal.com/developers/gitignore
    이 사이트에 사용하려는 언어 별로 ignore 해야 하는 템플릿들이 있음 참고!

예전에 branch를 바꾸려다가 잘못 설정해서 node modules 라는 폴더 전체를 옮겨버린 적이 있었는데,
무시무시한 렉이 계속 걸렸던 적이 있어서 이 부분에 매우 공감이 되었다...
이게 원래 무시해야 하는 폴더였구나...!

❓ Git license


왠만하면 repository를 만들때 MIT License 를 체크 해야 한다고 하셨다.




Git Branch


이제 본격적인 협업을 위한 branch의 명령어들을 적어보겠다.

일단 branch 란?
-> 분기점을 생성하여 독립적으로 코드를 변경할 수 있도록 도와주는 모델이다.

  • git switch ‘branch abc’ : branch abcbranch 전환
    • 원래는 checkout 였는데 commit이랑 명령어가 겹처서 바뀌었다고 한다.
  • git merge ‘branch abc’ : 현재 branchbranch abc 를 합친다.
  • git branch -D ‘branch abc’ : branch abc 를 삭제.
    • branchlifecycle이 다 했을 때는 바로바로 삭제하기
  • merge conflict 발생 시 :
    1. 어떤 파일에서 발생 했는지 확인
    2. 그 파일을 vi로 열어서 편집
    • 만약에 충돌 수정 안하고 바로 나갔을 때 (fatal: Exiting because of an unresolved conflict.)
      1. 다시 수정
      2. ls -al 로 swap 파일 찾아서 삭제
      3. git add 하기
  • -u : upstream set (remote에 없던 새로운 branchpush 할때 사용해야함)


branching models

실제로 기업에서 쓰이는 여러 branching model 들을 설명 해주셨다.

  • github flow
  • gitlab flow
  • ✔️git flow

등이 있는데, 이중에서 가장 많이 쓰이는 git flow 에 대해서 설명 하겠다.

git flow

  • 크게 maindevelop 두개로 나뉨.
  • (hotfix) - master - (release) - develop - feature
  • 장점 :
  • 단점 : 복잡함
  • 설치 : https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html
  • 명령어 모음
    1. git flow init : 시작 & 기본 설정
    2. git flow feature finish 'branch A' : main 으로 이동, mergebranch A 삭제
    3. git flow release start v0.1 :
      • 마이너 업데이트 : 뒷 번호를 올림. 이전 버전에서 업그레이드
        메이저 업데이트 : 앞 번호를 올림. 새로운 기능 추가, 또는 아예 드랍 등 (대규모 업데이트)
    4. git flow release finish v0.1 :
    5. git tag : tag 확인
      • git push --tags : tag push


첫 팀 프로젝트


git을 활용한 협업

이제 이 도구들을 이용해서 우리팀이 어떻게 commit을 하고 merge를 했는지,
간략하게 설명해 보려고 한다. 근데 전혀 간략하지 않음

  1. 팀장이 githubrepository 생성 후 directorycloning 함.
  2. git flow init을 통해 develop branch 생성.
  3. 이제 팀원들은 팀장의 github 링크에 들어가 repositoryfork 함.
  4. 각자의 'directory'에 repositorycloning 함.
  5. 마찬가지로 git flow init을 통해 각자의 폴더에 develop branch 생성.
  6. develop branch에 각자의 파일 생성 후 git commitgit push
  7. 팀장의 githubpullrequest에 들어가request를 보냄
  8. 팀장은 확인 후 반려하거나 request 수락
  9. merge를 누르고 팀장의 CLI에서 git pull origin develop
  10. 이제 팀장의 저장소에 팀원들의 업데이트 된 파일을 모두 땡겨옴
  11. git remote add upstream '팀장의 git 주소' 로 팀원들이 팀장의 업데이트 된 저장소를 불러옴!

기타

  • 코딩 테스트 공부 : leetcode, 해커링크, 백준
  • 파일 이름을 바꾸면 git은 삭제 되었다고 인식함.
    git mv 로 바꾸어야 파일명 변경을 인식함.
  • git restore ‘파일 이름’ : 최신 commit 의 상태로 되돌아감. (commit 단위)
  • git commit --amend : commit 내용 수정하기
  • git lg : alias for pretty git log
  • git reset ‘파일 이름’ : add 되돌리기 (unstaging)
  • git revert ‘파일 이름’ :

좋은 웹페이지 즐겨찾기