※명령어의 기초※
<숫자> 대용으로 <^> 가능(이전 단계로 한 번 이동하는 기능)
※ 기본 명령어
- ★git init : 프로젝트의 디렉토리로 이동해서 새로운 git 저장소 생성한다
- ★git add <파일> : 프로젝트의 디렉토리에 파일을 변경 내용을 staging area로 추가한다
- git add .: 현재 디렉토리의 모든 변경 내용을 staging area로 넘긴다
- ★git status : 파일의 상태(수정 여부)를 확인한다
- ★git clone <repository url> : 다른 프로젝트에 참여하거나 Git 저장소 복사한다
- ★git rm <파일> : 파일을 삭제하고 stage 상태로 변환하고 commit 후에 완전히 삭제한다
※ Commit 관련
- ★git commit -m "<내용>" : 현재 상태를 커밋하다
- git commit --amend : checkout 된 branch의 커밋을 새로 정정한다
※ Checkout 관련
- ★git checkout <branch 이름> : 해당 브랜치로 넘어가다
- git checkout <커밋 or...> : HEAD를 해당 위치로 이동시킨다
- ★git checkout -b <branch 이름> : 브랜치를 만들고 만든 브랜치로 넘어간다
- git checkout HEAD~<숫자> : 위치하고 있는 HEAD가 숫자만큼 이전 커밋으로 이동한다.
- git checkout <branch 이름>~<숫자> : 위치하고 있는 HEAD가 지정한 브랜치의 숫자만큼 이전 커밋으로 이동한다.
※ Branch 관련
- git branch -f <branch 이름> <<branch 이름 or 커밋 or HEAD>~<숫자>> : 해당 브랜치를 지정한 지정한 곳의 커밋으로 이동한다
- git branch <branch 이름> : 브랜치를 만들다
※ Rebase 관련
- ★git rebase <branch 이름> : checkout 된 브랜치를 해당 branch에 갱신한다
- git rebase -i <branch 이름 or 커밋 or HEAD>~<숫자> : checkout 된 브랜치로부터 지정한 곳까지의 commit 중 pick 한 것을 제외하고 순서를 정한 뒤 지정한 곳부터 새로 갱신한다
※ Reset 관련
- git reset <branch 이름>~<숫자> : 해당 브랜치에서 숫자만큼 이전 커밋으로 이동하면서 앞의 커밋들을 제거한다
- git reset <branch 이름> : 해당 브랜치의 앞부분 커밋을 제거한다.(최신 chekcout 위치의 branch는 해당 브랜치로 이동한다)
※ 기타
- git revert <branch 이름> : 해당 브랜치를 최신 커밋으로 갱신한다.(최신 checkout 위치의 branch에서 revert)
- git cherry-pick <커밋 or branch 이름> : 커밋 또는 이름을 최신 checkout위치의 branch에 갱신한다.
- git tag <tag 이름> <branch 이름 or 커밋 or HEAD>~<숫자> : tag를 해당 위치에 등록한다
- git describe : checkout 된 위치의 branch에서 가장 가까운 태그의 이름과 태그까지의 commit 개수 해당 태그의 commit 명을 알려준다 ex) V1_1_gC6
- ★git pull : git fetch와 git merge를 한 번에 해주는 명령어로 생각하면 됨
- ★git branch -d <branch 이름> : merge 또는 rebase 하고 필요 없어진 branch를 제거한다
- ★git push origin <branch 이름> : Develop의 경우 해당 브랜치를 업로드한다(해당 브랜치를 merge 하고 싶다면 web에서 merge Requests를 한다
- ★git fetch : pull이랑 비슷한 거 같지만 /<branch 이름>만 움직이고 branch들은 움직이지 않음
- git fakeTeamwork <branch 이름> <숫자> : 원격 저장소에 해당 브랜치의 커밋을 숫자만큼 가장하여 생성
※TIP※
- branch 생성 후 checkout을 통해 branch로 이동하여 건드리는 파일은 다른 branch에 영향을 주지 않음
checkout을 통해 다른 branch로 이동하면 repository도 branch 따라 바뀌는 것을 알 수 있음 - 현재 프로젝트 참여인원은 전부 maintainer을 임으로 merge 또는 rebase의 사용을 project개설자의 허락 없이 가능 단, Develop일 때 git push origin을 이용하여 병합 요청하는 방법도 연습해볼 것
※Git Ignore※
- 정의: Project에 원하지 않는 Backup File이나 Log File, 혹은 컴파일 된 파일들을 Git에서 제외시킬 수 있는 설정 File
- 방법: 최상위 directory(폴더)에 .gitignore 파일 생성
*.txt #모든 .txt 형식 파일을 무시
/file.py #현재 디렉토리(/)의 file.py만 무시
test/ #test라는 폴더 안의 모든 파일 무시
src/**/*.txt #상위 디렉토리(**) 즉 src 폴더의 모든 .txt파일 무시
※Git을 이용한 협업※
- Git Flow: 깃을 이용한 협업 방식
- master: 서비스 출시 가능한 Branch
- develop: 다음 서비스 버전 출시 개발하는 Branch
- feature: 기능 개발하는 Branch
- release: QA(Quality Assurance)를 진행하기 위해 develop에서 임시로 파생하는 Branch
- hotfix: 서비스 출시 버전에서 발생한 버그를 빠르게 수정하는 Branch
※Git Conflict※
- Conflict: 두 branch의 동일한 파일에 상반된 내용이 있다는 뜻. 이때 Git이 두 가지 내용 중에서 어떤 내용을 merge의 결과로 해야할지 모르기 때문에 사용자가 결정해줘야 한다.
- 해결
- Conflict가 발생한 모든 파일들을 열어서 충돌 발생한 파일을 수정한다.
- '<<<<<<< <branch>' 부터 '=======' 사이의 구간이 현재 체크 아웃된 파일의 내용이고 '=======' 부터 '>>>>>>> <branch>'사이는 병합하려는 파일의 부분이다.
- 둘 중 하나를 수정하거나 둘을 모두 수정하여 git add. 를 실행하여 수정사항이 발생한 모든 파일을 staging area에 올려준다.
- git commit으로 커밋한다.
※SSH 공개키 만들기※ - aws
1. $ cd ~/.ssh
2. $ ls
3. $ ssh-keygen
4. $ cat ~/.ssh/id_rsa.pub
->$ cat ~/.ssh/id_rsa.pub 이 명령어를 통해 나오는 키 ssh-ra부터 끝까지 복사하여 설정 SSH키에서 키 추가하면 lab.hanium 사이트의 주황색 경고 팝업과 git clone에러 해결 가능
반응형
'Develop > Back-End' 카테고리의 다른 글
[Spring Boot] 단위 테스트 코드를 작성해보자 (1) (0) | 2021.08.06 |
---|---|
[DialogFlow] What is DialogFlow? (0) | 2021.07.30 |
[Spring Boot] RESTful Web Service 구축하기 (0) | 2021.06.05 |
[Spring Boot] 프로젝트 기본 구조를 알아보자 (0) | 2021.05.01 |
[Spring Boot] What is Spring? (0) | 2021.05.01 |
댓글