깃의 핵심기능 ‘버전 관리’ ‘백업’ ‘협업’
- 버전 관리 - 깃은 문서를 수정할 때마다 언제 수정했는지, 어떤 것을 변경했는지 편하고 구체적으로 기록하기 위한 버전 관리 시스템
- 백업 - GitHub를 통해 자료들을 백업할 수 있다.
- 협업 - 깃허브를 통해 파일을 편하게 주고받으며 협업할 수 있다.
버전 관리 - 백업 - 협업 순으로 이해
깃 프로그램의 종류
깃허브 데스크톱 - 쉽지만 고급 기능이 아쉬움
토터스깃 - 윈도우 전용 프로그램
소스트리 - 기본부터 고급까지 사용가능 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]
'프로그래밍 > Git&GitHub' 카테고리의 다른 글
Git Flow (0) | 2024.05.16 |
---|---|
깃허브 데스크탑[GitHub Desktop] 가이드 (0) | 2023.08.06 |