0829 포트폴리오 / 협업 환경 구성 (2) - git 명령어
1. 깃은 분산식 버전 관리 시스템
- 깃은 로컬 시스템, 즉 내 컴퓨터 안에서 버전을 관리해주는 시스템이자, 깃허브와 소통하는 시스템
- 깃허브는 깃들이 한군데 모여 있는 원격 저장소로 백업, 버전관리, 협업을 도와주는 도구
- 내 컴퓨터에 깃이 깔려 있으면, 버전 관리를 로컬로 할 수 있을 뿐 아니라 깃허브와 소통(백업, 복구) 할 수 있다.
- 다른 컴퓨터에도 깃이 깔려 있으면, 깃허브를 통해서 소통(다운로드, 복제, 백업) 및 협업할 수 있다.
2. 내 컴퓨터에 깃 설치
- 링크 : https://git-scm.com/
- 도큐먼트 참고 : https://git-scm.com/book/ko/v2
- 설치 후 버전 확인
> mac : terminal.app
> Window : [윈도우] > git bash 실행 > git --version
3. CLI vs GUI
- 명령하는 방법의 차이
1) CLI : 커맨드 라인 인터페이스. 명령 줄 인터페이스.
셸(이라는 프로그램; 청)에서 글자를 입력해서 컴퓨터에게 명령을 내리는 것
cf. shell 조개
ex> MS DOS, 명령 프롬프트(cmd), 파워셸, 배쉬 / Terminal, Windows Terminal> 예쁜 집합
2) GUI : 그래픽 유저 인터페이스. 그래픽으로 컴퓨터에게 명령을 내릴 수 있도록, 사용자에게 화면을 제공
1) CLI
# 깃에서 자주 쓰는 명령어
- ls : 폴더 안에 어떤 파일이 있는지 알려주는 명령어
> window는 dir
> 만약 vsCode에서 ls 명령어 쓰고 싶다면 터미널 창 설정을 cmd -> powerShell or Bash로 바꿀 것
- ls -a : 숨긴 파일까지 전부 보여줌
> Window
-- CMD : dir /a
-- PowerShell : ls -Forced
--Git Bash : ls -a
- mkdir abc : abc 폴더를 만드는 명령어
- cd(change directory) : 폴더 이동

- cd .. : 이전 폴더 돌아가기
- git status : 깃 상태 보기
- git init(initialize) : 깃에게 폴더 관리 부탁하는 명령어

git add 파일명 : 어떤 파일을 버전관리 할지 정하는 명령어
- 깃은 시작부터 모든 파일을 다 트래킹하지 않는다.
- 버전 저장 전에 관리할 파일 담는 장바구니 역할
>> git add 파일명 명령어를 쳤더니 실행되지 않았다. 그래서 git add . (전체 add)를 했더니 폴더 안에 해당 파일이 들어있어서 경로를 같이 작성해줘야지만 add가 되는 것 같았다.
>> add 취소, 즉 장바구니를 비우는 명령어를 찾아 git reset HEAD를 해줬으나 잘 되지 않았다.
>> 찾아보니 HEAD는 커밋 후에 비울 때 처리해주는 명령어이고, 커밋 전에 add 취소할 땐 git reset을 해준다.
>> git add 폴더명/파일명 으로 다시 실행했더니 add 처리가 잘 되었다.

git commit
- 지금까지 모은 걸 버전 만들어달라고 하는 명령어
- 지금 버전으로 버전찍기

git commit 메시지 입력
- c 두번 누름
- 커밋 메시지 작성 : first commit
- esc 누름
- shift + '
- wq 작성(종료)
>> 나같은 경우 COMMIT EDITMSG 창이 떠서 메시지를 입력한 다음 우측 상단 체크표시를 눌러 메시지 입력을 진행했다.

git log : 발자국 찍는다는 뜻. 잘 저장됐는지 확인

2) GUI
git init
- 소스 컨트롤 > initialize Repository

git add
- 소스 컨트롤 > Changes > +(Stage Changes)
- Changes 탭에 있는 Unstaged 파일에 커서를 갖다대고 +를 누르면 Staged Changes로 옮겨지고 add 된다.

git commit : commit 버튼

커밋 메세지 : 메세지 입력 후 우측 상단 체크 버튼 클릭

# 깃 히스토리 설치
- 익스텐션 : git history 설치
- 소스 컨트롤에서 시계 아이콘으로 log 볼 수 있다

4. 깃허브로 협업하기
깃허브 소개
- 개발 문화에서 공유하는 문화가 중요하다고 판단
- 마이크로소프트사가 무상 제공
- 오픈소스 커뮤니티의 발판