Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Carambola Dev

깃 & 깃허브 도서 요약 본문

Computer Science

깃 & 깃허브 도서 요약

carambola 2020. 3. 14. 14:08

깃의 기능

버전관리(수정할 때마다 언제 수정하고 어떤 것을 변경했는지 기록)

백업(원격 저장소에 저장)

협업(누가 어느 부분 수정했는지 기록 남음)

 

리눅스 명령 연습

~: 홈 디렉터리에 있다는 의미

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