독학/[책] git, github

[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY5

최연재 2023. 2. 14. 20:17

2월 14일부터 CLI 환경에서 실습을 진행했고, day5에 해당하는 챕터 6 <기본 명령어>를 학습했다.
 

교재 실습하기

📌Git Bash 시작하기

❗소스트리에서 Git Bash 실행하기

❗윈도우에서 Git Bash 실행하기 

 

📌Git 로컬저장소 생성하기

내 문서로 이동하기
  • cd : 홈 폴더로 이동
  • cd Documents/ : 내 문서 폴더로 이동
  • pwd : 현재 폴더의 위치 확인
Git 로컬저장소를 위한 새 폴더를 만들고, 새 폴더 정보 보기
  • mkdir 폴더명 : 새로운 폴더 생성
  • cd 폴더 : 해당 폴더로 이동
  • git status : Git 저장소의 상태를 알려주는 명령 (워킹트리에서만 정상적으로 수행된다.)
Git 저장소 초기화
  • git init : Git 저장소 생성
  • Is -a : 파일 목록 확인

 

📌옵션 설정하기

❗필수적인 값인 user.name, user.email, core.editor 세 옵션의 값을 입력한다.

Git 전역 옵션 설정

❗git config 명령을 실행했을 때 결과가 출력되지 않는다는 것은 현재 설정된 값이 없다는 뜻이다.
❗CLI를 사용하면 텍스트 에디터를 사용해야 하는데, 현재 Git Bash의 기본 에디터는 리눅스 운영체제에서 주로 상요하는 vim이나 nano로 설정되어 있다.
❗vim을 잘 사용하면 괜찮지만 그렇지 않을 경우에는 기본 에디터를 vscode로 변경하는 것이 좋다.
❗git을 재설치하는 과정에서 기본 에디터를 vscode로 설정하거나, git config 명령으로 변경할 수 있다.

 

📌스테이징과 커밋을 수행하는 add, commit

간단한 텍스트 파일 생성하고, 확인 후 스테이지에 추가
  • echo "Hello git" : 화면에 Hello git을 출력한다.
  • echo  "Hello git" >> file1.txt : Hello git 텍스트로 file1.txt 파일을 생성한다.
  • ls : 현재 폴더의 파일 목록을 확인한다.
  • git status 명령으로 상태를 보면 file1.txt 파일은 untracked 상태이다. 이를 add를 이용해 스테이지에 추가한다.
echo&amp;nbsp; "Hello git" &gt;&gt; file1.txt 명령으로 다음과 같이 파일이 생성되었다.

 

📌reset 명령으로 스테이징 취소하기

언스테이징되어 스테이지에서 내려간 상태이다.
  • git reset file1.txt 명령으로 파일을 언스테이징한다.
  • 언스테이징 : 스테이지에서 내리는 작업
cat 명령으로 파일 내용이 변경되었는지 확인한다.

 

📌CLI로 첫 번째 커밋 생성

  • git commit 명령으로 커밋을 실행한다.
  • vscode가 열리면 커밋 메시지를 입력 후 저장하고 닫는다.
  • 커밋 메시지는 첫 번째 줄과 세 번째 줄에 적는다. (둘째 줄은 비운다.)
저장하고 닫으면 다음과 같다.
커밋이 완료되어 워킹트리와 스테이지 영역이 깨끗하다.

 

📌CLI로 log 살펴보기

  • 커밋 히스토리에 보이는 앞의 16진수 7자리는 커밋 체크섬 혹은 커밋 아이디이다.
  • SHA1 해시 체크섬 값을 사용한다. -> 전 세계에서 유일한 값을 가진다.

 

📌remote, push, pull

  • git remote add 원격저장소이름 원격저장소주소로 원격저장소를 등록한다.
  • git remote -v로 원격저장소 목록을 살펴본다.
  • 더 이상 push할 것이 없으면 "Everything up-to-date" 결과 메시지가 뜬다

⚠️ git push 명령의 실패

  • 로컬저장소의 [master] 브랜치와 연결된 원격저장소의 브랜치가 없다.
  • 업스트림 브랜치 : 로컬저장소와 연결된 원격저장소
  • 업스트림 브랜치를 설정해야 한다.
  • --set-upstream을 쓰거나 이 명령의 단축 명령인 -u 옵션을 사용하면 된다. 이후 origin 저장소의 [master] 브랜치가 로컬저장소의 [master] 브랜치의 업스트림으로 지정되어 git push 명령만으로도 push가 가능하다
소스트리로 지금까지 작업한 내용을 확인할 수 있다.
다음과 같다.

 

📌clone

❗저장소 주소가 꼭 원격주소일 필요는 없다.

  • cd ../로 상위 디렉토리로 이동한다. (필수!)
  • git clone 저장소주소 새로운폴더명 으로 명령한다. -> 명령 성공

⚠️ git clone 저장소주소로만 명령

  • 새로운 폴더명 옵션을 지정하지 않으면 복제한 프로젝트 이름과 같은 폴더를 만들게 된다.
  • 이미 같은 이름의 폴더가 있기에 실패한다.
추가 커밋 후 푸시
  • echo "second"로 파일에 내용 한 줄을 추가한다.
  • git commit -a로 스테이징 없이 바로 커밋한다.
git pull
  • git cd ~/Documents/hello-git-cli로 처음 저장소로 이동한다.
  • git log --oneline 의 결과를 보면 커밋은 하나다.
  • git pull (pull=fetch+merge)

 
 

배운 내용 정리

⭐ GUI와 CLI
-GUI 

  • 다양한 정보(텍스트, 이미지, 버튼 등)가 화면에 표시된다.
  • 화면을 보면서 할 일을 결정하고, 마우스와 키보드로 명령한다.

-CLI

  • 프롬프트에 최소한의 정보(C:\, $)가 표시된다.
  • 키보드로 명령을 입력하고, 명령 처리 결과가 텍스트로 화면에 표시된다. 

 
⭐CLI를 사용하는 이유
- Git은 원래 유명한 리눅스 운영체제를 마든 리누스 토발즈가 리눅스의 소스 관리를 위해 만들었고, CLI환경만 지원했다.
- 많은 사용자가 CLI 환경에서 Git 사용을 어려워했기 때문에 GUI 프로그램을 만들었다. 
- GUI 프로그램은 CLI 기능 중 자주 쓰는 기능만을 모아서 만들었기 때문에 Git의 모든 기능을 수행할 수 없다. 몇 가지 고급명령은 CLI 환경에서만 동작한다.
- 리눅스 서버 실행 환경에서 GUI 프로그램을 사용할 수 없는 경우도 있다. 
 
⭐ Git 관련 용어 정리
- 워킹트리(working tree) : 일반적인 작업이 일어나는 곳
워크트리, 워킹 디렉토리, 작업 디렉토리, 작업 폴더 모두 같은 뜻으로 사용한다. 일반적으로 사용자가 파일과 하위 폴더를 만들고 작업 결과물을 저장하는 곳을 Git에서 워킹트리라고 부른다. 공식문서에서는 워킹트리를 '커밋을 체크아웃하면 생성되는 파일과 디렉토리'라고 정의하고 있는데, 정확히는 작업폴더에서 [.git] 폴더(==로컬저장소)를 뺀 부분이 워킹트리다.
- 로컬저장소 (local repository) : .git폴더로 커밋이 들어있다.
Git init 명령으로 생성되는 [.git] 폴더가 로컬저장소이다. 커밋, 커밋을 구성하는 객체, 스테이지가 모두 이 폴더에 저장된다.
- 원격저장소(remote repository) 
로컬저장소를 업로드하는 곳
-Git 저장소 : 엄밀하게는 로컬저장소, 넓은 의미로 작업 폴더
Git 명령으로 관리할 수 있는 폴더 전체를 일반적으로 Git 프로젝트, Git 저장소라고 부른다. 일반적으로 Git 저장소를 작업 폴더와 혼동하기도 하고 워킹트리 + 로컬저장소로 사용하는데, 공식문서에서는 로컬저장소와 Git 저장소를 같은 뜻으로 사용하고 있다.
 
⭐ Git의 옵션
- 지역 옵션 : 현재 Git 저장소에서만 유효한 옵션
- 전역 옵션 : 현재 사용자를 위한 옵션
- 시스템 옵션 : PC 전체 사용자를 위한 옵션
- 우선순위는 지역 옵션 > 전역 옵션 > 시스템 옵션 순이다.
 
⭐ SHA1 해시 체크섬
- Git의 커밋은 일반적으로 커밋 아이디라고 하는 영문 소문자와 숫자 조합의 40자리 SHA1 해시 체크섬 값을 사용한다.
- SHA1 알고리즘을 사용해서 만들어낸 체크섬 값으로 어떤 커밋을 유일하게 식별할 수 있는 값이다.
 
⭐ 좋은 커밋 메시지의 7가지 규칙
- 제목과 본문을 빈 줄로 분리한다.
- 제목은 50자 이내로 쓴다.
- 제목을 영어로 쓸 경우 첫 글자는 대문자로 쓴다.
- 제목에는 마침표를 넣지 않는다.
- 제목을 영어로 쓸 경우 동사원형으로 시작한다.
- 본문을 72자 단위로 줄바꿈한다.
- 어떻게 보다는 무엇과 왜를 설명한다.
 

배운 명령어 정리

⭐ pwd : 현재 폴더의 위치 확인
 
⭐ ls -a : 현재 폴더의 파일 목록 확인 (-a 옵션을 이용해 숨김 파일도 볼 수 있다.)
 
⭐ cd : 홈 폴더로 이동한다. (홈 폴더 : 사용자 이름과 폴더명이 같고 내 문서 폴더의 상위 폴더)
 
⭐ cd <폴더이름> :  특정 위치의 디렉토리로 이동
 
⭐ cd ../ : 현재 폴더의 상위 폴더로 이동 
 
⭐ mkdir <새 폴더 이름> : 현재 폴더의 아래에 새로운 폴더를 만듦.
 
⭐ echo "문장" : 메아리라는 뜻으로 화면에 문장을 출력

⭐ git status :  Git 워킹트리의 상태를 보는 명령 (워킹트리가 아닌 폴더에서 실행 시 오류 발생)
 
⭐ git status -a :  git status 명령보다 짧게 요약해서 상태를 보여주는 명령으로, 변경된 파일이 많을 때 유용
 
⭐ git init : Git 저장소 생성 (현재 폴더에 Git 저장소가 생성되고, [.git] 숨김폴더가 생기는데 이 폴더가 로컬저장소)
 
⭐ Git 옵션 설정하기
<전역 옵션 >
- git config --global 옵션명 : 지정한 전역 옵션의 내용을 살펴본다.
- git config --global 옵션명 새로운 값 : 지정한 전역 옵션의 값을 새로 설정한다.
- git config --global --unset 옵션명 : 지정한 전역 옵션을 삭제한다
<지역 옵션>
- git config --local 옵션명 : 지정한 지역 옵션의 내용을 살펴본다.
- git config --local 옵션명 새로운 값 : 지정한 지역 옵션의 값을 새로 설정한다.
- git config --local --unset : 지정한 지역 옵션의 값을 삭제한다.
<시스템 옵션>
- git config --system 옵션명 : 지정한 시스템 옵션의 내용을 살펴본다
- git config --system 옵션명 값 : 지정한 시스템 옵션의 값을 새로 설정한다.
- git config --system --unset 옵션명 값 : 지정한 시스템 옵션의 값을 삭제한다.
<옵션>
- git config --list : 현재 프로젝트의 모든 옵션을 살펴본다.
 
⭐ git add 파일명 : 파일들을 스테이지에 추가한다. 
 
⭐ git commit : 스테이지에 있는 파일들을 커밋한다.
 
⭐ git commit -a : add 명령을 생략하고 바로 커밋할 때 사용한다. 
- 변경된 파일과 삭제된 파일은 자도응로 스테이징되고 커밋된다.
- untracked 파일은 커밋되지 않는다.
 
⭐ git push -u 원격저장소별명 브랜치이름 
- 현재 브랜치에서 새로 생성한 커밋들을 원격저장소에 업로드한다.
- -u 옵션으로 브랜치의 업스트림을 등록할 수 있고, 한 번 등록한 후에는 git push만 입력해도 된다.
 
⭐git pull : 원격저장소의 변경사항을 워킹트리에 반영한다. (git fetch + git merge 명령이다.)
 
⭐ git fetch 원격저장소별명 브랜치이름
- 원격저장소의 브랜치와 커밋들을 로컬저장소와 동기화한다.
- 옵션을 생략하면 모든 원격저장소에서 모든 브랜치를 가져온다.
 
⭐ git reset 파일명
- 스테이지 영역에 있는 파일들을 스테이지에서 내린다. (언스테이징)
- 워킹트리의 내용은 변경되지 않는다.
- 옵션을 생략할 경우 스테이지의 모든 변경사항이 초기화된다.
- 리셋에는 Hard, mixed, soft가 있는데, 옵션 없이 사용하면 mixed reset이다.
 
⭐ cat 파일명 : 파일 내용을 확인한다.
 
⭐git log : 현재 브랜치의 커밋 이력을 보는 명령
 
⭐ git log -n숫자 : 전체 커밋 중 최신 n개의 커밋을 살펴본다.
 
⭐ git log --oneline --graph --decorate --all
- --oneline : 커밋 메시지를 한 줄로 요약해서 보여준다. (생략 시 커밋 정보를 자세히 표시한다.)
- --graph : 커밋 옆에 브랜치의 흐름을 그래프로 보여준다. GUI와 유사한 모습으로 나온다.
- --decorate : --decorate=short 옵션으로 브랜치와 태그 등의 참조를 간결히 표시한다.
-  --all : 옵션이 없을 경우 HEAD와 관계없는 옵션을 보여주지 않는다.
 
⭐ git help 명령어
- 해당 명령어의 도움말을 표시한다.
- 도움말에는 명령의 의미와 세부적인 옵션들이 표시된다. 
 
⭐ git remote add 원격저장소 이름
- 원격저장소를 등록한다.
- 원격저장소는 여러 개 등록할 수 있지만 같은 별명의 원격저장소는 하나만 가질 수 있다.
- 통상 첫 번째 원격저장소를 origin으로 지정한다.
 
⭐git remote -v : 원격저장소 목록을 살펴본다.
 
⭐ git clone 저장소주소 새로운폴더명
- 저장소 주소에서 프로젝트를 복제해온다.
- 생길 폴더명을 생략하면 프로젝트 이름과 같은 폴더가새로 생성된다.
- 저장소 주소는 꼭 우너격일 필요가 없으며 로컬저장소도 git clone 명령으로 복제할 수 있다.