[GIT] GIT, 시작하기, 활용하기

Coastby·2022년 8월 30일
0

기타

목록 보기
1/12

참고 : https://goddaehee.tistory.com/91
https://kotlinworld.com/285
https://hackmd.io/@oW_dDxdsRoSpl0M64Tfg2g/ByfwpNJ-K
https://www.lainyzine.com/ko/article/git-clone-command/
https://smartbase.tistory.com/69

1. 용어

1-1. Git

버전 관리 시스템 (형상 관리 도구, configuration management tool) 중 하나이다. 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개 소프트웨어이다.

  • 이전의 SVN과 다른 점은 분산형 관리 시스템이라는 것이다. 소스코드를 여러 개발 PC와 저장소에 분산해서 저장한다. 그래서 중앙 서버에 장애가 발생해도 로컬 저장소에 commit을 할 수 있으며, 로컬 저장소들을 이용하여 저장소의 복원도 가능하다. 사본을 로컬에서 관리하기 때문에 빠르다.
  • 소스코드를 주고 받을 필요 없이 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
  • 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식 (merge)으로 개발을 진행할 수 있다.
  • 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가도 복원할 수 있다.
  • 개인 프로젝트에서도 git을 통해 버전 관리를 하면 체계적인 개발이 가능하다. 프로그램이나 패치를 배포하는 과정도 간단해진다. (pull을 통한 업데이트, patch 파일 배포)

1-2. GitHub

협업하고 있는 코드를 저장할 서버가 필요하다. 버전 관리 시스템을 지원하는 웹호스팅 서비스의 기능으로, push, pull request같은 이벤트에 반응하여 자동으로 작업 (배포 등)을 실행하게 할 수 있다.

1-3. 기타

  • Repository : 저장소를 의미하며, 히스토리, 태그, 소스의 브랜치 혹은 브랜치에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인할 수 있다.
  • Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점
  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치
  • Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업
  • Head : 현재 작업중인 branch
  • Branch : 가지 또는 분기점을 의미하며, 작업을 할 때에 현재 상태를 복사하여 branch에서 작업을 한 후에 완전하다 싶을 때 merge를 하여 작업을 한다.
  • Merge : 다른 branch의 내용을 현재 branch로 가져와 합치는 작업

2. git 시작하기 (MAC)

2-1. Homebrew 설치 및 실행

git의 최신 버전을 다운받기 위해 Homebrew를 이용한다.

Homebrew는?
맥에서 '다운로드 패키지'를 관리할 수 있는 툴이다.
'brew install 프로그램이름'
을 입력하면 자동으로 다운로드, 설치를 해준다.

최신 버전을 설치하기 위해서 아래 공식 홈페이지에서 제공하는 명령어를 terminal에 입력한다.

https://brew.sh/index

⭐️ 맥북의 경우 OS를 최신버전으로 업데이트를 꼭 해야하는데, 이게 제일 오래걸린다.

Homebrew가 설치되었는지 명령어로 확인해본다.

brew help

2-2. git 설치

git 설치 명령어

brew install git

설치가 제대로 되었다면 버전확인 시 버전이 나온다.

$ git --version
git version 2.37.2

2-3. git 기초 설정

git에서 커밋할 때 사용할 이름과 이메일을 지정할 수 있다. 이때 커밋에 기록된 이메일은 GitHub의 사용자를 연결할 때도 사용되기 때문에 GitHub에 회원가입을 하였다면 같은 이메일을 사용한다.

로컬에서 기본값으로 사용할 git 사용자 이름과 이메일 설정

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

commit한 사람 알아보는 법

$ git commit -m'Initiazile repsitory'
[master (root-commit) 7c4f2a2] Initiazile repsitory
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore

커밋을 하고 보이는 커밋 정보 7c4f2a2를 확인한다.

$ git show 7c4f2a2
commit 7c4f2a27ac78f24fe65a2aa906e7c552e97d5c84
Author: Your Name <you@example.com>
Date:   Sat May 15 17:14:44 2021 +0900

Author에 설정한 이름과 이메일이 남는다.

현재 사용될 사용자 정보 확인

$ git config --list
$ git config user.name
$ git config user.email

사용자 정보 삭제

# 전역 설정을 삭제
$ git config --global --unset user.name
$ git config --global --unset user.email

# 개별 저장소의 설정을 삭제
$ git config --unset user.name
$ git config --unset user.email

3. git 활용

3-1. git 저장소 초기화

일반적으로 프로젝트 단위로 git 저장소를 만들어 사용하며, 소스 코드 파일을 git을 관리하기 위해서는 git을 초기화해야한다. (GitHub 상의 오픈소스를 개발하거나, 이미 만들어져 있는 프로젝트에 참여할 때는 git clone으로 원격 저장소를 로컬에 복제해와서 사용한다.)

저장소로 사용하고자하는 디렉토리로 이동한 다음 git init을 인자없이 실행한다.
(VS code 등 IDE의 터미널에서 실행할 경우 terminal > new terminal을 클릭하면 해당 프로젝트 폴더에서 시작해서 디렉토리로 이동할 필요가 없다.)

$git init

깃 저장소 상태 및 로그 확인하기

$ git status
$ git log

3-2. 처음 commit하기

처음 커밋은 루트 커밋으로 특별한 취급을 받으며 rebase 하는 방법이나 git add를 되돌리는 법도 다르다. 따라서 git 저장소에서 필수적으로 사용하는 .gitignore 빈 파일을 처음 커밋해주는 경우가 일반적이다.

touch : 뒤에 파일이름을 입력하면 그 파일의 타임스탬프를 현재시간으로 업데이트 / 입력한 파일이 없을 때는 새로운 빈 파일을 생성.

$ touch .gitignore

.gitignore을 add 하고 커밋 내용을 입력한다.

$ git add .gitignore
$ git commit -m "initialize git repository"
[master (최상위-커밋) b21049a] initialize git repository
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore

3-3. 원격 저장소에 push하기

GitHub에 새 repository 만들기

GitHub에 새로운 repository를 만든다. 제목을 입력하고 나머지는 체크 해제한다.

세가지 방법이 나오는데 두 번째인 초기화가 되어있는 저장소를 push하는 방법을 이용한다.

GitHub의 default branch가 main이 되면서 이를

1) 현재 master인 브랜치 이름을 main으로 바꾸거나
2) master로 푸시하고 GitHub 설정에서 기본 브랜치 설정을 master로 바꾸는 방법

으로 대처한다. 위의 그림처럼 홈페이지에서는 1)의 방법을 안내하고 있다. (하지만 그냥 origin master로 해도 기본 브랜치가 master로 되어있다. 이후에 바뀐건지 이러면 안되는건지는 더 찾아봐야 하겠다..)
1) 현재 브랜치가 master고 해당 브랜치 이름을 main으로 바꾼다.

git branch -M main

하나 이상의 커밋을 만든 후에 현재 브랜치의 변경 사항을 GitHub main 브랜치에 푸시하고 GitHub main 브랜치를 따라가도록 만들기 위해서 git push -u 옵션을 사용한다. -u는 upstream의 약자로 대상 브랜치를 현재 로컬 브랜치의 업스트림 (로컬 브랜치가 따라가는 브랜치)로 만드는 명령어이다.

git push -u origin main

2) GitHub 의 기본 브랜치를 master로 바꾸기
하나 이상으 커밋을 만들고 master로 푸시한다.

git push origin master

github repository - settings - branches - default branch에서 switch to another branch로 master로 변경한다.

push하기

git remote add origin https://github.com/coastby/prac.git
#원격 저장소 확인
# 연결
git remote -v
git branch -M main
git push -u origin main
.
.
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

GitHub에서 새로고침해서 확인하면 해당 파일이 들어와 있다.

3-4. 추가/수정하기

추가하기

다 올려도 업데이트가 된다.

git add .
git commit -m "first commit"
git push origin main

git에서 받아오기

git repository에서 주소 복사하기 (HTTPS형식, SSH 형식으로 받을 수 있다)
아래 코드를 터미널에서 입력한다.
DIR : 저장소를 로컬에 복제할 위치이며 생략가능하다. 폴더이름을 입력하면 새폴더가 생성되고 그 안에 코드가 다운로드된다. 생략하면 깃허브 프로젝트 이름으로 폴더가 자동으로 생기고 그 안에 코드가 다운로드된다.

git clone (복사한주소) (DIR)

코드를 연다.

cd (DIR)
code .

코드를 수정하고 위의 추가하기 방법으로 다시 올려준다.

다시 올리기

협업이라 하면 바로 마스터 또는 메인 브랜치로 올리면 안되고, 브랜치를 만든 후 거기에 푸시를 해준다.

git checkout -b (브랜치이름)

git add .
git status
git commit -m "commit 내용"
git push origin (브랜치이름)

마스터 브랜치 소스 가져오기

git pull origin master
profile
훈이야 화이팅

0개의 댓글