본문으로 건너뛰기

Git

Git&GitHub

[총정리] 깃허브(Github) 파일 업로드, 파일 올리기 (git bash)

[Git] 좋은 커밋 메시지 작성법

자주 생기는 오류

git push error 해결 방법 (nothing to commit, working tree clean)

.gitignore 작성

[Git] .gitignore 사용법 및 작동하지 않는 경우 (+ .gitignore 템플릿 사이트)

깃의 핵심기능 ‘버전 관리’ ‘백업’ ‘협업’

  1. 버전 관리 - 깃은 문서를 수정할 때마다 언제 수정했는지, 어떤 것을 변경했는지 편하고 구체적으로 기록하기 위한 버전 관리 시스템
  2. 백업 - GitHub를 통해 자료들을 백업할 수 있다.
  3. 협업 - 깃허브를 통해 파일을 편하게 주고 받으며 협업할 수 있다.

버전 관리 - 백업 - 협업 순으로 이해

깃 프로그램의 종류

깃허브 데스크톱 - 쉽지만 고급 기능이 아쉬움

토터스깃 - 윈도우 전용 프로그램

소스트리 - 기본부터 고급까지 사용가능 but 어려움

커맨드 라인 인터페이스(CLI)

터미널 창에 직접 명령을 입력해 사용하는 방식

  • 리눅스 명령을 알아야 하고, 깃 명령도 외어야함
  • 가장 빠르게 깃을 다룰 수 있고 반복해야 할 일을 자동화시키거나 서버 환경에서 깃을 사용 가능
  • 대부분의 개발자가 커맨드 라인 인터페이스로 깃을 사용

명령어

폴더(윈도우) = 디렉터리(리눅스)

  • pwd : 현재 위치의 경로(print working directory)
  • ls : 현재 디렉터리에 어떤 파일이나 디렉터리가 있는지 확인, 이름 뒤(/)가 있는게 디렉터리
  • clear : 화면정리
  • (뛰고)- : 옵션추가, 두 옵션을 함께 쓰려면 순서 상관없이 붙이기

ls 명령 옵션

  • a : 숨긴 파일과 디렉터리도 함께 표시
  • l : 파일이나 디렉터리의 상세 정보를 함께 표시
  • r : 파일의 정령 순서를 거꾸로 표시
  • t : 파일 작성 시간 순으로(내림차순) 표시
  • cd : 터미널 창에서 디렉터리 사이를 이동할때 사용(change directory)
  • cd .. : 상위 디렉터리로 이동
  • cd (하위 디렉터리 이름) : 하위 디렉터리로 이동
  • cd ~ : 홈 디렉터리로 돌아가기

리눅스에서 디렉터리를 나타내는 기호 ⭐️

  • ~ : 사용자의 홈 디렉터리를 알려줌
  • ./ : 현재 사용자가 작업 중인 디렉터리
  • ../ : 현재 디렉터리의 상위 디렉터리

터미널 창에서 디렉터리 만들기 및 삭제하기

  • mkdir : 현재 디렉터리 안에 하위 디렉터리 만들기(make directory)
  • rm : 디렉터리 삭제(remove)
  • rm -r : 디렉터리 안에 있는 하위 디레거리와 파일까지 함께 삭제
  • 삭제할 디렉터리의 상위 디렉터리에서 rm명령을 입력해야함*

빔에서 텍스트 문서 만들기

  • vim : 뒤에 입력한 파일이름이 있으면 열고, 없으면 만든다.
  • 입력 모드 : 문서를 작성
  • ex 모드 : 문서를 저장
  • 처음에는 ‘ex 모드’로 열린다.
  • 입력 모드로 가려면 - I(Insert)나 A(Add) 클릭
  • ex 모드로 가려면 - esc 클릭

빔 ex 모드 명령 모음

  • :w : 문서 저장(write)
  • :q : 편집기 종료(quit)
  • :wq (파일): 저장하고 종료, 파일 이름 입력시 그 이름으로 저장
  • :q! : 저장하지 않고 종료, 확장자가 .swp 인 임시파일 생성됨
  • ** git config —global core.editor “편집기 이름” 을 통해 편집기 변경 가능***

