git에 대해서 공부하면서 필요한 내용에 대해 정리해 둔 포스트이며 아마 큰 변화가 없다면 혹은 추가적인 공부가 필요하지 않다면 인트로이자 마지막 글이 될 것으로 생각한다.
버전 관리 도구의 일종으로 버전 관리를 통해 파일의 변화를 기록했다가 특정 시점의 기록을 다시 사용할 수 있도록 하는 시스템
프로젝트를 진행할 경우 다른 개발자와의 협업이 잦음
이럴 경우 파일을 관리하는 서버가 별도로 존재하고 클라이언트가 중앙 서버에서 파일을 받아서 사용하는 방식이 유리
중앙 서버에 문제가 발생할 경우 시스템의 백업이 존재하지 않는다면 모든 히스토리를 잃을 수 있고 이는 로컬에서도 존재하고 있었던 문제
# 전역 사용자 설정
git config --global user.name {name} # 이름
git config --global user.email {email_address} # 이메일
# 로컬 사용자 설정 (해당 디렉토리에서 실행)
git config user.name {name} # 이름
git config user.email {email_address} # 이메일
# 설정 조회
git config --list
# 생성
git mkdir {path}/{folder_name} # 폴더
git touch {file_name} # 파일
git init # 파일 관리 시스템
# 저장소 및 히스토리 복제
git clone {repository_url}
# 원격 저장소
git remote add {remote_repo_name} {remote_repo_url} # 추가
git remote -v # 정보 확인
# commit history
git log
git log --oneline # 정보 표시 간략화
git log --all # 현재 head 이후의 최신 기록들을 포함한 전체 정보를 표시
git log --graph # 브랜치를 시각화하여 분기를 표현한 그래프 형태로 정보를 표시
git status # 변경사항을 확인하는 명령어
git commit -m {message} # 현재 스테이지에 존재하는 변경 사항을 커밋
git add {file_name} # 특정한 파일을 스테이지에 추가하는 경우
git add . # 해당 레포지토리의 변경사항을 전부 스테이지에 추가하는 경우
git rm --cached # root commit이 존재하지 않을 때
git restore --staged # root commit이 존재할 때
git commit --amend
# 스테이지에 파일이 없는 경우: 직전 커밋의 메시지를 수정
# 스테이지에 파일이 있는 경우: 기존 커밋에 현재 스테이지를 더하여 덮어쓰기 진행
git reset --soft {commit_id} # 미래 파일들 전부 stage에 돌려놓음
git reset --mixed {commit_id} # default, 미래 파일들을 전부 working directory에 유지 (add 필요)
git reset --hard {commit_id} # 미래 파일 전부 제거
git revert {commit_id} # 과거 commit을 제거 후, 제거했음을 commit으로 추가
reset은 commit 갯수가 줄어들기 때문에 협업에 부적합, 따라서 협업 시 reset 대신 revert 사용을 권장
Branch: 작업 공간을 분할, 독립적으로 작업할 수 있도록 돕는 장치
# 조회
git branch # 로컬 저장소의 브랜치 대상
git branch -r # 원격 저장소의 브랜치 대상
# 생성
git branch {branch_name}
git branch {branch_name} {commit_id} # 특정 커밋 지점을 기준점으로 생성
# 제거
git branch -d {branch_name} # 병합 완료된 경우
git branch -D {branch_name} # 병합하지 못한 브랜치 강제 삭제
# 브랜치 이동
# 이동 전 반드시 현재 브랜치의 변경사항을 기록할 것
git switch {branch_name} # 이미 있는 브랜치로 이동
git switch -c {branch_name} # 해당 이름의 브랜치를 생성 후 이동
git switch -c {branch_name} {commit_id} # 특정 커밋 지점을 기준점으로 하는 해당 이름의 브랜치를 생성 후 이동
분기된 브랜치를 병합하는 과정
# 해당 브랜치를 현재 위치한 브랜치에 병합
git merge {merged_branch}
소유권이 없는 원격 저장소를 복제하는 것, 주로 오픈 소스와 같은 협업 대상이 다수일 때 사용
#
# 원본 원격 저장소 (upstream) <----------- 복제본 원격 저장소 (origin)
# \ merge request /|
# \ |
# \ push branch | pull master
# \ |
# \ ( pull upstream ) |/
# ------------------> 로컬 저장소 (user)
#
비밀댓글입니다.