[TIL] Day9

공부중인 개발자·2021년 4월 15일
0

TIL

목록 보기
9/64
post-thumbnail

What?

git 기초

배운것을 기록은 했으나 틀릴 가능성이 매우 높고 수정할 내용이 대다수입니다.

git

버전 관리를 사용하는 이유

  1. 버전 관리라는 것 자체가 각 버전 별로 변경된 이력들을 저장하는 작업
  2. 다시 이전 버전으로 되돌아가야 하는 상황이 발생할 경우 이전의 변경 이력들이 기록되어 있으니 되돌아가는 것이 가능
  3. 변경 사항을 저장할 때는 어떤 사항이 변경되었는지 코멘트를 꼭 작성, 그렇기 때문에 누가 어떤 파일을 추가, 수정, 삭제했는지도 확인이 가능 중요장점
  4. 협업과 백업에 용이

Git 이란?

Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’
하나하나 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능
이렇게 특정 시점에 생성된 백업 복사본을 스냅샷
하나 하나 스냅샷을 만들어 주는 작업을 commit
바뀐 부분 바로 확인가능
Git에서는 이렇게 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있음

Git 과 Github

Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스
Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있는 것
개발자들의 SNS입니다. Github에서 Code Review 등을 통해 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 GitHub로부터 호스팅되고 있어서, 누구든 자유롭게 기여할 수 있습니다.

Git Repository

내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 함
Git으로 관리되는 폴더를 Git repository 라고 함
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공
작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있음
다른 사람이 Remote Repository에 올려 놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있음

Git에 사용자 정보 넣기

$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"

$ git config --list //지정해놓은 사용자 정보 확인

Github 이용하기

  1. Remote에 있는 다른 Repository에서 Fork를 해서 Remote에 있는 내 Repository에 가지고 오기
  2. 그리고 이 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업이 또 필요
    내 컴퓨터에서 작업을 하기 위해서 clone
  3. 내 컴퓨터의 작업 공간 (work space) 에서 작업에 들어간 파일들을 git의 관리 하에 있는 상태로 올려줄 수 있음
    이 영역의 이름은 staging area 즉, staging area에 들어오지 않은 파일은 unstaged 혹은 untracked file이라고 말하며, staging area에 있는 파일들은 staged 된 파일이라고 말할 수 있음
  4. staging area에 들어온 파일들은 commit이 가능 commit을 하고 나면 내 remote repository에 push 해서 commit 기록을 remote 에도 남겨줄 수 있음
  5. push를 완료한 후 이제 remote의 원래 레파지토리에 pull request를 보내면 Remote Repository로 내가 수정한 코드를 업로드할 수 있음

Fork


우측 상단의 Fork 버튼을 누르면 유저닉네임이 나오고 나의 유저 네임을 클릭하면 Fork 작업이 완료

GitHub.com의 내 계정에 Fork해서 들어온 Hsource39 / git-project는 나의 Remote Repository (원격 저장소)입니다.
Hsource39가 git-project를 Fork한 시점부터 이 git-project는 Hsource39의 Repository에 복사본으로 저장된 것

Fork가 완료된 상태는 내 Remote Repository에 git-project라는 이름의 Repository가 들어 있는 상태

Git clone

Remote Repository에 있는 파일을 작업하기 위해서는 내 컴퓨터로 복사해오는 작업이 필요, 이 때 사용할 수 있는 명령어가 바로 clone
git clone 명령어 뒤에 Repository 주소를 입력하면 해당 Repository를 내 컴퓨터(Local Repository)로 가져와서 작업할 수 있음

명령어 : git clone <레파지토리 주소>

Git status

git status 명령어를 통해 staging area와 untracked files 목록에 어떤 것들이 있는지 확인가능

명령어 : git status

Git restore

처음 Clone을 받았던 상태로 되돌리는 방법
commit되지 않은 Local Repository의 변경 사항을 폐기할 수 있음
git restore <파일명> 명령어를 통해 Work space의 변경 사항을 폐기하고 다시 처음으로 clone 받아 왔던 상태
명령어 : git restore <파일명>

