Carambola Dev
깃 & 깃허브 도서 요약 본문
깃의 기능
버전관리(수정할 때마다 언제 수정하고 어떤 것을 변경했는지 기록)
백업(원격 저장소에 저장)
협업(누가 어느 부분 수정했는지 기록 남음)
리눅스 명령 연습
~: 홈 디렉터리에 있다는 의미
pwd: 현재 위치의 경로
ls 명령: 현재 디렉터리에 있는 파일/디렉터리 확인, -l 붙이면 상세 정보 표시, -a 붙이면 숨긴 파일/디렉터리 표시, -t 붙이면 시간 순, -r 붙이면 정렬 거꾸로
cd .. 명령: 상위 디렉터리로 이동
cd ~ 명령: 홈 디렉터리로 돌아감
./: 현재 작업 중인 디렉터리라는 뜻
mkdir 명령: 현재 디렉터리 내에 하위 디렉터리 만들기
rm 명령: 디렉터리 삭제
vim
리눅스의 기본 편집기, 터미널에서 사용 가능
vim + 파일이름: 새로운 문서 만듦/이미 있으면 파일 열기
입력모드: 텍스트 입력/수정, ex 모드에서 i(insert) 또는 a(add) 눌러서
ex 모드: 저장/종료, 입력 모드에서 esc 눌러서
:wq 명령: ex모드에서 저장하고 종료하기, w는 저장, q는 종료, 엔터 누르면 터미널 창로 돌아감
:q! 명령: 문서 저장 안 하고 편집기 종료, 확장자 .swp인 임시 파일 생김
cat + 파일이름: 파일 내용 확인
깃 저장소 만들기
버젼: 깃에서 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 스냅샷으로 찍어서 저장하는 것
git init 명령: 깃을 사용할 수 있도록 디렉터리 초기화, 새로운 디렉터리 만들고 저장소 초기화까지 한꺼번에도 가능
.git 디렉터리: 깃을 사용하면서 버전이 저장될 저장소(repository)
버젼 만들기
작업 트리: 파일 수정/저장 등의 작업을 하는 디렉터리, 작업 디렉터리
스테이지: 버전으로 만들 파일이 대기하는 곳
저장소(repository): 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
커밋: 새로운 버전이 생성되면서 스테이지에 대기하던 파일이 모두 저장소에 저장됨
status 명령: 깃 상태 확인, (on branch master: master 브랜치에 있다는 뜻, No commits yet: 아직 커밋한 파일 없음, nothing to commit: 아직 커밋할 파일 없음)
untracked files: 아직 한번도 버젼 관리하지 않은 파일
git add + 파일명: 스테이지에 수정한 파일 추가하기, 스테이징이라고 표현
git add . 명령: 현재 저장소에서 수정된 파일 한꺼번에 스테이지에 올리기
git commit -m "커밋 메시지": 깃에서 파일 커밋
git log 명령: 저장소에 저장된 버전 확인하기, 최신 커밋 알려줌
git commit -am "커밋 메시지": 스테이지에 올리고 커밋까지 한 번에 처리, 이미 커밋한 적 있는 파일만 가능
git hash/commit has: 커밋을 구별하는 아이디
(HEAD => master): 이 버젼이 가장 최신이라는 표시
커밋 로그: git log 명령을 입력했을 때 나오는 정보
git diff 명령어: 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교 or 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교
git log --stat 명령: 저장소에 저장된 버전 확인하고 커밋에 관련된 파일까지 살펴보기, q 누르면 로그 화면 빠져나옴
.gitignore 파일: 버전 관리하지 않을 파일 또는 디렉터리 이름이나 파일 확장자를 입력하면 버전 관리에서 제외 가능
git commit --amend 명령: 가장 최근의 커밋 메시지 수정
git checkout -- 파일명: 작업트리의 변경 사항(파일의 수정) 취소하기
git reset HEAD 파일명: 수정된 파일을 스테이징했을 때 스테이징 취소하기
git reset HEAD^: 수정된 파일을 스테이징하고 커밋까지 했을 때 가장 마지막에 한 커밋 취소하기
git reset --soft HEAD^: 최근 커밋을 하기 전 상태로 작업 트리 되돌리기
git reset --mixed HEAD^: 최근 커밋과 스테이징 하기 전 상태로 작업 트리 되돌리기(디폴트)
git reset --hard HEAD^: 최근 커밋과 스테이징, 파일 수정 전 상태로 작업 트리 되돌리기, 복구 불가
git reset + 커밋해시: 특정 커밋으로 되돌리기
git revert + 커밋해시: 커밋 삭제하지 않고 되돌리기
깃과 브랜치
master 브랜치: 저장소를 만들면 기본적으로 만들어지는 브랜치, 사용자가 커밋할 때마다 master 브랜치가 최신 커밋 가리킴, 커밋을 가리키는 포인터
분기(branch)하기: 새 브랜치 만들기, 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정/새로운 기능을 구현할 파일 만들기
브랜치: 브랜치에 담긴 커밋 중에 가장 최근의 커밋 가리킴
병합(merge)하기: 분기했던 브랜치를 master 브랜치에 합치기
HEAD: 여러 브랜치 중에서 현재 작업 중인 브랜치 가리킴, 기본적으로 master 브랜치 가리킴
git branch: 깃에서 브랜치를 새로 만들거나 확인하는 명령
git branch + 브랜치 이름: 새로운 브랜치 만들기, 브랜치 이름은 띄워쓰기 없이
git log --oneline: 한 줄에 한 커밋씩 나타내줌
git log --branches: 각 브랜치의 커밋 볼 수 있음
git log --graph: 그래프 형태로 보기
git checkout: 다른 브랜치로 이동
git log + 브랜치 이름..브랜치 이름: 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치와 비교
서로 다른 파일 병합하기
git merge + 가져올 브랜치 이름: 브랜치 병합, master 브랜치로 체크아웃해야함
git merge + 가져올 브랜치 이름 + --no-edit: 커밋 메시지 편집기 창 열지 않기
git merge + 가져올 브랜치 이름 + --edit: 커밋 메시지 편집기 창 열리게
같은 문서의 다른 위치를 수정했을 때 병합하기
브랜치의 수정 내용이 자연스럽게 하나의 파일에 합쳐짐
같은 문서의 같은 위치를 수정했을 때 병합하기
브랜치 충돌 발생, git merge 명령 실행했을 때 충돌이 발생했다는 메시지 뜸, 가로줄(=====)을 가운데로 해서 위에는 현재 브랜치에서 수정한 내용이 나오고 아래에는 병합할 브랜치에서 수정한 내용이 나옴
git branch -d + 브랜치 이름: 브랜치 삭제하기, master 브랜치로 체크아웃하고 해야 함, 삭제한 브랜치는 같은 이름으로 다시 브랜치를 만들면 예전에 작업했던 내용이 그대로 나타남
git reset + 커밋 해시: 원하는 다른 브랜치에 있는 커밋을 최신 커밋으로 지정하기
git stash: 아직 커밋하지 않고 작업 중인 파일 감춰두기
git stash list: stash 목록, 가장 최근에 감춘 걸 위에다 쌓음(스택)
git stash pop: stash 목록에서 가장 최근 항목 되돌림
git stash apply: stash 목록에서 가장 최근 항목을 되돌리지만 저장했던 내용 그대로 남겨둠
git stash drop: stash 목록에서 가장 최근 항목 삭제
깃허브로 백업하기
지역 저장소: 컴퓨터에서 작업하고 그 컴퓨터에 커밋 저장한 곳
원격 저장소(remote): 지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소
origin: 원격 저장소의 기본 브랜치
git remote add origin + 깃허브 저장소 주소: 원격 저장소에 origin(깃허브 저장소 주소)을 추가하겠다고 깃에게 알려줌
git remote -v: 원격 저장소에 제대로 연결됐는지 확인
git push -u origin master: 지역 저장소의 커밋을 원격 저장소로 보내기(push), -u 옵션은 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하기 위한 것으로 처음 한 번만 사용
git push: 처음 한 번 이후로 다시 파일 푸시할 때
git pull + origin master: origin의 내용을 master 브랜치로 가져옴
SSH(Secure Shell): 보안이 강화된 안전한 방법으로 정보를 교환하는 방식
SSH 원격 접속: private key와 public key를 사용해 현재 사용하고 있는 기기를 깃허브에 인증
Private key: 아무도 알 수 없게 사용자 컴퓨터에 저장되는 키
Public key: 외부로 공개되는 키
ssh-keygen: SSH 키 생성, private key와 public key 만듦, 홈 디렉터리에서 만들기
id_rsa: private key
id_rsa.pub: public key
cd ~/.ssh: .ssh 디렉터리로 이동, ls -la로 내용물 살피기
SSH 방식: 사용자 컴퓨터에 만들어져 있는 퍼블릭 키를 깃허브 서버로 전송한 다음 저장, 두개의 키가 서로 맞으면 컴퓨터와 깃버흐 저장소가 연결됨
cat id_rsa.pub: public key 확인하기
깃허브-Settings-SSH and GPG keys-New SSH key-복사한 퍼블릭 키 값 붙여넣기
git remote add origin + SSH 주소: SSH 주소로 원격 저장소에 연결
깃허브로 협업하기
git clone + 주소 + 디렉터리: 클론하기, 원격 저장소를 지역 저장소로 똑같이 가져오기
원격 저장소와 개인 컴퓨터에서 커밋 상황이 달라진 이후에 개인 컴퓨터에서 작업하려면 원격 저장소에 새로 올라온 커밋 가져와야 함
git fetch: 원격 저장소에 어떤 변화가 있는지 보고 그 정보만 가져옴
git checkout FETCH_HEAD: FETCH_HEAD 브랜치에서 페치해서 가져온 최신 커밋 살펴보기
git merge FETCH_HEAD: FETCH_HEAD에 있는 커밋 병합하기
git checkout -b + 브랜치 이름: 브랜치 만들고 체크아웃 한꺼번에 하기
git push origin + 브랜치 이름: 원격 저장소에 브랜치 푸시하기
'Computer Science' 카테고리의 다른 글
| access denied for user 'root'@localhost' 에러 (0) | 2021.01.04 |
|---|---|
| ubuntu 서버 하나에서 dev/prod 서버 따로 구축하기 (0) | 2020.08.30 |
| Shell (0) | 2020.03.16 |
| IntelliJ 노트 (0) | 2020.03.13 |
| 파이썬 노트 (0) | 2020.01.18 |