Git 8

[amend commit & rebase] 이전에 쌓인 커밋들을 변경하고 싶어요.

커밋 메시지를 수정하고 싶다거나 변경된 파일 일부를 되돌릴 수도 있습니다. 현재 작업 중인 커밋(HEAD) 간단하게 수정할 때 git commit --amend를 사용합니다. 아래에 있는 커밋들 중 일부를 수정하거나 변경할 때 git rebase --interactive를 사용합니다. TIP git revert의 경우 대상 커밋을 되돌리는 새로운 커밋을 만드는 기능이며, 커밋 자체를 변경하지는 못합니다 git commit --amend --amend는 현재 커밋(HEAD) 위에 변경사항을 덮어씌울 때 사용하는 옵션입니다. 커밋을 한 후 추가적인 변경사항이 생겼거나 커밋 메시지를 변경하고 싶을 때 많이 사용합니다. 만약 변경사항을 추가하고 싶다면 commit을 할 때와 마찬가지로 staging(index)..

Git 2022.05.23

[revert] 이전 커밋의 변경사항을 되돌리고 싶어요.

이전 커밋의 변경사항을 되돌려야 하는 상황은 꽤 많이 발생합니다. 에러를 발생시키는 커밋이 있다면, 빠르게 해당 커밋의 변경사항을 되돌려야 합니다. git revert {커밋 ID} 다음과 같은 세 개의 커밋이 있는 상황이라고 합시다. $ git log --oneline 875a6e6 b 파일을 추가한다 1fc71a0 a 파일을 수정한다 b014111 a 파일을 추가한다 이때 우리는 1fc71a0 (a 파일을 수정한다) 커밋이 문제가 있다는 걸 알게 됐습니다. 1fc71a0 커밋 내용은 이미 remote repository 공간에 올라갔습니다. 기존 커밋들을 지우지 않고 현재 커밋 위로 이전 커밋 내용을 다시 되돌리는 커밋을 만듭니다. $ git revert 1fc71a0 Revert "a 파일을 수정한..

Git 2022.05.22

[stash] 변경 사항을 커밋하기 보단 임시저장하고 싶어요

git stash git stash는 수정 내용을 임시 저장하는 명령어입니다. main 브랜치로부터 my-branch를 만들어 이 브랜치로 전환해서 작업하고 있었다고 합시다. 작업 도중 main브랜치로 전환해야 할 일이 생겼습니다. 이때 변경사항을 커밋흐로 남기기에는 아직 진행중이라 애매한 상황이라면 임시 저장을 하는 git stash를 활용하면됩니다. $ git stash Saved working directory and index state WIP on my-branch: b014111 a 파일을 추가한다 만약 메시지를 남기고 싶다면 -m 을 활용하면 됩니다. $ git stash -m "OOO 변경 사항..." 이제 main 브랜치로 전환할 수 있습니다. $ git switch main 'main'..

Git 2022.05.21

[restore & reset] 변경사항, 커밋을 초기화하고 싶어요

두개의 커밋이 있는 상황에서 우리는 a파일을 추가하고 커밋 시점으로 초기화하고 싶습니다. $ git log --oneline c008c47 a 파일을 수정한다 b014111 a 파일을 추가한다 이때 git reset명령어를 사용하면됩니다. git reset명령어는 아래와 같은 옵션을 가집니다. git reset --hard {커밋 ID} 특정 커밋 시점으로 돌아갈 때, 해당 커밋 이후 만들어진 모든 작업물을 삭제합니다. $ git reset --hard b014111 HEAD의 현재 위치는 b014111입니다 a 파일을 추가한다 $ git log --oneline b014111 a 파일을 추가한다 $ git status 현재 브랜치 main 커밋할 사항 없음, 작업 폴더 깨끗함 git reset --mi..

Git 2022.05.20

[log & reflog] 이전 commit 내역들과 변경사항을 확인하고 싶어요

git log 커밋 내역을 확인하는 가장 일반적인 방법은 git log명령어를 입력하는 것입니다. $ git log commit c008c4785eeb14a395b4aa6cf9fa3b9e5896f5a4 (HEAD -> main) Author: grab Date: Tue Aug 17 21:21:45 2021 +0900 a 파일을 수정한다 commit b014111c82fa239b771b2b6d6bdc567282e7b325 Author: grab Date: Tue Aug 17 20:34:32 2021 +0900 a 파일을 추가한다 --oneline 으로 간략하게 볼 수도 있습니다. $ git log --oneline c008c47 (HEAD -> main) a 파일을 수정한다 b014111 a 파일을 추가한..

Git 2022.05.19

브랜치

브랜치를 이용한 작업 흐름 git switch -c 명령어로 우리가 사용할 브랜치를 만듭니다. 우리는 유저 관련 기능을 개발하기로 했으므로, 브랜치 이름도 users 라고 짓겠습니다. # 현재 브랜치(main)에서 users 라는 새로운 브랜치를 만듭니다. $ git switch -c users # 위 명령어는 사실 git switch -c users main와 동일합니다. # git switch -c {새로운 브랜치 이름} {기준 브랜치} 이 명령어 포맷입니다. # 뒤에 {기준 브랜치}는 생략 가능하며, 생략할 시 현재 브랜치를 기준으로 새로운 브랜치가 만들어집니다. 이 명령어의 실행 결과로 우리는 기존의 메인 브랜치인 main 브랜치에서 users 로 바꾸었습니다. 이제 users 브랜치는 main ..

Git 2022.05.18

작업 공간

Git에는 크게 4가지 작업 공간이 있습니다. Workspace 개발자가 작업하는 일반적인 공간입니다. git add 명령러 이전에는 변경 사항들은 workspace에 기록됩니다. index 변경된 모든 파일 및 폴더들을 추적하는 공간입니다. staging Area라고도 이야기 합니다. git add 명령어로 workspace 공간에 작업물들을 이 공간으로 보낼 수 있습니다. 우리가 관심 있고 최종적으로 커밋하고자 하는 작업물들을 이 공간으로 두면 됩니다. 한 번 index에 올라갔던 파일들은 git에서 계속해서 추적합니다. local repository - 최종적으로 커밋된 작업물들이 놓이게 되는 공간입니다. - git commit 명령어로 index에 있는 파일들을 이 공간으로 보낼 수 있습니다. -..

Git 2022.05.18