처음 git을 접했을 때는 명령어로 사용했었다. 그때도 의미를 크게 알고는 쓰지는 않았다. 그러다가 Github desktop 을 접하고 이 어플만 이용했다 . 솔직히 오타가 많은 나로써는 너무 편했다 !
그러다 보니깐 명령어를 사용 할 때는 (애초에 몇 개 알지도 못 했지만) 많이 버벅이게 되었다. 알고있던 의미조차 잊어가게 되었다. 다시 초심으로 명령어를 모두 마스터한 뒤에 다시 어플을 사용하려고 한다.
제가 모르는 것 위주로만 쓰고, 약한 부분만 엄청 자세히 써둔거라 정리/요약본으로는 많이 부족합니다 ,,,
아직 제가 정리는 좀 약해서 ,,, 양해부탁드립니다 💕
✔ 자주 쓰는 git 명령어
git init
git clone URL
git add
git commit -m '메세지'
git commit --amend //커밋 재작성
/* example ****
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
*******/
git branch //브랜치 목록
git checkout -b newBranch //브랜치를 만들고 바로 이동
git checkout
git log
git log -p -2 //-p : 각 커밋의 diff 결과를 보여줌. 숫자는 최근 n개
git log --state //히스토리 통계
git remote //현재 프로젝트에 등록된 리모트 저장소
git remote -v //단축이름과 URL도 볼 수 있음.
git remmote add <단축이름> <URL> //리모트 저장소 추가하기
git remote show <리모트 저장소 이름> //git remote show origin : 구체적인 정보 확인
git fetch <remote> //git fetch origin : 로컬에는 없지만, 리모트 저장소에 있는 데이터를 모두 가져옴.
git push <리모트저장소이름> <브랜치 이름> //git push origin master : commit한 것을 공유
1. Git의 역사
git은 2005년 탄생하게되었다. 빠른 속도, 단순한 구조, 비선형적인 개발(수천개의 동시 다발적인 브랜치), 완벽한 분산, Linux 커널 같은 대형 프로젝트에도 유용할 것*속도나 데이터 크기 면에서) 라는 목표를 갖고 세워졌다.
그렇기때문에 대형 프로젝트에 사용하기도 좋다.
- Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
- Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
- Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
Git 프로젝트의 세가지 단계와 연결되어있다. Git 디렉토리, 워킹 트리, Staging Area 이렇게 세 가지 단계를 이해하고 넘어가자 !
Git 디렉토리는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말한다. 이 Git 디렉토리가 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어진다.
워킹 트리는 프로젝트의 특정 버전을 Checkout 한 것이다. Git 디렉토리는 지금 작업하는 디스크에 있고, 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만든다.
Staging Area는 Git 디렉토리에 있다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다. Git에서는 기술 용어로는 Index'' 라고 하지만, Staging Area'' 라는 용어를 써도 상관 없다.
Git으로 하는 일은 기본적으로 아래와 같다.
1. 워킹 트리에서 파일을 수정한다 .
2. Staging Arear에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
3. Staging Area에 있는 파일들을 커미새서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
2. Git의 기초
- git을 초기화하고 github에 있는 소스코드를 복사해오는 것이다
git init
git clone https://github.com/libgit2/libgit2
- 수정하고 저장소에 저장하기
Tracked(관리대상)과 Untracked(관리대상 X)으로 나눈다. tracked 파일은 이미 스냅샷에 포함돼 있던 파일 = git이 알고있는 파일이라는 말이고, untracked 파일은 git이 모르는 파일 = 새로 생긴 파일 등이라는 것이다.
파일 상태를 확인하고 싶다면,
git status
git status -s //짧게 확인하기
명령어로 확인하면 된다.
git add를 할 때 무시하는 파일들을 지정하기 위해 .gitingore 이라는 파일을 셋팅해준다.
# 확장자가 .a인 파일 무시
*.a
# 윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음
!lib.a
# 현재 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않음
/TODO
# build/ 디렉토리에 있는 모든 파일은 무시 build/ # doc/notes.txt 파일은 무시하고 doc/server/arch.txt 파일은 무시하지 않음
doc/*.txt
# doc 디렉토리 아래의 모든 .pdf 파일을 무시
doc/**/*.pdf
1. GitHub Desktop 및 Git Bash를 이용한 첫 셋팅
File > Option
여기서 로그인하는게 제일 우선입니다 !!
저같은 경우에는 깃 계정을 2개 사용하는데 (개인용 / 회사용) 처음에 클론이 안 되길래 오류인가 싶었는데 로그인을 개인 계정으로 해두어서 url을 알아도 클론이 안 되더라구요 ㅠ_ㅠ
저같은 바보같은 실수하지마세욥 ,,,,
git Bash를 이용한 셋팅입니다.
우선 계정 이름과 이메일을 먼저 확인합니다 !
로그인이 되어있다면 이 명령어를 사용하면 이름이 나옵니다 ! ✏
git config --global user.name
git config -- global user.email
그리고 설정하실때는..
git config --global user.name "HongGilDong"
git config -- global user.email "gildong@gmail.com"
이런식으로 설정하면 된다 !
2. Git Branch
코드를 통째로 복사하고 나서 원래 코드와 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.
git branch //브랜치 목록
git branch -v //브랜치마다 마지막 커밋 메시지
git checkout -b newBranch //브랜치를 만들고 바로 이동
git branch -d newBranch //브랜치 삭제
git branch --merged //이미 merge한 브랜치 목록을 확인한다.
git branch --no-merged //merge 안 한 브랜치 목록
두 브랜치가 한 부분을 동시에 수정하고 merge한다면 충돌이 난다.
git status 로 both modified : 양쪽에서 수정한 파일을 찾아낸다.
다음 git 공부에는
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-Rebase-%ED%95%98%EA%B8%B0
Git - Rebase 하기
Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만든다. 새 커밋을 서버에 Push 하고 동료 중 누군가가 그 커밋을 Pull 해서 작업을 한다고 하자. 그런데 그 커
git-scm.com
정리하기 ,,,
'BACKEND💻' 카테고리의 다른 글
[Nest.js] winston 사용하여 로그 남기기 (0) | 2024.01.02 |
---|---|
쿠키, 세션, 토큰의 차이점 (0) | 2022.01.11 |
개발 환경 용어 정리 (0) | 2021.07.05 |