Git

오연주·2022년 11월 8일
0

Git

목록 보기
1/1

📘 1. 나 혼자 사용할 수 있는 Git 프로젝트를 만들어 보기

Git

  1. 버전 관리 도구
    : 히스토리 확인가능
  2. 작업 단위 나누기
  3. 협업해서 하나의 프로젝트를 만드는데 유용하다.
    : 같은 파일명의 내용이 어떤 부분이 다른지를 자동으로 비교하고, 어떤 것을 반영할지 선택 할 수 있다.

GitHub

  • git 프로젝트를 원격으로 올릴 수 있는 저장소기능과 커뮤니티기능을 제공하는 서비스

Sourcetree

  • git을 쉽게 사용할 수 있게 도와주는 도구

버전관리와 commit

Git에서는 버전별로 파일을 만들어줄 필요없이 중간중간 Git을 사용해 현재 프로젝트의 상태만 저장해주면 된다.

  • 버전관리 : 누가, 언제, 현재 프로젝트 내용 어떤지 정보 남기는 것
  • commit : 현재 프로젝트 상태를 📸찰칵 사진찍어서 저장하는 것

Git 초기화(Git initialize)

  • 컴퓨터에 있는 프로젝트를 git이 관리하는 프로젝트로 만들 수 있다.(소스트리를 이용해서 git폴더 만들어주기)

Sourcetree에서 commit방법

  1. 파일을 선택 후 오른쪽 + 버튼을 클릭하면 상단으로 이동됨
  2. 아래에 작업내용을 적어주고 커밋클릭 후 커밋할 내용 없음이 뜨면 커밋완료!

📌 add(staging)

  • add(staging)를 사용하면, 컴퓨터에서 여러 파일을 수정했어도 '기능 A 수정' 에 관련된 파일만 골라서 commit 할 수 있다.
    작업내역을 깔끔하게 관리하기 위해서는 꼭 아래처럼 commit 해주기
    • 내가 기록할 작업 내역이 무엇인지 생각하고,
    • 관련된 파일만 add 해서
    • 작업내역을 나타내는 commit 메시지 적기!

repo

  • Git으로 관리되는 프로젝트를 Git에서는 repo(리포)라고 부른다.
  • 내 컴퓨터에 저장되어있는 리포지토리를 로컬 repo(local repository)라고 하고, GitHub 처럼 다른 곳에서 접속할 수 있는 공간에 저장되어있는 것을 원격 repo(remote repository)라고 합니다.
  • repo는 commit을 수동으로 반영해야한다.

📌 Tracking

  • 로컬 repo가 원격 repo를 연결하는 것을 추적(Tracking, 트랙킹 / branch tracing) 이라고 한다.


Push / Pull

  • Push
    : 로컬 repo의 commit들을 원격 repo에 반영하는 것. commit들을 밀어넣기
  • Pull
    : 원격 repo의 commit들을 로컬 repo에 반영하는 것.
    commit들을 가져오기


Clone

  • 원격 repo 를 내 컴퓨터에서도 사용할 수 있도록 가져올 수 있다. 일종의 초기 다운로드라고 생각하면 된다.


💡 Q. 원격repo 생성시 원격 이름을 왜 origin으로 사용하지? 찾아보기.

  • 구글링해서 찾아본결과 : 'origin이 깃허브에 존재하는 repository 즉, remote를 뜻하는 단어입니다. 다만 remote에 origin이라는 이름을 붙인 것뿐이랍니다.'

혼자 Git을 사용할 때 유용한 패턴

  • pull -> 로컬 repo commit -> push 순서로 진행하면 충돌(conflict)을 피할 수 있다.


✅ 2022.11.08.(화)

Git과 GitHub의 차이점을 잘 알지못했었는데 드디어 강의를 보며 배워서 막혔던 속이 뚫리는 기분이다. 설치부터 add, commit, tracking, push, pull, clone까지 이해했다!👏👏👏



📘 2. 협업을 위한 Git

충돌(conflict)이 일어났을 때 작업방식

  1. 누가 이 작업을 할 것인지 정한다. - Issue
  2. 각자 맡은 것을 작업한다. - Branch
  3. 각자 작업을 프로젝트에 합칠 수 있게 공유한다. - merge
  4. 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge

Issue 할당

  • 프로젝트에서 이슈는 해결해야하는 문제로 아래와 같은 것이 있다.
    • 버그(프로그램이 원하는 대로 동작하지 않는 것)를 신고 (Bug report, 버그 리포트)
    • 기능 추가 등의 프로젝트 개선 제안 (enhancement)
    • 위 문제들을 해결하기 위한 작업단위

이슈 트래커(Issue Tracker) 종류

  • Github, Jira, Trello, YouTrack 등

📌 commit내용 #이슈번호

  • 이슈에 있는 내용을 수정 후 commit시 commit내용을 적고 끝에 #이슈번호를 적어준다.

🔗 Github를 활용한 이슈 관리

🔗 Github 공식 이슈 관리 소개

Branch

  • 브랜치를 사용하게 되면 나뭇가지가 뻗어나오듯 기능에 맞게 나누어 작업할 수 있다.

    브랜치를 사용하지 않았을 때의 예시 :

    브랜치를 사용할 때의 예시 :


새 Branch이름을 정할 때

  • ex) feature/이슈번호_관리하기쉬운이름 : feature은 기능 개발하는 브랜치에 관행적으로 붙여주는 이름이다.


체크아웃(checkout)

  • 현재 작업하는 브랜치를 선택하는 것

Branch 삭제하기

  • 브랜치를 삭제한다는 것은 그동안 브랜치에 했던 작업 내역 즉, commit이 모두 사라진다는 의미이다.
  • 브랜치를 삭제하면 기본 브랜치인 main 브랜치로 체크아웃(checkout) 즉 작업 브랜치가 변경된다.
  • 브랜치를 삭제할 때 다른브랜치에 체크아웃 한 뒤에 삭제가 가능하다.

Merge(병합)

  • 브랜치를 다른 브랜치에 합치는 것이다. 특정 브랜치의 commit들을 다른 브랜치의 commit 내역에 모두 반영하는 것이다.

    ❗ 병합하기 전 commit시 branch 체크아웃이 잘 돼있는지 확인하기


🔗 Github flow

Merge conflict

  • 하나의 파일을 여러 브랜치에서 수정하고 하나의 branch에 merge 하려고 할 때 merge conflict(병합 충돌) 가 발생한다. 양 쪽에서 내용이 수정되었는데 어떤 내용을 반영해야할지 물어보는 것
  • <<<<<<< 에서 >>>>>>> 까지가 충돌이 나는 부분
  • 충돌을 수정하려면 반영할 내용만 남기고 <<<<<<< HEAD>>>>>>> feature/jjigae_rtan 을 지워준다.
  • 위의 충돌난 파일을 수정하고나서 sourcetree를 켜고 하단 commit메세지 적는 창을 보면 어떤 파일이 conflict(충돌)났는지의 정보가 적혀있다.

✅ 2022.11.12.(토)

2주차에는 Git으로 협업할 때 사용하는 작업들을 배웠다. branch생성과 merge, merge를 할 때 merge conflict를 만나면 어떻게 수정해야하는지와 원격repo에 push하는 법까지!
중간중간에 팁과 사이트를 알려주시는데 도움이 많이 된다.



📘 3. 모두를 위한 Git

profile
안녕하세요. 오연주입니다!👩🏻‍🚀

0개의 댓글