본문 바로가기
Backend boot camp/Session1

[Git] 기초

by orioncsy 2022. 9. 6.

0. version control system -Git

개요

  • 학습 목표
    • Git의 배경 및 기능 이해
    • Git과 Github의 차이
  • version control system의 필요성
    • 파일 변경 이력 확인 가능
    • 이전 버전으로 복귀 가능
    • 변경 내용 파악 용이
    • git으로 관리되는 파일은 github, gitlab, bitbucket 등 여러 가지 저장소로 백업, 협업 가능
  • Git
    • 분산형 버전 관리 시스템
    • 특정 시점의 백업 복사본을 스냅샷
    • 스냅샷을 만드는 작업을 commit
  • Github
    • Git : 소스코드 기록 추적하는 버전 관리 시스템
    • Github : git repository를 관리할 수 있는 클라우드 서비스
    • git으로 관리하는 프로젝트를 올려둘 수 있는 장소
    • 오픈소스에 기여할 수 있고 commit 기록으로 변경 코드 확인 가능
    • Git repository : git으로 관리되는 폴더
      • local repo에서 혼자 작업하고 remote repo에서 공유 가능
    • react 원격 저장소를 내 원격 저장소에 가져오는 것을 fork
    • 그것을 다시 내 local로 가져오는 것을 clone
    • 변경 내용을 commit으로 저장하고 remote repo에 올려주는 것을 push
    • github에서 pull request로 변경사항 반영을 요청
    • 반대로 remote에서 변경된 사항을 local로 가져오는 pull도 존재

Git이란?

  • Linux OS
    • 리누스 토르발즈가 linux를 개발하다가 github를 만들었다
  • Git
    • 파일을 관리해주는 프로그램
      • 버전 관리
      • 파일 백업
      • 협업 공유
    • 버전 관리
      • git이 관리하는 폴더에 문서를 만들면 git으로 문서 버전 관리 가능
    • 파일 백업
      • 원격 저장소에 백업 가능
    • 협업 공유
      • 수정 부분 협업하여 공유
    • Git & github
      • git은 로컬에서 버전 관리 프로그램
      • github는 온라인 원격 저장소 기능 제공
      • add, commit, push : 원격 저장소에 업로드 과정
      • fork, clone : 원격 저장소로부터 로컬로 다운로드 과정
      • pull request : 변경 사항 반영 요청
      • merge : 작업 취합

1. Git 설치

개요

  • 학습 목표
    • Git 설치 및 환경 설정
    • SSH 키를 github에 등록

Git 설치

  • Git for windows
    • google에서 git for windows 검색으로 다운로드
    • 설치 과정에서 use visual studio code as git’s default editor로 설정
    • git bash 들어가서 git 입력하여 확인
  • Git for ubuntu
    • 터미널에서 sudo apt install git
    • git —version으로 확인
  • Git for MacOS
    • 터미널에서 git 입력
      • 다시 git 입력하여 확인

Git 환경 설정 및 SSH 등록

  • 사용자 정보
    • github에 사용한 사용자 이름과 이메일 주소 사용
    • 터미널에서(git bash)
    $ git config --global user.name "나의 사용자 이름"
    $ git config --global user.email "내 이메일 주소"
    
    • —global 옵션으로 한 번만 설정함
    • 프로젝트마다 다르게 하고 싶다면 global 옵션을 빼고 설정
  • 에디터 설정
    • $ git config --global core.editor nano
    • commit, merge 할 때 메시지가 나오는데 vi로 기본 설정을 편한 대로 바꾼다.
  • SSH 등록
    • ssh(secure shell) : 보안 강화된 shell 접속
    • 터미널에서 다른 pc로 접속하거나 요청할 때 사용하는 비대칭키
    • SSH 키 생성
      • ssh-keygen
      • ~/.ssh/에 id_rsa, id_rsa.pub 파일을 생성
      • id_rsa.pub는 공개키 id_rsa는 개인 키, 비밀 키
    • 공개 키 복사
      • cat ~/.ssh/id_rsa.pub
      • 공개키를 복사
    • github 공개키 등록
      • github 세팅에서 SSH and GPG keys
      • new ssh key 클릭
      • 제목과 공개키를 입력하고 비밀번호로 인증
    • 테스트
      • repo에서 코드 → ssh 복사하여
      • 터미널에서 git clone + [복사한 코드]
      • 정상 다운로드 확인
      • 안될 경우 키 삭제하고 다시 공개 키 복사해서 입력하고 붙여 넣기 해서 엔터를 누르고 등록

