좌충우돌 개발자의 길

[Git] Git을 배워보자! 본문

STUDYING/GIT

[Git] Git을 배워보자!

sustronaut 2022. 4. 28. 14:31

1. Git 기본 설정

기본적인 설정을 해보자

#깃에 대한 모든 환경설정을 알아볼 수 있음
git config
#깃에 대한 모든 설정들을 알아볼 수 있음
git config --list
#파일로 열어보고 싶을 때
git config --global -e 
# vscode로 열어서 확인하고 싶을 때
code .

# code를 에디터와 연동해서 쓰기
git config --global core.editor "code" //열어진 파일이 종료되기 이전에도 다른 명령어 쓸 수 있음
git config --global -e

# code를 에디터와 연동해서 쓰기2
git config --global core.editor "code --wait" //열어진 파일이 종료되기 이전에는 다른 명령어 못 쓰게 막음
git config --global -e

#사용자에 관련한 정보 입력하기
git config --global user.name "Sumin"
git config user.name // 확인 -> Sumin
git config --global user.email "sumin.kim.dev@gmail.com" 
git config user.email // 확인 

#줄바꿈 (윈도우와 맥의 줄바꿈 코드가 달라 맞춰주기 위해 설정)
git config --global core.autocrlf true

core.autocrlf에 대한 설명

 

Git 레퍼런스 : 명령어 모음집!

 

Git - Reference

Reference

git-scm.com

 

Git을 해당 프로젝트 폴더에 설치해보자

# 윈도우 명령 프롬프트에서는 되지 않아 맥에서만 가능한듯하다 

# 폴더 생성
mkdir git

# 목록 모두 보기 
ls -al

# 해당 폴더에 git 초기화해서 설치
git init

# git에 관련한 내용 열어보기
open .git

# 설치한 git 다시 제거하기
rm -rf .git

# git 의 status 보기
git status

# git 명령어 단축키
# git status 귀찮아! 그냥 내가 alias를 사용해 명령어 간단하게 설정해보자
git config --global alias.st status

# git의 명령어와 다양한 속성값 알아보는 방법
git 명령어 --h # ex) git config --h

 

+ source tree를 이용해 폴더에 깃 설치해보자

2. Git Basic

Git의 workflow

1단계) working directory : 프로젝트의 파일들을 수정하고 작업하고 있는 공간

  • untracked : 새로 만들어진 파일이거나 기존에 존재하고 있는 파일에서 git을 초기화하면 git이 파일에 대한 정보가 없는데 트랙킹되지 않은 파일들
    • unmodified : 수정되지 않은 파일들 (이전 버전과 비교했을 때)
    • modified : 수정된 파일들(이전 버전과 비교했을 때) -> 수정된 파일들만 staging area로 넘어갈 수 있음 
  • tracked : git이 이미 알고 있는 tracking 하고 있는 파일들

2단계) staging area : 어느정도 작업하다 version history에 저장할 준비가 되어 있는 파일들을 옮겨 놓는 공간

3단계) git directory (or git repository) : version의 히스토리를 가지고 있는 공간

4단계) remote (github)

 

- 2단계 ->3단계 : commit 명령어 이용

- 3단계 -> 1단계 : checkout 명령어 이용 (다시 돌아가기)

- 3딘계 -> 4단계 : push 명령어 이용 

3단계까지만 하면 local에 저장된 채로 남기 때문에 내 컴퓨터가 날라가면 내 멘탈도 내 프로젝트도 다 날라간다. 그렇기에 Github같은 서버 공간에 올려놓자 (push 명령어 이용)

- 4단계 -> 3단계 : pull 명령어 이용

 

 

3. 가장 기본적이고 중요한 명령어 

git add

- git이 tracking 할 수 있도록 staging area에 올리려면 git add 를 사용함

# cmd 명령어로 파일 생성
# hello world!라는 문장을 a.text b.text c.text 파일을 만들어 저장
echo hello world! > a.text
echo hello world! > b.text
echo hello world! > c.text

# 형재 git 상태 
git status #아래 사진 참조

-> master 브랜치

-> 커밋한거 아직 없음

-> untracked files는 다음과 같음

-> 아직 커밋도니건 없지만 untracked files가 존재함


git add 해본 결과

커밋할 준비가 되어 있는 변경 사항에 a.text 파일 추가됨

 

git add의 다양한 사용법

#git add의 다양한 방법

git add a.text #a.text 이 파일만 staging area로 옮기겠다
git add b.text c.text # 두 파일 연달아 올리기 가능
git add *.text # .text 로 끝나는 모든 파일 올리기 가능
#b.txt에 hihi 저장
echo hihi >> b.text

- b.txt를 트래킹하고 있어서 이제는 modified라고 뜸

소스트리에서 확인 : 수정된 b.text가 unstanged 단계에 있는 것을 볼 수 있음

 

 

+ 이런 주황색은 뭘 뜻하나?

=> working directory에 아직 커밋되지 않은 변경사항이 발생했다

 

 

git rm --cached 

- staging area에서 working directory(unstaged directory)의 untracked files로 옮김

#.text로 끝나는 모든 파일들을 staging area에서 unstaged area(working directory)로 내려오게 함
git rm --cached *.text

 

