[Git] 기초

윤태영 | Taeyoung Yoon·2021년 11월 21일
0

TIL (Today I Learned)

목록 보기
11/53
post-thumbnail

Git은 버전 관리 시스템 중 가장 많이 쓰이며 협업에 유용한 도구이다. 오픈소스 생태계에 기여하는 개발자가 되보자.

버전 관리를 사용하는 이유

  • 변경 이력을 저장할 수 있다.
  • 이전 버전으로 돌아갈 수 있다.
  • 어떤 변경 사항이 발생했는지 알아보기 쉽다. (누가 어떤 사항이 변경되었는지 코멘트 작성 필수)

Git으로 관리되는 파일은
Github, GitLab, Bitbucket 등의 여러가지 원격 저장소를 이용해 백업과 협업이 가능하다.

Git?

분산형 버전 관리 시스템!
특정 시점에 생성된 백업 복사본 -> 스냅샷
특정 시점에 생성된 백업 복사본 만드는 작업 -> commit


이렇게 어떤부분이 바뀌었는지 한눈에 확인 가능!

Github?

Git repository를 관리할 수 있는 클라우드 기반 서비스!

react같은 경우도 오픈소스로 공유가 되어있고 우리도 기여(conrtibute)할 수 있다.


Git repository는 Remote RepositoryLocal Repository 두 종류의 저장소를 제공한다.

Git 설치

터미널 -> sudo apt install git 입력 -> git --version 입력 (버전확인)

Git 환경설정

내 정보를 앞으로 진행할 commit 내역에 기록
$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "나의 이메일 주소"

  • --global 옵션은 사용자 홈에 저장되므로 처음에 한번만 입력해도 된다. (프로젝트마다 변경하고 싶으면 빼고 명령 실행)

nano에디터 등록
$ git config --global core.editor nano
기본 텍스트 에디터는 vi이다.

Git 최초 설정 reference 링크

SSH 등록

SSH?

'Secure SHell'의 줄임말. 보안이 강화된 shell접속이라는 뜻.
CLI(ex.터미널)에서 다른 PC에 접속하거나 요청할때 사용.
비대칭키를 이용해 사용자 인증한다.

ssh-keygen SSH키 생성

ssh경로(폴더?)에 id_rsa(개인키 private key) 와 id_rsa.pub(공개키 public key)를 생성한다.

cat ~/.ssh/id_rsa.pub public key 출력

복사해서 github에 로그인 -> 내 프로필 settings -> SSH and GPG keys -> New SSH Key -> 붙여넣기 -> Add SSH Key

이제 git clone "SSH주소" 할 수 있다.

안되면 CLI 사용을 위한 인증 과정을 거치자

homebrew 설치후
$ brew install gh GitHub CLI 설치

gh auth login 로그인 시도

화살표키를 사용해 다음 항목들을 선택 후 enter키

? What accout do you want to log into? GitHub.com
? What is your preferred protocol for Git Operations? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser

one-time code가 뜨는데 브라우저에 뜬 github창에 입력해주면 된다.
실수로 github창을 닫았다면 https://github.com/login/device 에 입력

Git 관리방법

어떤것을어떻게하면
Remote Repository-------Fork------->나의 Romote Repository
나의 Romote Repository------Clone------>내컴퓨터 Local Repository
내컴퓨터 workspace에서 작업한것-------Add------->내컴퓨터 Staging Area
내컴퓨터 Staging Area-----Commit----->내컴퓨터 Local Repository 에 기록됨
commit안된 변경사항Restore폐기 (clone했을때로 돌아감)
내컴퓨터 Local Repository Commit기록-------Push------>Remote Repository
나의 commit된 코드 변경 요청---Pull request--->Remote Repository 관리자
Remote Repository 변경사항--------Pull------->내컴퓨터 Local Repository

git commit -m "커밋 메시지" -m 옵션을 통해 코멘트를 작성할 수 있다.
git reset HEAD^ 제일 최신 Commit을 취소
git log 현재까지 Commit된 로그 확인

Git 구조
Remote Repository - 클라우드 저장소
-> Local Repository - 내컴퓨터 저장소
-> Staging Area - 수정한 소스코드를 담는 곳
-> Workspace - 소스코드를 작업하는 영역

Git의 세가지 영역

설명
Untracked areagit이 관리하고 있지 않은 영역
tracked areagit이 관리하고 있는 영역
Unmodified기존 Commit 했던 파일을 수정하지 않은 상태
Modified기존 Commit 했던 파일을 수정한 상태
StagedCommit이 가능한 상태

내 컴퓨터에서 하던 작업을 Git 으로

git init 현재 디렉토리를 Local Repository로 변환
git remote add origin <나의 Repository 주소> Local Repository를 나의 Remote Repository에 연결
git remote add <지어줄 상대방 Repository명> <상대방 Repository 주소> Local Repository를 상대방 Remote Repository에 연결
git remote -v Local Repository와 연결된 모든 Remote Repository 목록 출력

git pull <Repository명(shortname)> <branch> Remote Repository의 해당 branch 내용을 Local Repository로 가져옴 (자동으로 merge됨)

상대방과 동일한 라인을 수정한 파일이 있는 등 Merge conflict가 발생해서 Automatic merge에 실패하면
git status 어떤 파일이 충돌하고 있는지 확인

0개의 댓글