이 글은 인프런의 "알잘딱깔센 GitHub" 강의를 듣고 정리한 내용입니다.
Git이란?
- Git은 소스코드 및 파일의 변경내역을 저장하는 분산 버전 관리 시스템이다.
- 리눅스 커널을 만든 리누스 토발즈에 의해 처음 만들어졌다.
- GitHub, Bitbucket, Gitlab 등의 Git 기반 버전 관리 호스팅 서비스들이 있다.
- <추천 서적>
- (무료, 공식) ProGit
- (유료) 팀 개발을 위한 Git, GitHub 시작하기
- <추천 강의>
- (무료) 지옥에서 온 깃
- (유료) 팀 개발을 위한 Git, GitHub 입문
- (유료, 심화) 제대로 파는 Git & GitHub - by 얄코
- 공식문서 : https://git-scm.com/docs
- help 명령어
git help -a : 상세히 명령어들 살펴보기
git 명령어 -h : 명령어 옵션 보기
git help 명령어 : web에서 해당 명령어 상세보기
- git에 기본 에디터 변경
git config --global core.editor "editor이름"
git config --global core.editor "code --wait" #VSC를 기본 에디터로 설정, wait을 해주어야 잠시 멈추었다가 VSC에 열린 code 수정 창을 닫으면 CLI가 지속 실행되는 프로세스로 진행된다.
- git에 기본 설정 변경
git config global -e #global 설정이다. 만질 때 유의해야한다.
- 명령어 연습 사이트
Git 브랜치 배우기
Git 설치하기
Windows에서 설치하기
https://git-scm.com/downloads 에 접속한다.
Windows를 클릭하면 아래와 같은 페이지가 열리는데 Click here to download를 클릭한다.
다운 받은 파일을 실행한다.
버전 확인 및 초기 설정
운영체제가 Windows인 경우에 맞춰서 설명하겠다.
git을 실행할 로컬 폴더에서 우클릭을 하고 Git Bash Here를 클릭한다.
git --version 명령어를 입력하면 다운 받은 Git 버전을 확인할 수 있다.
아래의 명령어는 Git을 사용하기 위해 사용자 정보를 설정하는 명령어다. 설정을 제대로 했는지 확인하기 위해서 list 명령어를 사용할 수 있다.
$ git config --global user.name "Soomin Lim"
$ git config --global user.email augustth@gmail.com
$ git config --list
user.name은 Github 아이디, user.email은 Github에 가입한 이메일로 설정하면 된다.
버전과 이름, 이메일을 확인하는 명령어와 실행 결과는 다음과 같다.
저장소 만들기 : git init
mkdir: 작업할 디렉토리를 만드는 리눅스 명령어
cd: 디렉토리를 이동하는 리눅스 명령어
git init: 현재 디렉토리를 Git 저장소로 만들어 원하는 디렉토리를 기준으로 버전관리를 한다.
git init 을 입력하면 해당 폴더 기준으로 .git(로컬 저장소)가 생성된다. 로컬 저장소에는 버전 정보, 원격 저장소 주소가 저장된다.
이때, 한 폴더에는 하나의 .git(로컬 저장소)을 가져야 한다. 그렇지 않을 경우 충돌이 발생할 수 있다.
리눅스 명령어
ls : 안에 있는 폴더, 파일을 모두 볼 수 있다.
ls -al : 안에 있는 폴더, 파일을 좀 더 상세하게 볼 수 있다.
First commit
커밋은 로컬저장소에 변경 내역을 올리는 것이다.
추가하고 커밋하기(add, commit)
- touch README.md : 파일 생성 리눅스 명령어
- 수정하거나 생성한 파일을 로컬 리포지토리에 먼저 add를 해주어야 한다.
- 커밋을 하면 로컬 리포지토리에 변경 사항을 저장한다.
커밋은 기능 단위
ex) 버튼을 만들었다 / 로그인 기능 구현
git이 관리할 대상의 파일 등록하기(add)
변경한 파일 목록 중 스테이지에 올리기 원하는 파일만 선택한다. 파일 전체를 올리고 싶은 경우에는 git add 뒤에 .을 입력합니다.
stage는 커밋할 파일들이 모여있는 곳이라고 생각하면 된다.
$ git add README.md // 지정 파일 올리기
$ git add . // 파일 전체 올리기
Untracked → Unmodified → Modefied → Staged
|—————— git add —————————→|
| ←——— git commit ——| (각각 상태에 대한 상세 설명은 5.2 챕터에 있다.)
커밋하면 다시 unmodified 상태로 되돌아간다.
버전 만들기 (commit)
git commit -m "저장 메세지를 입력해주세요"
커밋 = 버전 생성
상태 확인하는 방법 (status , diff , log)
파일 상태 확인하기 (status)
파일의 상태에 따라 Untracked 와 Tracked 로 분류된다.
- Untracked(관리 대상이 아님) : 파일 생성 후 한번도 git add하지 않은 상태
- Tracked(관리 대상임) : git이 관리하는 파일임을 의미
- Unmodified : 최근의 커밋과 비교했을 때 바뀐 내용이 없는 상태
- Modified : 최근 커밋과 비교했을 때 바뀐 내용이 있는 상태
- Staged : 파일이 수정되고 나서 스테이지 공간에 올라와 있는 상태이며, git add 후의 상태
변경사항 확인하기 (diff)
최근 commit한 내용과 현재 폴더의 변경 사항을 확인할 수 있다.
README.md를 수정한 후 git diff로 변경사항을 확인한 결과는 다음과 같다.
커밋(commit) 히스토리 조회하기 (log)
git log 명령어를 입력하면, 최근 커밋한 히스토리를 확인할 수 있다. log 명령어에 대한 더 자세한 내용은 부록의 ‘GitHub log 옵션’ 에서 살펴볼 것이다.
로그가 길 경우 q를 누르시면 밖으로 빠져나온다. j위, k는 아래로 이동할 수 있다.
저장소에 무시할 파일 설정하는 방법
무시할 파일 (gitignore) 추가 하기
1) .gitignore 사용하기
push 전 .gitignore 파일에 버전 관리에서 제외할 파일을 추가한다.
비밀번호 같은 공개되지 말아야 하는 정보나 굳이 공유할 필요가 없는 코드들을 원격 리포지토리에 올라가지 않도록 한다.
# a comment - 이 줄은 무시한다.
# 확장자가 .a인 파일 무시
*.a
# 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다.
!lib.a
# 루트 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않는다.
/TODO
# build/ 디렉토리에 있는 모든 파일은 무시한다.
build/
# `doc/notes.txt`같은 파일은 무시하고 doc/server/arch.txt같은 파일은 무시하지 않는다.
doc/*.txt
# `doc` 디렉토리 아래의 모든 .txt 파일을 무시한다.
doc/**/*.txt
2) .gitignore 자동 생성기 활용하기
gitignore.io 툴을 활용하여 .gitignore를 자동으로 생성할 수 있다.
위 링크에 접속 후 본인의 프로젝트에서 사용하는 운영체제, 개발 환경, 기술 스택을 작성하고, 생성된 전체 내용을 복사하고 .gitignore 파일에 추가한다.
'Programming > Git 과 GitHub' 카테고리의 다른 글
알잘딱깔센 GitHub - Ch 5. Fork (0) | 2022.09.18 |
---|---|
알잘딱깔센 GitHub - Ch 4. Branch (0) | 2022.09.18 |
알잘딱깔센 GitHub - Ch 3. GitHub (0) | 2022.09.18 |
알잘딱깔센 GitHub - Ch 1. Git & GitHub 기본 개념 (0) | 2022.09.12 |
알잘딱깔센 GitHub - Ch 0. 간단한 실습 (0) | 2022.09.12 |