일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- 혼자공부하는머신러닝딥러닝
- CSS
- reactmemo
- 머신러닝
- 구조분해할당
- js
- 혼공머신
- 코딩테스트
- 백준 #코딩테스트 #코테 #알고리즘
- useEffect
- 유니티 #게임개발
- 백준 #코딩테스트
- Redux
- axios
- clipboardapi
- 에러해결방안
- 딥러닝
- typeScript
- 리액트
- error맛집
- 초기값 설정하기
- 혼공단
- 알고리즘
- 혼공챌린지
- 타입스크립트
- TS
- 혼자공부하는머신러닝
- REACT
- styledcomonents
- Today
- Total
좌충우돌 개발자의 길
[Git] Git을 배워보자! 본문
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
Git 레퍼런스 : 명령어 모음집!
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라고 뜸
+ 이런 주황색은 뭘 뜻하나?
=> 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
- 초록색 : staging area에 추가된 정보라는 뜻,
- A : ex /. c.txt파일이 추가되었고 staging area에 있다
- ?? : 아직 트래킹되지 않은 파일
-AM : ex/ c.txt 파일은 staging area에 추가되었고, working directory는 수정이 되었다라는 뜻.
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 실행 시
+ 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 |
---|