반응형

IT 지식/Git

    Fast Forword와 merge 그리고 rebase 정리

    5년차가 될정도로 개발을 어느정도 진행했지만 아직까지도 git에 대한 정리가 잘 되지 않는다. 공부도 하고 정리도 했었지만 실상 회사에서 주구장창 브랜치 만들고 머지만 해서 진행했기 때문에 fast forword를 하고 merge, rebase하는 것과 안하고 하는것의 방법을 잘 알지 못했다. 개념은 알아도 직접 많이 해보지 않으면 그게 와닿지 않는 것 같다. 그럼 현재 이직한 회사에서는 이 방법을 많이 사용하기에 정리를 해서 까먹지 않도록 해보자. Merge Merge는 이미 우리가 익히 알고 있듯이 두 개의 브랜치를 합치는 걸 의미한다. 그럼 fast forword를 하고 merge를 하면 어떻게 되는지 보자. 현재 이렇게 되어있는 상황에서 feature/si를 fast forword 포함해서 mer..

    Github repository 위치 변경

    github에서 개인적으로 하고 있는 토이프로젝트 wedul_timeline을 친구와 함께 작업하기로 해서 그룹을 생성했다. 그룹 이름은 우리의 아이덴티티에 맞는 potato로 지정했다. ㅋㅋ 그런데 이렇게 지정하다보니 기존에 내 repository에 위치해있던 소스를 그룹으로 옮겨야 했다. 그 과정에서 삽질했던 내용을 다음에는 삽질 하지 않도록 기록해봤다. 현재 Git Repository 저장소 clone 우선 현재 있는 repository를 복사 해야한다. git clone --mirror https://github.com/weduls/wedul_timeline 복사가 완료되었다. 그럼 이제 새로 이전할 레포지토리가 필요하다. 그룹에 들어가서새로운 레포지토리를 생성한다. 새로운 remote origi..

    git ssh로 받은 프로젝트를 https 방식으로 변경하기.

    회사에서 ssh 방식으로 git을 사용하고 있었으나 정책상 ssh가 막혀서 https로 전환해야 했다. 근데 사실 ssh로만 주로 사용했지 이를 바꿔서 진행해본적이 없어서 난감했다.(기존에 작업중이던거 어떻게 ...) 그래서 알아보던중 같은팀 개발자분이 힌트를 주셔서 그대로 해보니 해결되었다. ㅋㅋ 간단하게 정리해보자. - 프로젝트 내에 .git의 config파일 열어서 수정터미널을 이용하든 편집기를 이용해서 config파일을 열어본다.그럼 밑줄 친 부분과 같이 ssh주소로 되어있는데 이를 repository의 https 주소로 바꿔주고 저장한다. 그리고 다시한번 git 명령어를 시도해보면 다음과 같이 계정 정보를 입력하라고 나오는데 이곳에는 해당 레포지토리가 있는 github이나 gitlab의 계정정보..

    travis ci에서 "./gradlew assemble" failed 에러 수정

    git에 연동해놓았던 travis ci에서 어느순간부터 계속 오류를 감지하였다. 그냥 귀찮아서 넘겼지만 보기싫어서 오류내용을 확인해봤다. ./gradlew assemble 오류는 gradlew 실행이 실패해서 발생하는 오류이다. 우선 locale에서 정상적으로 동작하는지 확인해보자.1./gradlew buildcs오류가 발생한다. 왜그럴까.. 구글링 하다 보니 gradle wrapper가 실행될때 필요한 gradle-wrapper.jar 파일이 없어서 라고 한다. gradle-wrapper.jar 파일에 경우 gradle/wrapper 폴더에 들어있어야 하는데 없었다. 그래서 gradle wrapper 명령어를 실행시켜서 생성해주었다. 그럼 다시 빌드해보자.1./gradlew buildcs 성공했다. 그..

    Git 저장소 Fork 후 Pull Request 및 최신 내용 갱신 방법

    이전직장에서도 SVN을 사용했다. 물론 GtitLab을 1년반정도 사용했으나 아쉽게도 협업하여 진행하지를 않아서 모두 master에 직접 커밋을 하였다. 그래서 이번에는 협업한다고 생각하고 시나리오를 만들어서 테스트를 진행해보자. Github 저장소에서 상대방 Repository를 Fork하고 Pull Request를 요청해보고 변경된 최신내용을 Local에 반영하는 작업을 진행해보자. 1. 우선 Repository를 Fork 한다. fork를 진행할 계정을 선택하고 확인을 누르면 내 Repository에 Fork된 저장소가 보이는 것을 확인할 수 있다. 2. SourceTree에 추가Git을 Command를 사용해서 멋지게 사용하면 좋지만 실력이 부족하기 때문에 SourceTree를 사용해서 진행해보자..

    Git Rebase 도중 한번 이상 충돌 해결 방법

    Git에서 브랜치를 rebase 하는 도중에 충돌이 여러번 발생하였을때 해결하는 방법에 대해 알아보자. 먼저 기준이 되는 브랜치 master에 test.txt라는 파일을 만들고 내용을 작성하고 커밋을 진행하자. 그리고 리베이스를 진행할 브랜치인 conflict 브랜치에 test.txt를 생성하고 두번 커밋을 진행하자. 그리고 master에 리베이스를 진행하면 먼저 첫번째 충돌이 발생한다. 그러면 test.txt 파일을 수정하고 나서 스테이지에 다시 올리고 액션 메뉴에서 재배치 계속을 눌러 진행한다. 그러면 두번째 충돌이 발생하고 마찬가지로 해결 후 재배치 계속을 누르면 성공적으로 리베이스가 진행된것을 확인할 수 있다. 이렇게 두번의 충돌이 발생하는 이유는 아래의 그림을 살펴보면 알겠지만 변경이 델타 1,..

    Git Rebase 도중 충돌 (conflict) 해결 방법

    저번부터 계속해서 rebase에 대해 알아보았다. 그러나 생각보다 rebase를 진행하다보면 충돌이 나는 경우가 많다. 간단하게 리베이스에서 발생한 충돌을 해결해보자. 우선 master에서 c.txt를 만들고 커밋을 진행해보자. 그리고 conflict 브랜치에서 c.txt를 만들어서 파일내용에 conflict branch commit으로 저장하고 커밋을 하자. 그럼 이제 master 브랜치로 conflict 브랜치를 rebase하여 merge를 진행해보자. 그러면 다음과 같이 충돌이 발생하게 되고 rebase가 멈추는것을 볼 수 있다. 그럼 충돌된 내용이 무엇인지 확인해보자. 몬가 이상한것을 확인할수있다. 바로 HEAD 부분에 원래 merge중에 충돌이 발생하면 내 코드가 나오고 하단에 충돌이 발생한 코..

    Git 대화형 rebase를 사용한 커밋 순서변경, 합치기 등등 방법

    저번에 공부했었던 rebase에 대해 더 공부해보자. 이번에 공부할 내용은 대화형 rebase를 통해 커밋한 내용을 지우거나, 순서를 바꾸거나 기존 커밋에 내용을 더 추가하거나 하는 내용을 확인해보자. 커밋 합치기 리베이스를 진행할 때 리베이스를 진행할 브랜치에 커밋된 내용이 길다고 가정해보자. 그러면 그 커밋마다 변경된 내용이 다 달라서 master에 리베이스를 진행할 때 여러번에 conflict를 해결해야 한다. 그래서 오늘 강의해주신 강사님이 말씀하시길 브랜치의 커밋을 하나로 합치고 나서 rebase를 진행하면 좋다고 하셨다. 그럼 합쳐보자. 우선 아래 이미지를 보면 c2와 c3의 커밋을 하나로 합쳐서 아래와 같이 마스터 브랜치에 합쳐보겠다. 우선 위와 같은 상황이 되도록 브랜치를 만들어서 진행해보..

    Git의 rebase를 이용한 커밋 정리 (merge와 차이)

    Git을 처음 입사 후 진행했던 프로젝트에서 Gitlab을 통해 처음 접해보았다. 확실히 저장소 관리하는 방식과 커밋 전 단계가 제공되는 것 등등 편한 것이 많았다. 하지만 그 때 당시 딱히 팀원이 없었기에 히스토리 관리 및 flow 관리를 해야한다는 필요성을 알지도 못했고 듣지도 못했었다. 그러나 공부를 진행해보면서 git에 rebase라는 좋은 기능이 있다는 것을 알게되었고 배워보고 싶어 nhnent에서 제공하는 사내 교육에 참여하였다. 우선 첫 번째 글로 rebase와 merge에 차이를 설명하고 rebase를 진행해보자. rebase란? 우선 rebase는 base를 다시 지정한다 (re-base)의 의미이다. base가 무엇인가? 다음 그림을 보자. 그림을 보면 master의 c4와 experi..

    git사용을 위한 ssh-keygen 설정

    git을 사용하여 repository에 커밋하고 pull 받기위해서는 ssh 연결이 필요하다.이 과정에서 사용되는 keygen 설정을 진행해보자. [진행방법] 1. git을 먼저 설치한다. 2. window의 경우 git bash를 실행시키고, mac인 경우 terminal을 실행 시킨다. 3. ssh-keygen -t rsa -C "git계정"을 입력하고 계속 엔터를 입력한다. 4. 사용자 위치에 생성된 public key를 복사해서 git 관리 홈페이지에 ssh 부분에 입력한다.

반응형