git add * vs git add .

git add * #디렉토리에 있는 모든 파일들 올리기 
rm a.txt #a.txt 삭제
git add * # 다시 모든 파일 올리면 삭제된 a파일은 디렉토리에 없어 git staging area에 추가 x
git add . #모든 파일들을 포함해서 git stage area에 포함되게 함

git add * : .gitignore파일에 있는 파일들도 stage로 올리는 것

git add . : .gitignore파일에 있는 파일명들은 제외하고 stage에 올리는 것

참고자료 : https://sanghaklee.tistory.com/31

 

 

.gitignore

- 깃에 올리고 싶지 않은 파일들 지정해주는 기능

echo *.log > .gitignore #.log로 끝나는 파일은 깃에 안올리겠다!!

open .gitignore # .gitignore 열기

#.gitignore 파일에서도 다음과 같이 작성 가능
log.log # log.log란 파일을 무시해라
*.log # log로 끝나는 모든 파일들을 무시해라
build/ # build 폴더 안에 있는 모든 파일들을 무시해라
build/.log # build 폴더 안에 .log로 끝나는 모든 파일들을 무시해라

 

git status

- 우리가 작업하고 있는 모든 것을 간단하게 확인해주는 명령어

# git status의 여러 옵션을 확인할 수 있음
git status -h

#git status를 짧게 표현
git status -s

git status -s

- 초록색 : staging area에 추가된 정보라는 뜻, 

- A : ex /. c.txt파일이 추가되었고 staging area에 있다

- ?? : 아직 트래킹되지 않은 파일

-AM : ex/ c.txt 파일은 staging area에 추가되었고, working directory는 수정이 되었다라는 뜻.

 

 

git diff 

- 어떤 파일이 수정되었는지 정확히 확인

git diff 시 나오는 코드들

더보기

(위 사진 코드 해석)

- 첫째줄 : git 커맨드를 이용해 a(이전버전: working directory에 있는 파일이라면 이전에 커밋된 파일을 가리킴 or staging area에 변경된 

내용이 있다면 그것이 이전 버전임.) c.txt와 b(지금 버전)/c.txt를 비교

- 둘째줄 : index는 git 내부적으로 파일들을 참고 할 때 쓰는 것

- @@-1 +1, 2 @@ : - 는 이전 파일을 의미,  1 첫번째 줄 (이전 버전에서 나온 상태) // + 는 지금 버전을 의미, 1,2는 첫번째~두번째 줄까지 봐바 => 기존의 hello world!라는 것에서 add라는 것이 추가가 되었구나 라는 걸 알 수 있음

- +add : +는 추가가 되었다는 의미로 초록색으로 표시. add라는 부분은 추가된 내용을 의미 (여기서는 "add"라는 문자열이 들어갔다는 것을 의미)

 

- (추가 설명) -add : -는 삭제가 되었다는 의미로 빨간색으로 표시 add라는 문자열이 삭제되었다는 것을 의미

- (추가 설명) q를 누르면 종료됨

 

- git diff의 다양한 옵션들

cat c.txt #파일에 있는 내용을 확인
hello world!
add 

# staged area에 있는 것만 확인할 때 사용 (2가지 방법 : 둘 다 같은 기능임)
git diff --staged
git diff --cached 

# 다양한 옵션들 확인
git diff --h

#터미널에서 확인하는게 힘들다면 ui와 연결 가능
git config --global -e # git config에 글로벌로 설정되어있는 애들을 edit 하겠다
git difftool

- git config --global -e 실행 시

열린 vscode 파일에 해당 코드 작성

+ cmd 부분 코드 해석 : code 다음에 vscode를 기다리고 diff를 이용해 local과 remote를 비교한다는 뜻

 

- git difftool 실행 시

+ git difftool --staged : staging area에 있는 변경 사항 확인 가능

 

 

 

git commit

- staging area에 있는 파일들을 git repository에 올림

# 커밋한 내용 확인 가능
git log

# 메시지와 함께 커밋하기
git add .
git commit -m "second commit" 

# 모든 파일들을 commit하는데 메시지와 함께 커밋
git commit -am "third commit"

 

 

Commit 팁

- 너무 세분화해서 커밋하거나 하나로 뭉뚱그려서 커밋하지말자

- 기능별로 구현했을 때 커밋하는 방식이 가장 좋다

- 에러난 부분을 고쳤을 때 그 부분만 커밋하자 (이것저것 고쳐서 커밋하면 코드리뷰하기 힘들다)

 

 

UI tool을 이용해 commit 해보자 (sourcetree)

- 1. 파일 앞에 있는 checkbox로 staged area로 이동 가능

- 2. 한줄씩 staged area로 이동 가능

- 3. stage hunks(unstage hunks) : 코드 뭉치들 한번에 staged area로 이동 가능

 

- 4. 메시지와 함께 최종 commit

- 5. history 부분에서 지금까지 commit된 역사를 볼 수 있음 

 

 

 

 

 출처 : 엘리코딩 - 깃, 깃허브 제대로 배우기 (기본 마스터편, 실무에서 꿀리지 말자)

'STUDYING > GIT' 카테고리의 다른 글

[Github] 깃허브 프로필 꾸미기  (0) 2022.04.30