git

    Git rebase

    git rebase vs git merge git merge 예를 들어 main브랜치가 있고 feature브랜치가 있다고 가정하자. feature브랜치에 main브랜치를 merge를 하고 싶을 경우 우선 git checkout feature 명령어를 이용해 현재 브랜치를 바꿔주고 main브랜치(git merge main)를 머지한다. 이렇게 되면 기존의 마지막 feature브랜치 가지들도 살아있으면서 새feature브랜치와 main브랜치의 내용을 모두 담고 있는 새로운 커밋을 생성한다. git rebase 위와 똑같은 상황이라 가정하고 feature브랜치에 main브랜치를 머지한다 해보자. git checkout feature, git rebase main 명령어를 실행한다. 이 명령어를 실행할 경우 위..

    Git tag

    태그 보통 일반 사용자들이 사용할 때 유의미한 커밋을 릴리즈라고 하는데 대부분 이 릴리즈의 커밋을 기록하기 위해 사용한다. git tag git tag : git tag 조회 git tag -l "v.1.1.2*" : 와일드카드를 이용해 v.1.1.2 버전의 태그들만 조회 Annotated 태그 vs Lightweight 태그 Lightweight 태그는 단순 커밋에 태그를 달고, Annotated 태그는 주석을 달 듯 태그에 더 많은 정보를 주석으로 달 수 있는 태그를 달 수 있다. git tag [원하는 태그 명] : 현재 가리키고 있는 브랜치의 최신 커밋에 [원하는 태그명]으로 태그를 생성한다. git tag [원하는 태그 명] [태그를 만들고 싶은 commit ID or 브랜치 이름] : [원하는..

    Git 원격저장소

    원격저장소 개인이 작업할 때는 백업공간이라는 의미가, 다른 사람들과 협업할 때는 공유한다는 부가적인 의미가 있는 저장소. 개인이 작업하고 있는 공간을 지역저장소(로컬)라고 말하며 원격저장소와는 대비되는 개념. git remote의 명령어를 입력해 원격저장소의 경로를 저장하는 경우 git폴더 안에 있는 config라는 파일 안에 remote 내용을 기억한다. git checkout? reset? git checkout [commit ID] : commit ID의 상태로 돌아가기 git checkout [commit ID] [file name] : filename의 파일만 commit ID 상태로 돌아가기 git remote git remote -v : 현재 연결돼있는 저장소 조회 git remote add..

    Git의 원리

    Git의 원리

    git branch? git의 브랜치는 refs/heads 위치 아래에 위치 하나를 더 만드는 것을 의미한다. 따라서 파일 구조를 보면 만약 현재 브랜치가 'exp'라는 브랜치를 바라보고 있는 경우 refs/heads/exp라는 경로가 생기고 HEAD라는 파일은 이 경로를 참조한다. 또한 해당 경로에 커밋을 찍은 경우 해당 경로는 커밋ID을 갖고 있게 된다. git branch 충돌? a브랜치에서 A파일을 만들고 b브랜치에서 B파일을 만든 후 두 파일을 머지했을 때 어떠한 충돌도 일어나지 않고 새로 생긴 커밋에는 두 개의 파일이 모두 존재한다. 같은 파일을 수정하고 병합했을 때도 같은 파일 내에서 각 브랜치에서 수정한 위치가 다르다면 정상적으로 머지가 가능하고 각 브랜치에서 수정한 내용이 존재하는 것을 ..