코딩해보니/Git 60

[Git_29] 브랜치(Branch)와 커밋(Commit)

브랜치(Branch)와 커밋(Commit) 앞서 testbranch1에서 filea.html 파일을 수정했습니다. [Git_28] 브랜치(Branch) 이동(checkout) 브랜치(Branch) 이동(checkout) 브랜치는 작업자라고 생각하면 이해가 쉬울 것이라 얘기했습니다. 나는 어느 작업자(브랜치)를 컨트롤할 것인지 정해야 합니다. 동시에 두 개 이상의 작업자(브랜치) wishlan.tistory.com 이어서 testbranch1에서 커밋을 실행해 봅니다. 여섯 번째 커밋이 됩니다. 또, 이어서 한번더 filea.html을 수정하고 커밋해 보겠습니다. 일곱 번째 커밋이 됩니다. 일곱 번째 커밋을 실행하고, 커밋 이력을 확인한 결과가 다음과 같습니다. 현재 testbranch1 에서 filea...

코딩해보니/Git 2023.01.03

[Git_28] 브랜치(Branch) 이동(checkout)

브랜치(Branch) 이동(checkout) 브랜치는 작업자라고 생각하면 이해가 쉬울 것이라 얘기했습니다. 나는 어느 작업자(브랜치)를 컨트롤할 것인지 정해야 합니다. 동시에 두 개 이상의 작업자(브랜치)를 컨트롤할 수 없습니다. 그렇기 때문에 자신이 어느 브랜치에서 작업을 하는지 확인을 해야 하고, 또 자신이 원하는 브랜치로 이동을 할 수 있습니다. 앞서 소스트리에서 브랜치를 만들 때, 이 옵션이 있었습니다. 이 옵션에 체크를 하고 생성했더니 브랜치가 만들어 지고, 바로 새로 만든 브랜치가 선택되었습니다. 이 옵션에서 “체크아웃” 이라는 용어를 사용했습니다. 바로 브랜치를 이동하는 명령어가 checkout입니다. 터미널에서 현재 작업중인 브랜치는 경로 뒤에 표시가 되어 바로 확인이 가능합니다. 이동하기..

코딩해보니/Git 2022.12.28

[Git_27] 브랜치(Branch) 만들기

브랜치(Branch) 만들기 브랜치는 작업자라고 생각하기로 하고, 브랜치는 개수에 제한 없이 만들 수 있습니다. 브랜치를 만들 때는 branch 명령어를 사용하며, 다음과 같은 형식을 가집니다. # 브랜치 만들기 $ git branch branch 명령어 뒤에 브랜치 이름을 입력합니다. 작업자에게 이름을 붙여주는 격입니다. 는 입력하지 않아도 됩니다. 는 만드는 브랜치에게 시작할 작업 지점을 지정해 주는 것입니다. 를 입력하지 않으면, 현재 HEAD 포인터가 적용되어 브랜치가 만들어집니다. 현재 실습을 통해 다섯 번의 커밋을 한 상태에서 커밋 ID를 포함해 브랜치와 저장소의 관계를 조금 더 들여다보면 다음과 같다고 할 수 있습니다. 현재는 master 브랜치만 존재하고, HEAD 포인터는 마지막 다섯번째..

코딩해보니/Git 2022.12.27

[Git_26] 브랜치(Branch) 개념

브랜치(Branch) 개념 버전관리 시스템들에는 브랜치라는 개념이 있습니다. 브랜치(branch)의 사전적 의미는 나뭇가지, 지사, 분점이라고 하는데, 마찬가지로 버전관리에서도 브랜치는 큰 나무에서 많은 가지들이 뻗어 나오는 것처럼 같은 프로젝트를 복사해서 독립적으로 작업이 가능하게 합니다. 이런 버전관리 시스템을 사용하지 않았을 때도 사실은 브랜치 작업을 했었다고 할 수 있습니다. 버전관리시스템 없이 개발하던 때에 새로운 기능을 추가하거나, 다른 시도를 해보기 위해 작업을 시작하기 전에 작업 폴더를 통째로 복사해서 이름을 바꿔서 작업을 했었는데, 이러한 행동이 어떻게 보면 브랜치 작업이라고 볼 수 있습니다. 하지만, 이렇게 매번 하다 보면, 프로젝트를 유지 관리하기가 매우 힘들어집니다. 나중에 코드를 ..

코딩해보니/Git 2022.12.26

[Git_25] diff 명령어로 비교 확인하기

diff 명령어 이전 포스팅에서 git diff HEAD와 git diff에 대해 잠시 언급을 했습니다. diff 명령어는 커밋이나 브랜치 사이에 다른 점 또는 수정 이력을 비교해 볼 때 사용할 수 있습니다. 먼저 $ git diff 에 대해 알아보겠습니다. git diff는 워킹 디렉토리와 스테이지 간 차이를 확인하는 것이며 다음과 같이 사용합니다. # 워킹 디렉토리와 스테이지 비교 $ git diff 그림으로 나타내면 다음과 같다고 할 수 있습니다. 가령, filea.html 파일을 수정하고 스테이지에 올린 상태라면, 이 상태는 워킹 디렉토리와 스테이지에 있는 filea.html의 내용은 같아집니다. 이때, 다음과 같이 git diff를 해 보면 아무런 내용이 없습니다. 차이가 없기 때문입니다. 스테..

코딩해보니/Git 2022.12.24

[Git_24] 커밋 수정하기 --amend 옵션 사용하기

커밋(commit)과 관련해서 한 가지 더 알아보고자 합니다. 리셋(reset)과 리버트(revert)는 커밋 이력에 영향을 주면서 되돌렸습니다. 하지만 개발을 하다 보면 커밋을 너무 자주 하게 되면 불필요한 커밋 이력만 늘어나게 됩니다. 예를 들어, 개발을 진행하면서 파일 3개를 수정했고 완료 후 커밋을 진행했는데 파일 1개를 빼먹고 2개만 커밋했다면 어떻게 할 수 있을까요? 나머지 파일 1개를 추가로 커밋을 진행해도 됩니다. 하지만, 이럴 경우 불필요한 커밋 이력이 추가됩니다. 아니면, reset(리셋)으로 되돌린 다음 다시 커밋하는 방법도 있습니다. --amend 옵션으로 직전에 커밋한 내용 수정하기 이 외에 간단히 직전에 커밋한 정보에 파일 하나만 더 추가한 커밋으로 수정할 수 있습니다. 이렇게 ..

코딩해보니/Git 2022.12.23

[Git_23] 커밋 되돌리기 - 리버트(revert)

앞서 확인한 리셋(reset)은 없었던 일처럼 커밋 이력을 삭제하며 되돌렸습니다. 이는 혼자 개발을 한다고 하면 괜찮을 수 있겠지만, 여러 명이 함께 프로젝트를 진행한다고 했을 때는 커밋 이력이 없어질 경우 황당해질 수 있습니다. 그래서 리버트(revert)를 사용해 되돌리는 게 나을 수 있습니다. 하지만 리버트(revert)는 취소할 커밋 지점을 지정하면 지정한 지점의 직전 커밋 정보로 새로운 커밋을 생성한다는 것으로 이해하고 있을 것입니다. 마찬가지로 앞서 구성해 뒀던 커밋 이력을 바탕으로 리버트(revert)를 실습해 보겠습니다. 리버트(revert) 명령 실습하기 reset(리셋)을 사용해 세 번째 커밋 지점으로 되돌린 결과와 같은 결과를 revert를 사용해 만들기 위해서 reset과 같이 $ ..

코딩해보니/Git 2022.12.21

[Git_22] 커밋 취소하기 : reset --hard & 소스트리에서 리셋하기

reset (리셋) - 커밋 취소하기 reset 명령어는 옵션을 함께 사용해야 하며, 사용할 수 있는 옵션은 3가지가 있습니다. --soft : 스테이지 영역을 포함한 상태로 복원합니다. --mixed : 기본 옵션 값은 mixed입니다. reset 명령어를 사용할 때 옵션을 지정하지 않으면 기본값인 mixed로 지정됩니다. --hard : 실제 파일이 삭제된 이전 상태로 복원합니다. soft 옵션과 mixed 옵션 차이는 크게 스테이지 영역과 관련이 있습니다. hard 옵션은 워킹 디렉터리와 관련이 있습니다. 각 옵션의 차이점과 동작에 대해 실습을 통해 확인해 보고 있습니다. 마지막으로 --hard 옵션에 대해 확인해 보겠습니다. 마찬가지로 커밋 이력은 다시 맞추도록 하겠습니다. 다시 네 번째, 다섯 ..

코딩해보니/Git 2022.12.20

[Git_21] 커밋 취소하기 : reset --mixed

reset (리셋) - 커밋 취소하기 reset 명령어는 옵션을 함께 사용해야 하며, 사용할 수 있는 옵션은 3가지가 있습니다. --soft : 스테이지 영역을 포함한 상태로 복원합니다. --mixed : 기본 옵션 값은 mixed입니다. reset 명령어를 사용할 때 옵션을 지정하지 않으면 기본값인 mixed로 지정됩니다. --hard : 실제 파일이 삭제된 이전 상태로 복원합니다. soft 옵션과 mixed 옵션 차이는 크게 스테이지 영역과 관련이 있습니다. hard 옵션은 워킹 디렉터리와 관련이 있습니다. 각 옵션의 차이점과 동작에 대해 실습을 통해 확인해 보고 있습니다. 지난번 --soft 옵션에 이어서 --mixed 옵션에 대해 확인해 보겠습니다. mixed 옵션은 기본값으로 reset 명령어 ..

코딩해보니/Git 2022.12.19

[Git_20] 커밋 취소하기 : reset --soft

reset (리셋) - 커밋 취소하기 reset 명령어는 옵션을 함께 사용해야 하며, 사용할 수 있는 옵션은 3가지가 있습니다. --soft : 스테이지 영역을 포함한 상태로 복원합니다. --mixed : 기본 옵션 값은 mixed입니다. reset 명령어를 사용할 때 옵션을 지정하지 않으면 기본값인 mixed로 지정됩니다. --hard : 실제 파일이 삭제된 이전 상태로 복원합니다. soft 옵션과 mixed 옵션 차이는 크게 스테이지 영역과 관련이 있습니다. hard 옵션은 워킹 디렉터리와 관련이 있습니다. 각 옵션의 차이점과 동작에 대해 실습을 통해 확인해 보겠습니다. 먼저, --soft 옵션에 대해 확인해 보겠습니다. reset --soft soft 옵션은 가장 낮은 단계의 리셋 동작인데, 일단 ..

코딩해보니/Git 2022.12.15

[Git_19] 커밋 취소하기 - reset 방법 3가지

지난 시간에 커밋한 이력에 대해 취소(reset)와 되돌리기(revert)에 대한 차이점을 알아봤습니다. 이어서 커밋 취소하기(reset)에 대해 자세히 알아보겠습니다. reset (리셋) - 커밋 취소하기 reset(리셋)으로 커밋을 취소하는 것을 실습을 통해 확인해 보겠습니다. 실습을 위해 커밋을 다섯번 진행하도록 하겠습니다. 저는 앞서 filea.html과 fileb.html 상태에 이어서 세 번째 커밋을 하고, 이후 fileb.html을 수정 후 네번째 커밋을 하고, 다시 fileb.html을 수정 후 다섯 번째 커밋을 진행합니다. 그 결과를 소스트리에서 확인한 결과가 다음과 같습니다. 다섯 번째 커밋 버전의 filea.html와 fileb.html 내용은 다음과 같습니다. * 파일 filea.h..

코딩해보니/Git 2022.12.14

[Git_18] 커밋의 취소하기(reset)와 되돌리기(revert) 차이점

커밋한 이후에도 커밋을 되돌려야 할 경우가 있을 수 있습니다. 엄밀히 얘기하면 커밋을 취소하는 것과 되돌리는 것은 Git에서는 다른 의미입니다. 지금은 학습을 위해 간단하게 filea.html, fileb.html과 같이 임의로 생성해서 실습을 해보고 있습니다만, 실제 개발을 하는 경우에는 수많은 코드를 작성하고 테스트하는 과정을 가지게 됩니다. 실무에서도 개발자의 손에서 개발이 완료되면 커밋을 하고 테스트 환경에 배포해서 테스트를 거치게 되고, 이 과정에서 수정 사항이 수 없이 발생합니다. 이러한 과정속에 심각한 경우에는 아예 예전으로 돌리고 다시 시작하는 경우가 있을 수 있습니다. 이런 경우도 종종 발생합니다. 버전 관리는 이런 때에 더욱 빛을 발합니다. Git을 사용하면 언제든지 원하는 시점으로 전..

코딩해보니/Git 2022.12.13

[Git_17] 스테이지에 등록한(올린) 파일을 취소(삭제)하기(내리기)

다시 조금은 돌아가서, 커밋을 하기까지의 과정을 다시 한번 상기해 보겠습니다. ① 워킹 디렉터리에서 파일을 생성 또는 수정 등 작업을 합니다. ② 작업이 완료되면 커밋을 위해 스테이지에 작업한 파일들을 등록(add)해서 커밋할 인덱스(Index)를 구성합니다. ③ 스테이지에 추가한 이후에 추가 수정할 부분이 있을 경우, ①, ②를 반복하게 됩니다. ④ 더 이상 수정할 사항이 없을 경우 커밋(commit)을 진행합니다. 위 과정에 있어서 여러 가지 상황이 있을 수 있습니다. 커밋을 하기 위해서는 스테이지에 등록하는 과정을 반드시 거쳐야 합니다. 하지만 커밋할 내용을 다시 구성해야 할 경우가 있을 수 있습니다. 그래서 스테이지에 등록한 것을 취소해야 할 경우가 생길 수 있는데, 스테이지에 등록한 파일을 취소..

코딩해보니/Git 2022.12.09

[Git_16] 커밋(Commit)의 이해 - 커밋 이력 확인하기

지난 시간 커밋하는 방법을 알아봤습니다. [Git_15] 커밋(Commit)의 이해 - 커밋 하기 커밋(commit)은 그냥 영단어의 의미로는 왜 커밋이라고 했는지 이해가 되지 않습니다. ㅎㅎ IT에서는 커밋은 다양하게 쓰입니다만, 전반적으로 저장되지 않은 모든 데이터를 데이터베이스에 저장 wishlan.tistory.com 첫 번째 커밋 후 이력 확인하기 이어서 커밋한 후 커밋한 이력(히스토리)을 확인해 보겠습니다. 커밋한 기록은 log 명령어로 확인할 수 있습니다. 사용법은 다음과 같습니다. # 커밋 이력(히스토리) 확인하기 $ git log $ git log를 실행한 화면은 다음과 같습니다. log 명령어는 시간 순으로 커밋한 이력을 출력하는데, 최신 커밋 기록부터 내림차순으로 나열합니다. 우리는 ..

코딩해보니/Git 2022.12.08

[Git_15] 커밋(Commit)의 이해 - 커밋 하기

커밋(commit)은 그냥 영단어의 의미로는 왜 커밋이라고 했는지 이해가 되지 않습니다. ㅎㅎ IT에서는 커밋은 다양하게 쓰입니다만, 전반적으로 저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재 실행 중인 일들을 종료하라는 명령으로 사용됩니다. Git은 개발 소스의 이력을 관리합니다. 이력을 관리하기 위해서는 소스의 변경 사항, 변경된 사항을 시간순으로 기록해야 합니다. Git에서 커밋은 쉽게 얘기하면 소스의 변경된 사항, 변경된 지점을 저장하는 것이라 할 수 있습니다. 특히, 여러 명이 함께 프로젝트를 진행한다고 하면, 누가 언제 어디를 수정했는지 관리되어야 합니다. 커밋으로 그 변화를 기록하게 되는데, 어떻게 동작하고 사용할 수 있는지 학습하도록 하겠습니다. 커밋(Commit) 하기 앞서 포스..

코딩해보니/Git 2022.12.06