텍스트 문서 내용 확인

  • cat : 간단히 텍스트 문서 내용 확인(concatenate-연쇄하다)
  • cat (파일): 파일 내용 화면에 표시
  • cat (파일1, 파일2…파일n> 새파일) : 파일 n개를 차례로 연결해서 새로운 파일을 만듬
  • cat (파일1>>파일2) : 파일 1의 내용을 파일2 끝에 연결

깃으로 버전 관리하기

버전 : 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 스냅숏으로 찍어서 저장하는것

  • git init (파일) : 디렉터리를 초기화(initialize-초기화하다) - 저장소 생성
  • (Shift)+(Command)+(.) : 숨은 파일 보기
  • git status : 깃 상태 확인

작업트리 : 파일 수정, 저장 등의 작접을 하는 디렉터리

스테이지 : 버전으로 만들 파일이 대기하는 곳

저장소 : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳

버전을 만드는 순서작업 : 트리에서 문서를 수정 - 수정한 파일 중 버전으로 만들고 싶은것을 스테이지에 저장 - 스테이지에 있던 파일을 저장소로 커밋

untracked files : 한번도 버전 관리하지 않은 파일

스테이징(staging) : 깃에게 버전 만들 준비를 하라고 알려주는것

git add (파일) : 스테이징

git add . : 파일 여러개를 한번에 스테이징

커밋(commit) : 버전을 만드는 것 - 그 버전에 어떤 변경 사항이 있었는지 메세지를 함께 기록해한다

git commit : 커밋하기

  • m : 메시지 추가
  • a : 스테이징,커밋 한번에 하기 - but 한 번이라도 커밋한 적이 있는 파일만 사용 가능

commit 내용 확인

git log : 지금까지 만든 버전과 설명 확인 - 커밋 로그라고 부름

git diff : 작업 트리에 있는 파일과 스테이지에 있는 파일 비교, 파일과 저장소에 있는 최신 커밋을 비교 - 수정 파일을 커밋하기 전 최종 검토

git log  --stat : 관련 파일 같이 보기

git log --oneline: 한 줄에 한 커밋씩 나타내줌

git log --branches : 각 브랜치의 커밋을 함께 봄

git log --graph : 그래프 형태로 표시

.gitignore 파일을 만들어 버전 관리에서 제외 시킬 수 있다. - 주로 개인적 메모, swp 파일, 백업 파일등이 있다

git commit  --amend : 방금 커밋한 메시지 수정

작업 되돌리기

git checkout-- (파일이름) : 변경사항 취소.  ————> 변경 : git restore (파일이름)

git reset HEAD (파일) : 스테이지에서 내리기. —————  > 변경 : git restore --staged (파일이름)

git reset HEAD^ : 가장 최신 커밋 취소하고 스테이지에도 내리기 - 작업트리에는 남는다.

  • git reset HEAD~3 : 최근 3개의 커밋을 취소*

git reset 명령 옵션

특정 커밋으로 되돌리기

커밋 해시 = 커밋ID

git reset —hard (돌아갈 커밋 해시) : 특정 커밋을 최신 커밋으로 이동

커밋 삭제하지 않고 되돌리기

git revert (되돌릴 커밋 해시) : 커밋을 삭제하지 않고 되돌림

브랜치(Branch[나뭇가지])

branch[분기]한다. - master 브랜치에서 뻗어 나오는 새 브랜치를 만드는것

merge[병합]한다.  - 분기했던 브랜치를 master 브랜치에 합치는 것

git branch (파일) : 브랜치를 만들거나 확인

  • HEAD는 작업 중인 브랜치를 가리키는 포인터*

git checkout (브랜치명) : 다른 브랜치로 이동. —————> 변경 : git switch (브랜치명)

브랜치 사이 차이점 보기

git log main..apple : main브랜치에는 없고 apple브랜치에만 있는거 보기

브랜치 병합

git merge (가져올 파일) : 브랜치 병합

  • 빨리 감기 병합 : 브랜치를 나눈뒤 새로운 커밋을 안 만들었으면 커밋 메시지 창이 열리지 않고 빠르게 병합된다. *
  • git merge (파일) --no-edit : 병합할 때 편집기 창 열리지 않는다* - 다시 열려면 : --edit만
  • 수정 내용을 자연스럽게 하나의 파일로 합쳐준다.*

브랜치 삭제