2. Git workflow

개요

  • 학습 목표
    • 혼자 workflow
    • 함께 workflow
    • github의 기능과 git 명령어 사용
    • git의 3가지 상태
    • remote repository를 페어와 공유 협업
    • 충돌 발생 대처
    • commit 되지 않은 변경 사항 취소(reset HEAD <file>, checkout — <file>)
    • git 개념(branch, merge, origin과 upstream 차이)

혼자 작업 workflow

  • remote에 있는 다른 repo에서 fork를 통해 나의 remote repo에 가져옴
    • repo 우측 상단 fork
    • create fork
  • local repo에 clone을 통해 가져오기
    • git clone + [repo 주소]
  • 작업을 하여 add를 통해 staging area에 올려놓기
    • git status로 staging area와 untracked file 확인
    • git restore+[파일명] commit되지 않은 파일 변경사항 취소
    • git add + [파일명] : modified 된 파일을 staging area에 올림(git add .로 전체 올리기 가능)
  • commit을 통해 local repo에 올려놓기
    • git commit -m ‘~~’ : comment를 남겨 local repo에 올림(날짜, 작업자, 메시지 기록)
    • git add 한 상태에서 코드 수정하면 staged 상태와 modified 상태 두 개 존재
      • 이 상태에서 commit 하면 git add 한 것만 올라가기 때문에 add를 통해 최신판 staging 해야 한다.
      • restore 하면 변경 사항 폐기할 수 있다.
      • unmodified : commit 된 파일 수정 안 한 상태
      • modified : commit 된 파일 수정 상태
      • staged : commit이 가능한 상태
    • commit 한 상태에서 commit 취소하려면 git reset HEAD^로 최신 commit 취소
      • HEAD~1과 같다
      • git reset —soft : working directory와 staging area는 그대로인데 local repo만 변경
      • git reset —mixed : working directory는 그대로인데 staging area와 local repo 변경
      • git reset —hard : 모두 변경
  • push를 통해 remote repo에 올리기
    • git push origin [branch명] 명령어(origin: remote repo 이름)
    • git push origin master(main 기본 branch)
    • git log를 통해 commit 된 기록 확인 가능(q로 나가기)
  • pull request를 통해 다른 remote repo에 업로드
    • 변경 사항 타인에게 알리기(PR)
    • remote repo에 compare & pull request 버튼 존재
    • 변경사항 설명 적기

함께 작업 workflow

  • 내 컴퓨터에서 생성한 directory를 git init으로 git 관리 상태로 만들기
    • git init : 디렉터리를 git repo로 만들거나 새로운 repo로 만들기
  • git direcotry를 remote repo와 연결
    • git remote add origin [repo 주소]
  • 페어와 나의 변경 사항을 remote repo로 공유
    • git remote add pair [타인 repo 주소]
    • git remote -v를 통해 local repo와 연결된 모든 remote 확인 가능
    • git pull pair master를 통해 페어의 작업을 가져와서 자동 merge
    • 자동 병합이 실패하면 merge conflict 발생
    • git status로 어떤 파일 충돌인지 확인
    • 파일 열어서 수정
      • current change (내가 수정한 파일)
      • incoming change (remote repo 내용)
      • both changes (모두 수용)
      • 직접 수정
    • 수정 완료하고 merge commit을 하기 위해 staging area에 추가
      • git add
      • git commit
      • git push origin main
      • 자동으로 commit 메시지 남겨진다

3. Simple Git workflow

Simple git workflow

  • github에서 repo를 각자 fork
  • git clone [repo주소]로 각자의 로컬로 가져오기
  • git remote add origin/pair [주소]로 양쪽 연결
  • 드라이버가 git push origin main으로 자신 remote에 올림
  • 내비게이터였던 사람이 git pull pair main으로 가져오고 다시 드라이버 역할
  • 드라이버였던 사람이 git pull pair main으로 가져오고 반복

'Backend boot camp > Session1' 카테고리의 다른 글

[JAVA] 기초 - 배열  (0) 2022.09.06
[JAVA]기초 - 변수, 타입, 문자열, 연산자, 콘솔 입출력  (0) 2022.09.06
[Linux] 기초  (0) 2022.09.06
[Publishing]HTML, CSS  (0) 2022.08.23
Development  (0) 2022.08.21