안녕하세요. git 관련하여 자주 쓰이는 명령어를 사용하며
개념도 익혀보도록 하겠습니다.
위의 그림을 보면 영역은 크게 4개의 영역으로 working directory, staging area, local repository, remote repository로
나뉘어져 있습니다.
먼저, working directory는 말그대로 내 컴퓨터에 있는 영역입니다.
아직 작업 공간에 올려놓지 않고 아직은 내컴퓨터에 있는 영역이라고 생각하면 됩니다.
이 때 우리가 git add [저장시킬 파일명] 명령어를 통해 저장시킬 파일을 staging area에 올릴수 있습니다.
변경사항이 있는 파일들이 staging area에 올라갈 수 있습니다.
staging area는 변경사항이 있는 파일을 기록하고, commit할 파일을 올려두는 영역이라고 생각하면 됩니다.
참고로 변경사항 있는 파일이 여거개가 있는 경우
파일이름을 하니씩 적어주지 않고 git add . 명령어로 변경사항이 있는 파일을 한번에 올릴수 있습니다.
자 그런 다음 git commit -m "커밋 메세지" 명령어를 통해 Local Repository(로컬저장소)에 변경사항을 저장시킵니다.
여기서 우리는 왜 한번에 Remote Repository(원격저장소)에 저장을 시키지 않는지 의아해 할 수 있는데
이 local Repository가 다른 형상관리프로그램과 다른 차이점입니다. 수정 결과를 한번에 반영하지 않고
local Repository에 올려놓고 다른 개발자들과 협업에서 충돌이 나는 부분이 있는지, 수정사항이 있는건지
파악하기 위해 한번에 원격저장소에 올리지 않고 로컬저장소에 올리는 것입니다.
충돌이 나지 않고 최종적으로 Remote Repository(원격저장소)에 저장해도 괜찮다면
git push 명령어를 통해 원격저장소에 저장합니다.
다음은 원격저장소에 있는 파일을 내 컴퓨터로 가져오는 작업을 해보겠습니다.
git fetch 명령어를 통해 원격저장소의 파일을 로컬저장소에 가져옵니다.
이때도 로컬저장소에 가져 오는 이유는 최종적으로 내컴퓨터에 저장시키기전 충돌과 같은 문제를
발생하지 않기 위해 확인하기 위함이겠죠.
최종적으로 내 컴퓨터에 저장을 하겠다고 하면 git merge 를 통해 내 컴퓨터에 있는 파일과 병합을 시켜줍니다.
만약에 로컬저장소를 거치지 않고 한번에 병합을 하려고 한다면
git pull 명령어를 통해 한번에 수행할 수 있습니다.
자 이제 가장 기본적인 커밋 명령어는 다 살펴 보았고요.
좀더 구체적인 상황에서 사용할 수 있는 명령어에 대해 알아보겠습니다.
커밋 수정 관련 명령어를 알아보겠습니다.
git log
먼저 git log 명령어는 commit 내역을 전체 볼수 있습니다.
언제 수정했는지, 커밋 메세지, 커밋 해시값 등 커밋관련 정보 내역을 모두 열람할 수 있습니다.
git commit --amend
위의 git commit --amend 명령어는 push 하기전 내가 commit 했던 커밋 사항을 변경할 수 있는 명령어입니다.
커밋관련 정보가 기록된 유닉스 에디터가 나오며 유닉스 에디터를 통한 편집으로 커밋 사항을 수정할 수 있습니다.
git reset --hard 해시값
위의 명령어는 특정커밋 시점으로 돌아갈 수 있습니다. 그리고 이 --hard 옵션을 통해
특정 커밋 시점 이후의 커밋 기록은 모두 삭제가 됩니다.
--miexed 옵션과 --soft 옵션도 존재하는데
--mixed 옵션은 변경 이력은 삭제하지만 변경된 내용에 대해서는 남아있는 상태로 unstage된 상태이므로
commit을 진행하기전 stage에 올려놔야 합니다.
--soft 옵션은 변경 이력은 삭제하지만 변경된 내용에 대해서는 남아있는 상태로 바로 커밋할수 있습니다.
git push -f => 강제로 푸쉬
커밋 내용을 수정하다보면 꼬이는 경우도 발생을 하는데 이때 강제로 push를 진행하고 싶다면 위의 명령어를
사용하여 강제 푸쉬를 진행할 수 있다.
자 이제는 브랜치 관련 명령어를 알아보도록 하겠습니다.
git branch
브랜치 목록 나열 및 현재 브랜치 상태
git brach [브랜치명]
해당하는 이름의 브랜치 생성
git checkout [사용할브랜치명]
사용할 브랜치를 선택
git merge [합병할브랜치명]
브랜치에서 변경한 내용(즉, 커밋한 내용)을 합병하는 명령어, 참고로 master 브랜치에서만 사용할 수 있는 명령어이다.
만약 마스터에서 커밋한 부분과 브랜치에서 커밋한 부분이 같지만 그 내용이 다른 경우
git merge 명령어를 사용하면 충돌이 일어난다. 그리고 충돌난 부분에 대해서는 git이 직접 파일에 기록을 해두므로
파일을 통해 확인하고 수정할 수 있다.
충돌이 일어난 부분을 수정하였다면 다시 마스터 브랜치에서 커밋하여 다시 병합하여 push 하게 되면
정상적으로 병합후 저장까지 완료된다.
git branch -d [삭제할 브랜치명]
다 사용하고 더이상 사용하지 않을 브랜치를 삭제 할 수 있다.
아카이브 관련 명령어
git archive --format=zip master -o [파일명].zip
위의 명령어는 소스코드를 추출하는 명령어이다.
위의 명령어를 해석하면 포맷형식은 zip으로 추출할 브랜치는 master 브랜치고 -o 옵션은 output이라는 뜻으로
추출한 소스코드 파일명을 적는 옵션이다.
git 환경설정 관련 명령어
git config --global list
깃의 환경설정 출력
git config --global user.name "git계정 이름 설정"
git 계정의 이름을 설정
git config --global user.email "git 계정 이메일 설정"
git 계정의 이메일을 설정
'DB' 카테고리의 다른 글
[xcode] 깃허브 연동(커밋 & 푸시) (0) | 2021.06.01 |
---|---|
[이클립스 git 연동] 이클립스 프로젝트 git 리포지터리에 commit&push하기 (0) | 2021.05.27 |
git 명령프롬프트를 통한 사용법(git 명령어 사용법) (0) | 2020.10.29 |
이클립스 프로젝트와 깃허브(github) 연동방법 (0) | 2020.10.27 |
데이터베이스 정규화(1차, 2차, 3차, BCNF 정규화) (0) | 2020.09.30 |