Git과 Github

Coding Cat·2024년 7월 27일

Git과 Github차이

Git은 파일의 변경 사항을 시간에 따라 추적하는 버전 관리 시스템(VCS : Version Control System)이다. 이를 통해 이전 버전으로 되돌아가거나, 수정사항을 비교, 프로젝트에 여러 사람들과 함께 공동 작업이 가능하다.

GithubGit 저장소를 관리하는 클라우드 기반 호스팅 서비스이다. 로컬 파일을 Github 클라우드에 Push(업로드)하여 서로 다른 위치에 있는 여러 사용자가 작업할 수 있다.

중요한 용어

1.저장소 (Repository, 'Repo/레포'라고 현업에서 부른다.)

  • 저장소는 파일과 그들의 수정 기록의 모음이다.
  • 로컬 저장소는 현재 작업하는 장소에, 원격 저장소는 서버에 호스팅된다.

2.커밋(Commit)

  • 커밋은 프로젝트의 특정 시점의 스냅샷이다.
  • 저장하려는 변경 사항의 집합을 나타낸다.

3.브랜치(Branch)

  • Git은 브랜치를 사용하여 다양한 부분에서 개발자가 동시에 작업을 할 수 있게 한다.
  • 주 브랜치는 보통 master 또는 main이라 불리며, 각 개발자들은 작업을 위한 특정(개별) 브랜치를 만든다.

4.머지(Merge)

  • 머지는 다른 브랜치에서 변경사항을 통합하는 것이다.
  • 기능이나 버그 수정을 완료한 후에는 해당 브랜치를 주 머지한다.

5.풀 리퀘스트(Pull Request)

  • Git 기반의 업무방식에는 '풀 리퀘스트(Pull Request)'는 주 브랜치에 변경 사항을 제안하는 방법이다.
  • 다른 사람들이 변경 사항을 검토한 후에 병합(Merge)하기 전에 논의하며 코드를 리뷰할 수 있다.

개발PM이 알려주는 테크상식! Git과 Github란?

GitHub Repository에 들어가야 할 파일

README.md

  • GitHub는 개발자의 SNS라고 불릴 정도로 다양한 종류의 오픈소스 프로젝트가 공유되어 있다.
  • 오픈소스 프로젝트에 들어가면, 가장 먼저 확인할 수 있는 정보다.
  • 기본적인 마크다운 사용법을 잘 숙지하고 있으면 간단한 소개 페이지처럼 제작할 수 있다.
  • README.md 파일을 적는 양식은 따로 존재하지 않지만, 대체로 어떻게 하면 해당 오픈소스를 활용할 수 있는지에 대한 정보가 작성되어 있다.

gitignore

  • gitignore dotfile은 git으로 관리하지 않는 파일 모음이다.
  • 여기에는 개인이 따로 관리해야 하는 중요한 secret token이나, 다른 동료와 공유할 필요가 없는 설정 파일, 그 외 공유할 필요 없는 파일을 기록하면 git이 이를 파악하지 않고, push 할 때도 GitHub Repository에 push되지 않는다.

LICENSE

  • 해당 코드의 라이센스를 표기한다.
  • GitHub에 public하게 공개된 리포지토리도 라이센스에 따라서 사용을 할 수도 있고, 하지 못 할 수도 있으니 사용할 때 라이센스를 잘 보고 사용해야 한다.
  • 회사에서 코드는 private으로 관리하고, 외부에 공개하지 않아 라이센스를 따로 표기하지 않기도 한다.
  • but, 모종의 이유로 회사에서 작성하는 코드가 public으로 공개된다면, LICENSE를 명확하게 표기해야 한다.

GitHub Repository 들어가야할 파일 및 기능

자주 사용하는 Git 명령어

분류명령어내용 설명
<새로운 저장소 생성>git init.git 하위 디렉토리 생성 (폴더를 만든 후, 그 안에서 명령 실행 => 새로운 git 저장소 생성)
<저장소 복제/다운로드(clone)>git clone <https... URL>기존 소스 코드 다운로드/복제
git clone /로컬/저장소/경로로컬 저장소 복제
git clone 사용자명@호스트:/원격/저장소/경로원격 서버 저장소 복제
<추가 및 확정(commit)>git add <파일명>커밋에 담길 파일의 변경 사항을 포함 (인덱스에 추가된 상태)
git add -A커밋에 파일의 변경 사항을 한 번에 모두 포함
git commit -m "커밋 메시지"커밋 생성 (실제 변경사항 확정)
git status파일 상태 확인
가지(branch)치기 작업git branch브랜치 목록
git branch <브랜치이름>새 브랜치 생성 (local로 만듦)
git checkout -b <브랜치이름>브랜치 생성 & 이동
git checkout mastermaster branch로 되돌아 옴
git branch -d <브랜치이름>브랜치 삭제
git push origin <브랜치이름>만든 브랜치를 원격 서버에 전송
git push -u <remote> <브랜치이름>새 브랜치를 원격 저장소로 push
git pull <remote> <브랜치이름>원격에 저장된 git 프로젝트의 현재 상태를 다운받고 + 현재 위치한 브랜치로 병합
변경 사항 발행 (push)git push origin master변경사항 원격 서버에 업로드
git push <remote> <브랜치이름>커밋을 원격 서버에 업로드
git push -u <remote> <브랜치이름>커밋을 원격 서버에 업로드
git remote add origin <등록된 원격 서버 주소>클라우드 주소 등록 및 발행 (git에게 새로운 원격 서버 주소 알림)
git remote remove <등록된 클라우드 주소>클라우드 주소 삭제
갱신 및 병합 (merge)git pull원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고 (fetch) 병합 (merge) 됨
git merge <다른 브랜치이름>현재 브랜치에 다른 브랜치의 수정사항 병합
git add <파일명>각 파일을 병합할 수 있음
git diff <브랜치이름>..<다른 브랜치이름>변경 내용 merge 전에 바뀐 내용을 비교할 수 있음
태그 (tag) 작업git log현재 위치한 브랜치 커밋 내용 확인 및 식별자 부여됨
로컬 변경사항 return 작업git checkout -- <파일명>로컬의 변경 사항을 변경 전으로 되돌림
git fetch origin원격에 저장된 프로젝트의 현 상태를 다운로드

Git 설정해보기

$ git config --global user.name datalater

$ git config --global user.email the7mincheol@gmail.com

전체 config 리스트 확인(시용자 정보 확인)

git config --list

git config 설정된 계정 삭제하기

# global
git config --unset --global user.name
git config --unset --global user.email

# local
git config --unset user.name
git config --unset user.email

왕초보를 위한 Git명령어

.gitignore

  • 프로젝트 작업시 로컬 환경의 정보나 빌드 정보등 원격 저장소에 관리하지 말아야되는 파일들에 대해서 지정하여 원격 저장소에 실수로 올라가지 않도록 관리하는 파일
  • 정의한 정보들에 해당하는 파일들에 대하여 git track하지 않도록 설정하는 역할을 한다.

.gitignore 파일 생성

  • .gitignore 파일은 프로젝트 최상위 위치에 존재해야한다.
  • 아래의 패턴을 활용하여 git이 untracked할 파일 또는 디렉토리등을 정의하여 파일을 생성한다.

문법

# 확장자가 .js 인 파일은 무시
*.js

# .js 파일들은 모두 무시되지만, test.js만은 무시하지 않음
!test.js

# 현재 디렉토리에 있는 /test.js파일은 무시되지만,
# subDir/test.js 같이 특정 디렉토리 하위에 있는 test.js는 무시되지 않음
/test.js

# node_modules/ 디렉토리에 있는 모든 파일을 무시
node_modules/

# src/ 하위의 .js파일만 무시
src/*.js

# src/ 하위에 존재하는 모든 디렉토리의 .txt 파일을 무시
src/**/*.txt

# 현재 디렉토리와 그 하위 디렉토리 내에 존재하는 모든 .js 파일을 무시
/**/*.js

# 현재 디렉토리 내에 존재하는 모든 .js .ts 파일 무시
/*.{js, ts}

# 현재 디렉토리 내에 있는 ex1.js ex2.js ex3.js 파일 무시
/ex[1-3].js

적용하기

## 현재 레포지토리의 캐시를 모두 삭제한다.
git rm -r --cached .

## .gitignore에 넣은 파일 목록들을 제외한, 모든 파일들을 다시 추적(Track)하도록 설정
git add .

git status

## 커밋 메세지
git commit -m "Apply .gitignore"

.gitignore 파일을 만들어 주는 사이트

profile
나의 archive

0개의 댓글