git branch -d (브랜치명) : 브랜치 삭제

  • main브랜치에 병합하지 않은 브랜치를 삭제하려면 오류가 뜨는데 이때[ -D] 옵션을 사용해 강제 삭제 가능*
  • 깃의 흐름에서 감추는 것일뿐 없어진 것은 아니므로 다시 같은 이름으로 브랜치 생성시 작업 내용 그대로 있음*

git reset : HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정 - 어떤 브랜치에 있는 커밋이든 지정 가능하고, 브랜치와 연결이 끊긴 커밋은 삭제

수정 중인 파일 감추기 및 되돌리기

git stash : 커밋하지 않은 수정된 파일을 다른 곳에 보관하며 숨김

git stash pop : 제일 최근에 숨긴 stash를 불러옴

git stash apply : stash를 불러오지만 저장했던 내용을 그대로둠

git stash drop : stash 목록에 가장 최근 항목을 삭제

  • 새로 추가된 파일이 “0”으로 가고 이미 있던건 1씩 추가* - [stash stack]

GitHub

1.원격 저장소에서 깃을 사용할 수 있다.

2.지역 저장소를 백업할 수 있다.

3.협업 프로젝트에 사용

4.자신의 개발 이력을 남김

5.다른 사람의 소스를 살펴 보고, 오픈 소스에 참여 가능

저장소 - repository

저장소를 만들면 HTTPS 주소가 생성 됨 - 주소 이름 : https://github.com/아이디/저장소명

원격 저장소 연결하기

git remote add orign (저장소 웹사이트 주소) : 원격 저장소 연결

  • 기본 브랜치가 main이듯, 기본 원격 저장소는 orign이다*

git remote -v : 잘 연결됐는지 확인

push - 지역 저장소의 소스를 원격 저장소로 올리는 것

pull - 원격 저장소에서 지역 저장소로 내려받는 것

원격 저장소에 파일 올리기 - git push

git push -u orgin main : origin 을 main 브랜치로 푸시하라는 명령

  • u는 연결하기 위한 것으로 처음 한 번만 사용

SSH 원격 접속

id_rsa : 프라이빗 키

id_rsa.pub : 퍼블릭 키

ssh-keygen : SSH키 생성

⭐️ssh 디렉터리에 들어간뒤 - cat id_rsa.pub - 문자열 복사후 - 홈페이지에서 키 추가 - 터미널에서 저장소와 연결

원격 저장소에서 파일 내려받기 - git pull

git pull origin main : origin의 내용을 main 브랜치로 가져옴

  • origin에서 main으로 pull 할시 ‘git pull’만 입력도 가능

마크다운 문법 - 참고 : https://help.github.com/en/articles/basic-writing-andformatting-syntax

: 제목을 붙일 때 사용, 1~6개 개수로 크기 조정, [#]과 텍스트 사이에 여백이 있어야함

줄바꿈 : [enter] 두번 눌러야 줄 바뀜

      • , *** , * * * : 가로줄(다 사용 가능)
    1. : 순서 있는 목록 번호로 표현(줄바꿈 [enter] 한번
  • , + , * : 순서 없는 목록 - 섞어도 상관 X

[tap]을 활용 하면 여러 단계로 표현 가능

텍스트 강조

  • 굵게 : 앞 뒤 ** 나_ _
  • 기울임체 : 앞 뒤 * 나_
  • 굵은 기울임체 : 앞 뒤 *** 나 _ _ _
  • 취소선 : 앞 뒤 ~~

: 인용 - 첫 줄 앞에, 인용문 안에 또 다른 인용문 삽입시 >>

소스코드 : [ ‘ ] 앞 뒤

여러줄 : 앞 - [‘’’사용 언어], 뒤 - [‘’’]

링크 : <링크주소> [링크 텍스트](링크 주소) [링크 텍스트](링크 주소,”부가 설명”)

이미지 : ![대체 텍스트](웹에 올라온 이미지 파일 경로)

깃허브에 이미지 올리고 README에 삽입

오픈 소스 저장소 복사

포크 - clone을 통해 저장소 복제

GitHub Pages

  1. 홈페이지 파일이 있는 경우
  2. 깃허브에서 지원하는 지킬 테마

jekyll themes 사이트로 디자인 확인

저장소를 github pages로 사용하려면 ‘계정.github.io’로 바꿔야함