반응형
이 포스팅에서 작성하는 내용은 제대로 파는 Git & GitHub - by 얄코 에서 발췌하였습니다.
1. Git
- VCS(Version Control System) 도구로서, 프로그래머가 입력한 소스들을 시간별로, 공간별로 잘 정리해주는 프로그램
- 특정 시점에 입력한 소스에서 무슨 내용이 추가됐는 지를 확인할 수도 있고 아예 그 입력을 없던 것으로 돌릴 수도 있다.
- 프로젝트 안에서 자신만의 실험 기능을 할 때, 다른 사람들도 사용하는 공간이 아니라 새로운 공간을 만들어서 그 공간 안에서 구현할 수도 있다. (물론, 추후에 공간끼리 합치는 것도 쉽게 가능하다)
2. Git의 기본 명령어
- git init : '이 프로젝트를 git으로 관리하겠다' 라는 명령어
- 이 때, .git 이라는 숨김 폴더가 생성되는데, 이 폴더에는 소스 수정 내역과 같은 관리 데이터가 쌓인다.
- git status : git 상태 확인(추가되거나 변경, 삭제된 파일)
- git commit
- git commit -m "msg"
- git commit : 명령어 입력 시, vim 에디터로 이동한다. 편집기 내부에서 메시지를 적고 저장 후 나오면 된다.
- git diff : 변경사항 세부내용 확인. (vim 에디터로 보여준다.)
- git log : 커밋 내역 확인
3. Git Ignore
- 특정 파일들을 git에서 관리하고 싶지 않을 때 사용한다.
- .gitignore 파일에 특정 파일을 표현하면 git에서 관리하지 않는다.
- 표현 방식 : https://git-scm.com/docs/gitignore
4. 시간 되돌리기
- git reset : 원하는 시점으로 돌아간 후, 그 이후의 커밋 내역들은 삭제
- git reset --hard [git log에서 찾은 돌아갈 커밋의 해시코드]
- --soft, --mixed 옵션도 있으며, 해당 내용은 다음 포스팅에서 작성
- 커밋의 해시코드 뿐 아니라 HEAD를 이용해서 시점을 지정할 수 있다.
- git reset --hard [git log에서 찾은 돌아갈 커밋의 해시코드]
- git revert : 돌리고 싶은 특정 커밋을 실행됐던 내역을 반대로 실행시킨다. (이 내역조차 기록)
5. branch
- git branch [branch-name] : git branch 생성
- git branch : git branch 목록 보기 및 현재 branch 표시
- git branch -all : 원격 저장소의 branch까지 표시
- git switch [branch-name] : git 현재 branch 변경
- git branch -d [branch-name] : git branch 삭제 (-D : 강제 삭제)
- git branch -m [before-name] [after-name] : git branch 이름 변경
- git log --all --decorate --oneline --graph : 모든 브랜치 커밋 내역 확인
- branch 통합 방법
- Merge : 하나의 브랜치를 다른 브랜치에 커밋한다.
branch의 사용 내역을 남겨두며, 이 조차 커밋이기 때문에 reset이 가능하다.- git merge [branch-name] : branch-name을 현재 branch로 merge한다.
- git merge --abort : merge 중 충돌이 났을 때, merge 중단
- Rebase : 하나의 브랜치를 잘라내서 그대로 다른 브랜치에 붙인다. (줄기가 한 줄로 보임)
- git rebase [branch-name] : 현재 branch를 [branch-name]에 rebase한다.
- git rebase --abort : rebase 중 충돌이 났을 때, rebase 중단
- git rebase --continue : rebase 다시 진행
- cherry-pick : 다른 브랜치에 있는 커밋 내역을 선택적으로 현재 브랜치로 복사한다.
- Merge : 하나의 브랜치를 다른 브랜치에 커밋한다.
6. GitHub
- git remote add origin [원격 저장소 주소] : 원격 저장소의 주소를 origin이라는 이름으로 추가한다.
(origin 이름 수정 가능) - git push -u origin main : origin(원격저장소)로 현재 main의 내용을 push한다.
-u : main 과 명시된 원격 브랜치(origin)을 기본 연결하겠다.
추후에, git push 명령어 만으로도 알아서 push가 된다.- git push --force : 강제 Push
- git remote remove [원격 저장소 이름] : 원격 저장소 주소가 아닌, git remote add로 추가한 원격 저장소 삭제
참고) 실제 GitHub가 지워지지 않는다 - git clone [원격 저장소 주소] : 원격 저장소의 파일을 내려받는다.
- git pull : 원격 저장소의 내용을 로컬 저장소로 update한다.
- git pull --rebase : rebase를 하면서 pull 한다.
- git pull --no-rebase : pull 받으면서 알아서 merge가 된다.
(로컬 레파지토리 브랜치와 원격 저장소의 브랜치를 merge)
- git fetch : 원격 저장소의 변경사항을 확인한다.
ex) 원격에서 새로운 브랜치를 만든 경우, fetch를 하면 로컬에 해당 브랜치가 자동으로 업데이트 된다. - git switch -t [원격 저장소 이름]/[원격 브랜치] : 브랜치를 원격 저장소의 원격 브랜치로 이동하겠다.
-t : 이 원격 브랜치를 원격 저장소의 기본 브랜치로 설정하겠다. - git push [원격 저장소 이름] --delete [원격 브랜치] : 원격 저장소의 원격 브랜치 삭제
7. git help
- git help : git 도움말 명령어
- -a : Git의 모든 명령어 리스트
- git (명령어) -h : 해당 명령어의 설명 및 옵션 보기
ex) git commit -h - git help (명령어) : 해당 명령어의 설명을 자세한 웹사이트에서 보기
ex) git help commit
- https://git-scm.com/book/ko/v2 git 설명서 (한국어 버전. PDF 다운로드 가능)
반응형
'Git' 카테고리의 다른 글
[Git] Review Comment Pending (0) | 2023.05.28 |
---|---|
[Git] branch, log, hooks (0) | 2023.03.19 |
[Git] clean, restore, reflog, tag (0) | 2023.03.19 |
[Git] Git fetch pull, config, hunk, stash (0) | 2023.03.19 |
[Git] Git 구조 (0) | 2023.03.18 |