Git add

commit을 하기 위해서는 먼저 Git의 관리 하에 있는 영역으로 파일들을 옮겨 줘야 함
이 영역의 이름은 바로 staging area

명령어 : git add <파일명>, git add .(폴더 안의 모든 파일 옮기기)

Git commit

add를 이용해 파일이 staging area에 올라간 상태이기 때문에 commit이 가능한 파일이 됨
변경 사항을 저장하기 위해서는 commit을 활용
명령어 : Git commit -m ‘메시지’ (커밋할 내용의 코멘트 작성가능)

Staging area

Commit 하기 전 내용을 기록하는 장소

Local Repository의 다양한 영역
Untracked area는 Git이 관리하고 있지 않은 영역
Tracked area에 들어온 파일들만 Git의 관리를 받을 수 있으며, Tracked area 내부에서도 세 가지 상태로 나누어짐
그 세 가지 상태가 바로 Unmodified, Modified, Staged
Unmodified : 기존에 Commit했던 파일을 수정하지 않은 상태
Modified : 기존에 Commit했던 파일을 수정한 상태
Staged : commit이 가능한 상태입니다. 수정한 파일을 commit 하기 위해서는 staged area에 add 하는 작업이 필요

Github workflow

  1. 내 컴퓨터에서 생성한 디렉토리를 init 명령어를 통해 Git의 관리 하에 들어가게 만들어 줌
  2. 내 컴퓨터의 Git 디렉토리를 Remote Repository와 연결
  3. pair의 변경 사항과 나의 변경 사항을 Remote Repository를 통해서 공유

Git init

내 컴퓨터에서 내가 직접 만든 디렉토리를 Git의 관리 하에 들어가게 만들어 주는 명령어는 git init
기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용 가능
명령어 : git init (git Repository로 변경할 디렉토리에서 명령어 실행)

Git remote add

원격으로 관리하기 위해서는 Local Repository를 Remote Repository와 연결하는 작업이 필요

명령어 : git remote add origin <Repository 주소>

내 Github에 Repository를 하나 만든 뒤 그 Repository 주소를 git remote add origin 명령어 뒤에 입력함으로서 해당 Remote Repository와의 연결이 완료

remote add pair

remote add를 활용해서 다른 사람의 Repository 와 연결할 수 있음
Remote Repository를 연결함으로서 Github Repository를 함께 공유할 수 있음

명령어 : git remote add <상대이름> <Repository 주소> (상대 이름도 지정가능)

  • git remote -v
    현재의 Local Repository와 연결된 모든 Remote Repository 목록을 확인할 수 있음

Pull

git pull pair master 명령어를 통해 페어의 Remote Repository에 있는 작업 내용을 받아올 수 있음
받아오는 내용은 자동으로 병합(merge)

충돌 해결

같은 부분을 변경한 내용이 존재해 자동으로 병합 할 수 없는 경우 충돌이 일어날 수 있음
git status 를 통해 어떤 파일이 충돌하고 있는지 확인가능

충돌이 일어난 부분은 하나하나 직접 확인 후 수정가능

Accept Current Change : 내가 수정한 내용으로 파일에 반영

Accept Incoming Change : Remote Repository의 내용으로 파일에 반영

Accept Both Changes : 변경 사항 모두를 반영

수정을 마치면 병합 커밋(merge commit)을 생성해 주기 위해서 파일을 staging area로 추가해야함

충돌한 파일 수정을 완료했다면 Remote Repository에 업로드 하기 위해서 staging area에 파일을 추가

Merge commit은 자동으로 Commit 메시지가 생성
Remote Repository에 Push 한다면 다음 화면과 같이 Merge branch ‘master’ of 라는 commit 메시지가 기록


마지막으로..

터미널을 이용한 git작업은 처음해보는지라 신선했고 재밌었다. 이해하기 어려운 내용은 2,3번 반복해서 읽으면 이해에 도움이 된다.

profile
열심히 공부하자

0개의 댓글