[Git] Git 시작하기

이진이·2023년 8월 20일
0
post-thumbnail

Git 초기 설정


프로젝트에서 여러 명이 동시에 작업한다면, 누가 어떤 코드를 반영한 것인지 알 수 있어야 한다.

따라서 작업을 시작하기 전에 내가 누구인지 이름과 이메일을 설정한다.

git config --global user.name "LeeJinIe" //git관련 작업 기록에 남는 이름 수정
git config --global user.email "jj0745@naver.com" //git관련 작업 기록에 남는 이메일 수정

git config --list //git 설정 확인



Git 저장소 생성


로컬 디렉토리 안에 git repository를 생성하는 방법

여기서 git repository는 .git파일이다.

현재 디렉토리 사용

git init
  • 기존의 디렉토리를 git repository로 설정
  • git을 사용할 로컬 폴더로 이동 후 명령어 실행

새로운 폴더 사용

git init ./폴더이름/폴더이름
  • 원하는 폴더를 지정하여 실행
  • 해당 폴더가 없다면 만든 새로 만들어진 후 git repository가 된다.



Git 준비 영역으로 보내기


git repository에 반영하기 전에 파일을 저장소에 먼저 올려야 한다.

준비 영역으로 보내기

git add newfile.js    //newfile.js 파일을 준비 영역으로 보낸다

git add .             //모든 파일을 준비 영역으로 보낸다.
  • untracked, unmodified, modified → staged

준비 영역에서 삭제

git reset        //staging 된 파일을 준비 영역에서 삭제

상태 확인

git status     //Staging area 의 어떤 파일이 변경되었는지 등 파일의 상태를 확인할 수 있다.



Git 저장소 반영


staging된 파일들이 무엇이 수정, 추가되었는지 메시지를 남겨 저장소에 저장하는 작업

저장소 반영(커밋)

git commit                      //.git 저장소 내에 staging 파일 저장

git commit -m "commit message"  // 메시지를 추가하여 저장소에 반영
git commit --amend              // 텍스트 편집기가 실행되고, 수정하고 저장하면 저장소에 반영
                                // amend 뒤에 직접 메시지 작성도 가능

저장소 내역 확인

git log                     // 모든 커밋 내용 확인 가능
git log --pretty=oneline    // 각 commit을 한 줄로 출력
git log --graph            //commit 간의 연결된 관계를 아스키 그래프로 출력(branch에서 유용)
git diff                   //commit 된 파일 중 변경된 사항을 비교



Git Branch 만들기


Git Branch란?

독립적으로 어떤 작업을 진행하기 위한 개념

  • 각각의 Branch는 다른 Branch에 영향을 받지 않음
  • HEAD : 현재 branch를 가리킴

종류

  • 메인 branch : 배포할 수 있는 수준의 안정적인 branch
  • 토픽 branch : 기능 추가나 버그 수정과 같은 단위 작업을 위한 Branch
    • 수시로 만들고 없앨 수 있음

생성

git branch [Name]

확인

git branch 

브랜치 전환

git checkout [전환할 브랜치 이름]
  • 브랜치 대신 commit ID를 넣으면 해당 스냅샷으로 헤드가 이동한다.



Git 브랜치 합치기


main(master) branch로 통합할 때,

  • HEAD를 main branch로 이동하여 타겟 브랜치 병합한다.
git checkout master
git merge [my_branch]

fast-forward Merge

타겟 브랜치에서만 새로운 내용을 추가했을 때 메인 브랜치와 곧바로 병합

즉, 단순히 포인터가 최신 커밋으로 이동한다.

  • 타겟 브랜치에서 새로운 커밋을 하면 새로운 check point가 만들어진다.
  • 메인 브랜치가 새로운 체크 포인트로 이동하여 타겟 branch의 내용이 메인 브랜치로 병합
  • 새 브랜치의 내용이 메인 브랜치에서 업데이트 된 내용이기 때문에 곧바로 marge가 됨

3-way Merge

각 브랜치가 가리키는 커밋 두 개와 공통 조상 하나를 사용

  • 두 branch에서 각각 변경 사항이 있을 경우, 각각의 커밋에 따라 각각 체크포인트가 생긴다.
  • 각 branch가 만든 마지막 체크 포인트와 공통 조상 세 커밋이 합쳐져서 새로운 체크포인트가 만들어진다.
  • 이후 현재 브랜치는 새로운 체크포인트를 가리킨다.

EX)

git checkout master
git merge iss53

확인

git branch --merged      // marge된 branch들 출력

Git Merge conflict

merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다 → 직접 수정해야 함

  1. conflict 알림을 보내서 어떤 내용을 사용할지 알려 달라고 요청
  2. git status 에서 어느 파일에서 충돌했는지 both modified : file name 으로 확인
  3. 해당 파일을 열어서 직접 수정하고 ‘<<<<’, ‘====’ 등 필요 없는 기호 삭제
  4. 수정 완료 후 git addgit commitmerge 다시 한다.

방지

main branch의 변화를 지속적으로 가져와서 충돌이 발생하는 부분을 제거



Git Branch 삭제


사용이 끝난 토픽 브랜치는 삭제를 하는 것이 일반적이다.

git branch -d [my_branch]






참고 및 사진 출처

profile
프론트엔드 공부합니다. 블로그 이전: https://jinijana.tistory.com

0개의 댓글