분산 버전 관리 툴인 Git을 관리해주는 웹 호스팅 서비스
Git은 로컬 저장소(내 컴퓨터)와 원격 저장소(서버 컴퓨터)로 나뉨.
내 컴퓨터에서 작성한 프로젝트를 원격 저장소에 저장해두고, 만약 내 컴퓨터의 프로젝트가 손상되거나 다른 컴퓨터에서 코드를 가져오고 싶을 때는 원격 저장소에서 바로 가져올 수 있다. 이때, 코드 뿐만 아니라 코드의 변경 내역까지 모두 가져올 수 있기 때문에 Git이 "버전 관리 도구"라고 불림.
💌 정리
레파지토리 페이지에서 main으로 branch 바꾸고 save 시 swerving을 함.
👉 index.html은 기본
다운 받은 Git 버전을 확인할 수 있음
$ git --version
git version 2.19.1
Git을 사용하기 위해 사용자 정보를 설정
$ git config --global user.name "hojun.lee"
$ git config --global user.email email@example.com
$ mkdir git-test
$ cd git-test
$ git init
git init
을 입력하면 해당 폴더 기준으로 .git(로컬 저장소)가 생성. 로컬 저장소에는 버전 정보, 원격 저장소 주소가 저장.💡 이때, 한 폴더에는 하나의 .git(로컬 저장소)을 가져야 합니다. 그렇지 않을 경우 충돌이 발생할 수 있음.
$ touch README.md
$ git add README.md
$ git commit -m "first commit"
변경한 파일 목록 중 스테이지에 올리기 원하는 파일만 선택합니다. 파일 전체를 올리고 싶은 경우에는 git add
뒤에 .
을 입력합니다(git add .
). 이 때, 스페이스 바가 한 칸 들어간 다는 점을 잊지마세요!
$ git add README.md // 지정 파일 올리기
$ git add . // 파일 전체 올리기
💡 Untracked → Unmodified → Modefied → Staged
|—————— git add ———————→|
| ←——— git commit ——|
(각각 상태에 대한 상세 설명은 5.2 챕터에 있습니다.)
$ git commit -m "저장 메세지를 입력해주세요"
status
, diff
, log
)status
)$ git status
파일의 상태에 따라 Untracked 와 Tracked 로 분류됩니다.
1) Untracked(관리 대상이 아님) : 파일 생성 후 한번도 git add
하지 않은 상태
2) Tracked(관리 대상임) : git이 관리하는 파일임을 의미.
Unmodified
: 최근의 커밋과 비교했을 때 바뀐 내용이 없는 상태Modified
: 최근 커밋과 비교했을 때 바뀐 내용이 있는 상태Staged
: 파일이 수정되고 나서 스테이지 공간에 올라와 있는 상태이며, git add
후의 상태diff
)최근 commit한 내용과 현재 폴더의 변경 사항을 확인할 수 있음.
$ git diff
log
)$ git log
위와 같이 git log
명령어를 입력하면, 최근 커밋한 히스토리를 확인할 수 있음.
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
파일을 직접 생성해야 하는 경우가 종종 있음. 이 때, 라이브러리와 프레임워크를 사용하는 경우에는 어떤 파일을 깃 버전 관리에서 제외 시켜야 하는지(.gitignore
파일에 넣어야 되는지) 헷갈리는 경우가 있음.이럴 때 편하게 사용할 수 있는 툴인 gitingnore.io 사용
.gitignore
사용 방법 1) 위 링크에 접속 후 본인의 프로젝트에서 사용하는 운영체제, 개발 환경, 기술 스택을 작성합니다. 2) 생성
버튼을 눌러 내용을 생성한 후, 전체 내용을 복사하고 .gitignore
파일에 추가합니다.mkdir
명령어) 생성한 디렉토리로 이동(cd
명령어) $ mkdir filename
$ cd filename
$ git clone https://github.com/id/clone-filename.git .
.을 붙이면 컴퓨터 현재 위치에 파일이 아닌 파일 안의 내용들을 가지고 온다
clone 하기 전
clone 한 후
💡 클론 시 점(.)을 찍는 이유는 현재 폴더에 클론 받기 위해서 입니다. 만약, 점(.)을 찍지 않을 경우 새 폴더를 생성합니다.
원격 저장소에 업데이트 된 데이터를 가져오고 병합할 때 사용
$ git pull origin main
pull 하기 전
pull 한 후
이미지 파일을 다운로드 받은 곳에 올리고 아래 명령어를 입력
$ git status
$ git add .
$ git commit -m "추가 작업 내역입니다."
$ git push origin main
push가 완료되면 GitHub에 잘 올라갔는지 확인. push를 하게 되면 로컬 저장소에 있는 소스코드 또는 파일들이 GitHub에 올라가게 됨.
GUI 환경에서 히스토리를 확인할 수 있음. 아래처럼 누가 어떤 소스코드를 수정했는지 내역 확인, 되돌리기도 가능
push 할 때 다음과 같은 에러가 뜰 수 있음. 2021년 8월 13일부터 비밀번호 인증 지원을 사용하지 못하도록 보안 업데이트가 되었기 때문.
remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.
위와 같은 경우, 비밀번호 대신 token 이나 ssh 두가지 중 하나의 인증을 사용해야 함.
비밀번호를 입력한 후, 토큰을 생성합니다. 토큰 이름과 허가할 권한을 체크한 후에 Generate token을 클릭합니다.
생성된 토큰을 복사하고 필요한 곳에 사용합니다. 이때 토큰은 한번만 보여지기 때문에 안전한 곳에 보관합니다. 발급된 토큰은 부여된 권한만 볼 수 있습니다. 재발급을 원할 경우에는 재발급하고자 하는 토큰을 클릭 후, Regenerate token을 클릭하면 토큰이 재생성 됩니다.
토큰 발급이 완료되면 운영체제에 맞게 적용시킵니다.
ssh key를 생성합니다. GitHub 계정 생성 시 사용한 이메일과 비밀번호를 입력합니다.
$ ssh-keygen -t rsa -C "email@example.com"
Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): **Enter를 누릅니다.**
Enter passphrase (empty for no passphrase): **github password**
Enter same passphrase again: **github password**
공개키를 가져옵니다. 공개키가 출력되면 복사합니다.
$ cat ~/.ssh/id_rsa.pub
좌측 메뉴에 SSH and GPG keys > New SSH key를 클릭하여 SSH Key 이름과 Key에 복사한 공개키를 붙여넣습니다.
SSH Key 공개키가 잘 등록된 것을 확인할 수 있습니다.