Skip to content

Beginning Git #81

@simoniful

Description

@simoniful

빈 디렉토리 Repo에 기록하기

touch .keep

참고

Git commit 분리하기 - Staging Area

# Staging 영역은 작업 디렉토리와 Git 저장소의 변경 이력 사이에 징검다리 역할
# i 옵션을 통해서 큐레이팅 가능
git add -i

Status로 상태를 확인하고

Update를 통해 스테이지에 올릴 변경사항 지정 예시에서는 books/book_ideas.md며 최초 앞 글자의 알파벳을 기준으로 커맨드 구성

다시 Status로 상태를 확인하면 스테이지 상태에 올라간 것을 확인 가능

Revert를 통해 수정할 변경사항 지정 예시에서는 books/book_ideas.md며 최초 앞 글자의 알파벳을 기준으로 커맨드 구성

다시 Status로 상태를 확인하면 스테이지 상태에서 내려온 것을 확인 가능

Patch 옵션을 통해서 각각 변경사항에 대해서 확인이 가능하며 각 라인의 hunk(단위)를 지정하여 스테이징에 올릴 여부를 선택 가능 - 코드 라인 기준으로 선택 ? 옵션으로 도움되는 명령어 확인 가능 - y/n 는 기본 선택 옵션

s 옵션을 통해서 Split하고
분리된 라인에 대해서 각 각의 스테이징 여부 선택

다시 Status로 상태를 확인하면 스테이지 상태에 하나의 라인은 올라가고 다른 하나의 라인은 내려온 것을 확인 가능

Diff를 통해서 두 개의 파일 간 차이에 대한 정보를 출력하는 파일 비교 를 확인 가능하고 books/book_ideas.md의 변경사항 확인 가능 확인 후에는 q옵션을 통하여 git add 종료 가능 종료 이후에는 스테이징 된 부분만 커밋하고, 남은 변경 부분은 추가적으로 add를 통하여 분리 완료!

GIt merge

3 way merge

서로 다른 브랜치에 공통되는 base branch를 기점으로 충돌을 최소화 시키는 방법
브랜치간의 병합을 진행할 때, base를 기준으로 어떠한 브랜치의 파일이 수정되었는지
확인할 수 있어서 충돌의 문제를 해결하는데 효과적

참고

Fast forward merge

fast-forward 방법은, branch간의 병합을 진행할 때 커밋이 생기지 않고 merge 명령어를
실행하는 브랜치의 Head Commit이 병합 되는 branch의 Head commit으로 이동되는 방식

참고

Git Fetch

git fetch는 로컬 Git에게 원격 저장소에서 최신 메타데이터 정보를 확인하라는 명령을 전달한다
단, fetch는 원격 저장소에 변경사항이 있는지 확인만 하고, 변경된 데이터를 로컬 Git에 실제로 가져오지는 않는다
반면, git pull은 원격 저장소에서 변경된 메타데이터 정보를 확인할 뿐만 아니라 최신 데이터를 복사하여 로컬 Git에 가져온다
git fetch를 사용하면 마지막 pull 이후 원격 저장소 또는 브랜치에 적용된 변경 사항을 확인할 수 있기에
fetch로 변경 사항을 먼저 확인한 후 pull을 실행하는 방법이 보다 안전하다

Git Prune

git prune은 unreachable한 git object들을 "local"에서 clean하는 작업이다
unreachable이란 git tree에 의해 참조되지 않는 gc 대상이 되는 dangling refs 들이다
prune은 remote의 것을 지우는 것이 아닌, local 에서 remote 를 ref 하는 것 중 유효하지 않은 것을 제거하는 작업이다
git prune은 보통 직접 수행되지 않는다
git remote prune과 git fetch --prune도 git prune이 하는 일을 똑같이 한다
remote에 존재하지 않는 refs 를 지워버린 후에 fetch 나 pull 을 수행한다

Git mergetool

참고

Git merge 툴을 이용하여 머지 컨플릭트 시 변경 사항 선택 유무를 하였을 때
실제로 .orig 파일이 생성된다.
해당 파일은 커밋 시에 생성된 파일로 status에 반영되며
변경 사항을 선택하여 해당 파일을 삭제하고 커밋하여 변경 사항을 취사 선택 할 수 있다

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions