반응형 Git9 Git rebase 브랜치를 합치는 방법은 두 가지가 있다. 병합(merge)과 리베이스(rebase)다. 이번에는 커밋 순서를 재배열하는 리베이스에 대해 알아보겠다. Base 브랜치는 커밋 하나를 기준으로 새로운 작업을 진행할 수 있는 분리된 작업 경로를 말한다. 새로운 브랜치가 파생되는 커밋을 베이스라고 한다. 병합에서는 이를 공통 조상 커밋이라고 한다. 아래 그림에서는 커밋 2가 베이스이자, 공통 조상 커밋이다. Rebase 리베이스는 베이스 앞에 '다시'를 의미하는 re가 붙은 단어다. 파생된 브랜치의 기준이 되는 베이스 커밋을 변경하는 것이다. 그럼 브랜치의 베이스는 왜 변경하는 것일까? 커밋의 진행 모습을 단순화하기 위해서다. 브랜치가 많아지면 커밋을 관리하고 파악하기 어렵다. 꼬여 있는 기찻길처럼 단계별로 커밋.. Git 2024. 1. 21. Git 병합 (Fast-Forward 병합, 3-way 병합) 병합 프로젝트에서 main 브랜치가 존재한다. 그럼 다른 브랜치에서 작업을 하고 이를 main 브랜치에 반영해야 한다. 분리된 브랜치를 하나의 브랜치로 합치는 작업을 병합이라고 한다. 각각의 브랜치에서 수정된 내용을 하나의 브랜치로 병합한다. 과거 수동(노가다)으로 코드를 하나하나 바꾸는 것은 정말 어렵고 귀찮은 일이었다. 깃을 사용해 자동 병합이 가능해지며 개발자의 삶이 윤택해졌다. 깃의 자동 병합은 원본을 기준으로 두 파일의 변경 이력을 비교하고, 변경된 파일 내용이 발견되면 자동으로 수정된 코드 내용을 병합한다. 그러나 자동으로 병합이 불가능한 것도 존재하는데, 이를 충돌이라고 한다. 병합 방식 병합 방식으로는 크게 2가지가 있다. Fast-Forward 병합 3-way 병합 실습 환경을 구축해보겠.. Git 2024. 1. 18. Git Stash Git Stash 개념 어떤 작업 내용을 개발자가 커밋했다. 이후 다른 업무로 인해 코드를 작성하다가 다른 브랜치로 이동하고 싶어졌다. 바로 git checkout과 switch를 쓰면 다른 브랜치로 이동할 수 있을까? 아쉽게도 그렇지 않다. 커밋하지 않은 코드가 남아있으므로 다른 브랜치로 이동이 불가능하다. 그럼 어떻게 코드를 작성하다가 다른 브랜치로 편하게 넘어갈 수 있을까? 이런 상황에서 스태시(stash)기능을 사용한다. stash를 번역기에 돌려보니 은닉처라고 나온다. 깃은 커밋되지 않은 변경 내용이 남아 있을 때, 현재 작업을 임시로 저장할 수 있는 스태시 기능을 제공한다. 스태시는 현재 워킹 디렉터리 내역을 별도의 스택 영역에 저장해 브랜치가 이동할 때 작업 중인 내용으로 워킹 디렉터리가 충.. Git 2024. 1. 17. Git Error: fatal: 관계 없는 커밋 내역의 병합을 거부합니다. fatal: 관계 없는 커밋 내역의 병합을 거부합니다. 위와 같은 오류가 발생했다. 이에 대한 해결법을 기록하고자 한다. 우선 공통된 커밋이 없기 때문에 이런 문제가 발생한다고 한다. 그래서 일단 원격 저장소 (remote)의 커밋들을 가져와야 한다. git fetch --all git reset --hard origin/master git push origin master git fetch -all : 원격 저장소의 모든 커밋을 가져온다. git reset --hard origin/master : git reset --hard를 사용하면 현재 작업 위치인 HEAD의 포인터를 특정 위치로 변경해버릴 수 있다고 한다. 이 명령어를 통해 origin/master로 HEAD의 포인터를 이동시킨 것이다. 그러면.. Git 2022. 5. 14. Github ssh 등록, 여러 계정 사용하기 드디어 미뤄둔 ssh를 이용한 Github와의 연동을 시작해보겠습니다. 필자는 다양한 깃허브 계정을 한 컴퓨터에서 사용하고 싶어서 ssh 등록을 해보겠습니다. 현재 환경은 Mac os입니다. ssh에 대한 개념은 아래 포스팅에서 학습하실 수 있습니다. 시작하겠습니다. https://devdebin.tistory.com/132?category=973762 SSL VS SSH 이번 UMC Sever 파트 AWS EC2 인스턴스 실습을 하면서 유독 자주 보인 이 두 단어에 대해 정리해보겠습니다. 만약 안보셨다면 이 게시글 부터 쭈욱 정주행하시는 것을 추천..!!ㅎㅎ https://devdebin.tistory. devdebin.tistory.com 먼저 .ssh 디렉터리로 이동을 한다. cd ~/.ssh 이제.. Git 2022. 5. 13. Git 원격 저장소 원격(서버) 저장소는 로컬 저장소의 코드를 복제한 복사본이라고 할 수 있다. 서버를 이용하면 코드를 안전하게 보관할 수 있고, 또 서버에 있는 소스 코드는 다른 사람들과 공유하고 협업하여 개발을 진행할 수도 있다. 원격 저장소가 있다면 언제 어디에서든지 개발을 이어 할 수 있다. 사무실에서 개발 중인 코드를 서버에 저장하고, 집에 와서는 사무실에서 작업하고 서버에 올린 코드를 자신의 컴퓨터에 동기화할 수 있다. 이처럼 사무실, 집, 다른 여러 컴퓨터에 코드를 동기화하고 연속된 작업을 이어 갈 수 있다. 깃은 분산된 저장소 여러 개를 하나로 통합하고, 최신 코드를 배포할 수 있다. 서버 저장소는 여러 컴퓨터에 동일한 깃 저장소를 복제하고, 작업한 결과물을 다시 서버로 통합한다. 원격 저장소로는 깃허브를 골.. Git 2021. 10. 28. Git commit 오늘은 커밋에 관해 실습하고 공부해보겠습니다. 먼저 git init 명령어를 이용해 저장소를 만든다. mkdir practice cd practice git init code hello.js 위와 같은 명령어를 이용해 워킹 디렉터리에 파일을 생성했다. git status 명령어를 통해 현재 깃의 상태를 알 수 있다. 그러면 위의 이미지와 같이 출력된다. Untracket files 표시 부분을 확인할 수 있다. 추적되지 않은 파일은 git bash에서 붉은색으로 표현한다. 이렇게 깃은 워킹 디렉터리에 새 파일이 추가되면 상태를 감지하고 향후 이력을 추적할지 여부를 결정한다. 우리는 이전 포스팅을 통해 워킹 디렉터리와 커밋 사이에 스테이지 영역이라는 것이 존재한다는 것을 공부했다. 이 스테이징 영역을 바탕.. Git 2021. 10. 27. GIT 개념 잡기 (Repository, working directory, stage) 오늘은 GIT 교과서 3장 관련 내용입니다! 깃 저장소(Repository)는 일반적으로 폴더와 구별 없이 모두 동일하게 사용할 수 있다. 하지만 깃 저장소는 폴더와 내부적으로 구조가 다르다. 깃 저장소에는 별도의 숨겨진 폴더가 있는데, 여기에 버전 관리시스템에 필요한 파일 변경 이력을 기록한다. 저장소는 프로젝트의 모든 리비전(revision : 개정)과 히스토리를 가진 데이터베이스와 같다. 즉, 일반적인 폴더와 깃 저장소 차이점은 숨겨진 영역이 있는지 여부이다. 이제 깃 저장소에 대해 더 알아보자. 우선 깃 저장소를 만들려면 초기화 작업을 진행해야 한다. 깃에서 초기화란 이미 존재하는 폴더에 초기화 명령어로 VCS 관리를 위한 숨겨진 영역을 생성하는 작업이다. 명령어를 직접 쳐보겠다. mkdir "폴.. Git 2021. 9. 24. GIT 공부 시작!! 학교 공부는 아닙니다. 그래도 Git 공부를 시작하게 된 이유는 본인은 깃허브 계정이 있습니다. 1일 1 커밋을 하려고 노력 중인데 단지 커밋하고 푸시만 하고 있습니다. 그래서 Git을 좀 더 잘 알고 잘 다루고 싶어서 공부를 시작하자고 마음먹었습니다. 역시나 부족하지만 시작해보겠습니다. 책을 하나 구매했는데 이호진 님의 Git 교과서라는 책입니다. 그럼 시작해보겠습니다. Git이란 무엇인가? Git 즉, 깃이란 소스 코드의 버전 관리를 위한 분산형 버전 관리 시스템이자, 협업 개발을 위한 응용 소프트웨어다. 몇 가지 특징을 정리하겠다. 특징으로는 원격 저장소 (깃허브)와 별개로 개발자 각각의 로컬 컴퓨터에 완벽한 복제본 소스 코드를 저장할 수 있다. 완벽한 복제본으로 인해 매번 원격 저장소(중앙 저장소.. Git 2021. 9. 22. 이전 1 다음 반응형