IT 지식

    Deview 2020 딥러닝 기술을 이용한 검색시스템 응답시간 예측 세션 리뷰

    도입 배경 - 네이버 검색 시스템이 보유하고 있는 검색에 필요한 데이터는 방대하다. - 다양한 호출처로부터 요청이 들어오고 검색어, 검색옵션, 검색방식등에 따라 수백~수천가지의 쿼리 타입이 만들어 질 수 있음 - 이런 수천가지 형태의 검색 요청이 왔을 때 1초라는 타임아웃 시간을 지키기 위해 검색 시간이 오래걸리는 쿼리를 찾기 위해 딥러닝을 사용하여 검색 시간이 오래 걸리는 요청들을 예측했다. 현재 검색 시스템 동작의 원리 검색 시스템 구성에는 여러 단계가 있는데 순서대로 다음과 같이 동작한다. - 문서 데이터 : 검색 대상이 되는 컬렉션 - 색인어 추출 : 컬렉션에 의미 있는 단어를 추출 - 색인 : 검색 대상이 되는 컬렉션에 색인된 색인어로 포스팅 해주는 작업. 이 때 색인어에 매칭된 문서의 횟수를 ..

    [토이프로젝트] TimeLine 개선

    한동안 잠시 멈췄다가 다시 열면서 내용을 추가 하고 싶었다. 타임라인의 목적은 개발에 관련 블로그 내용들과 채용 뉴스등을 한번에 보기 위해서 만든 서비스이다. 사실 내가 한번에 보고 싶은 욕구가 있어서 만들게 되었다. 그런데 채용이나 회사 블로그 뉴스등은 넣었는데 개인 블로그를 볼 수 있는 기능이 없어서 불편했는데 추가했다. 개인블로그 추가 그리고 메인 화면이 없어서 첫 화면을 설정하기가 애매했다. 그래서 메인화면도 summary해서 볼 수 있도록 추가했다. 메인화면 추가하면서 잘못된 @Transaction 어노테이션 사용으로 문제가 많았었다. 에러내용은 아래와 같다. org.hibernate.AssertionFailure: null id in entry (don't flush the Session af..

    [토이프로젝트] TimeLine 2.0 개선 오픈

    설계, 운영 모든면에서 실패토이프로젝트 TimeLine을 만들어서 오픈했었다. 개발의 목표는 단순하게 개발 블로그, 채용등에 대해 한번에 볼 수 있는 개발자를 위한 통합 페이지를 만드는 것이었다.https://wedul.site/626[토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다. 집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 회사에서 하는..wedul.site하지만 사용하는데 생각보다 불편한 부분이 많았고 설계부분에도 현재 시스템을 고려하지 않고 만들었던게 운영에 걸림돌이 되어버렸다. 그래서 서비스를 잠정적 중단하고 2.0을 만들..

    Fast Forword와 merge 그리고 rebase 정리

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

    nginx 서버에 filebeat를 이용하여 ELK에 로그 기록하기

    git clone https://github.com/deviantony/docker-elk nginx를 설치하고 docker 기반으로 ELK (elasticsearch, logstash, kibana)를 설치하고 nginx 로그를 filebeat를 설치하여 acces.log, error.log, syslog등을 전송해보자. 설치 ELK를 도커에 설치하는 스크립트를 아래 github에 잘 정리되어 제공해주고 있다. https://github.com/deviantony/docker-elk ELK는 이걸로 설치하면 되는데 docker-compose로 nginx와 filebeat까지 함께 설치하기 위해서 아래 저장소에서 제공하는 nginx-filebeat 스크립트를 혼합해서 사용해보자. https://githu..

    spring boot api를 쿠버네티스로 deployment 해보기

    저번 글에서 기본적인 쿠버네티스 관련 개념과 자원에 대해 공부했다. 이제 실질적으로 api애플리케이션을 하나 만들어보고 배포까지 진행해보자. 로컬 이미지를 담을 registry 생성 쿠버네티스의 노드들은 외부와 연결되는 경우도 있지만 그렇지 못하는 환경도 많이 존재한다. 그럴 경우 이미지를 내려받을 수 없고 로컬에서만 만들어서 사용할 이미지를 등록할 registry가 필요하다. # registry 이미지 가져오기 docker pull registry:latest # 레지스트리 실행 docker run --name MyPrivateRegistry -d -p 5000:5000 registry 애플리케이션 생성 우선 spring boot gradle 프로젝트로 아무것도 만들지 않고 바로 빌드해서 사용해보자. ..

    kubernetes 기본 개념정리와 구성 알아보기 (설치 포함)

    docker를 사용하면서 그 편리함을 느끼고 있었다. 그리고 요 근래 it회사에서 docker와 kubernets를 이용하여 인프라를 운영을 하는 것을 많이 들었다. 나는 그런 환경을 접해보지는 못했기 때문에 정확하게 kuberntes가 무엇인지 잘 모른다. 그래서 이번 기회에 kubernets(이하 쿠버네티스)에 대한 기본 개념을 정리하고 설치해서 공부를 위한 초석을 닦아보자. 쿠버네티스 (kubernetes) 쿠버네티스는 도커 컨테이너 운영을 자동화 하기위한 오케스트레이션 도구이다. 구글에서 만들었으며 컨테이너를 운영하고 다루기 위한 api와 cli등을 제공한다. 컨테이너 배포 이외에도 효율적인 컨테이너 배치 및 스케일링, 로드밸런싱, 헬스 체크, secure등의 기능을 제공한다. AWS ECS 와 ..

    [공유] 우분투 설치 시 boot efi 관련 오류 수정 방법

    와이프가 결혼전에 집에서 사용하던 노트북 lenovo 제품이 있어서 이걸 간단하게 사용할 서버로 쓰고 싶었다. 그래서 우분투를 설치하려고 하는데 계속 the 'grub-efi-amd64-signed' package failed to install into /target/. Without the GRUB boot loader, the installed system will not boot. 라는 오류만 발생했다. 구글링을 하면서 efl boot 영역을 설정해주고 별짓 을 다해도 안되었는데 오늘 아침에 이 유튜브를 보고 해결했다. 나중을 위해서 공유해논다. https://www.youtube.com/watch?v=DWlB0_f3GAY

    [토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine

    혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다. 집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 회사에서 하는 업무는 한정적이니 내가 회사에서 하지 못하지만 알고 싶고 잊고 싶지 않은 내용에 대해서 프로그램을 직접 만들면서 공부할 내용을 정리하고 싶었다. 그래서 만들게 된게 타임라인인데, 개발자 채용정보나 기술 블로그를 rss등을 사용해서 모아볼 수는 있으나 별도의 관리 툴이나 브라우저에서 확인해야해서 좀 불편했다. 그래서 그것을 한번에 볼수 있게 하는 사이트가 있으면 좋을 것 같아서 만들어봤다. 우선 주소는 http://wedul.space이다. aws에 도입하고 싶었으나 비용도 걱정되니해서 집에있는 간이 서버..

    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의 계정정보..

    ngrinder Mac os 간단 설치 및 테스트 방법

    api의 성능 테스트를 위해서 네이버에서 만든 ngrinder 설치하고 테스트를 진행해봤다. ngrinder는 controller와 agent로 구성이 되어 있는데 이에 대한 내용은 https://naver.github.io/ngrinder/ 해당 내용을 체크하자. 1. Controller 설치 - 톰캣을 설치하고 아래 주소에서 war를 다운받아서 실행시킨다. https://github.com/naver/ngrinder/releases 단, 3.4.2는 테스트 스크립트 실행 시 unexpected token에러가 발생한다. 그래서 3.4.1을 사용하는걸 추천한다. 설치 완료되면 아래 url로 접근 해서 확인 (초기 계정은 admin/admin) - 뒤에 root path는 편의를 위해서 war 파일을 n..

    nginx 정리와 설치 및 기본 설정방법

    Ngnix 설명nginx는 기존 웹서버에서 많은 트래픽을 감당하기 위해서 확정성을 가지고 설계된 비동기 이벤트 드라이븐 방식의 웹서버를 칭한다. Nginx 설치nginx를 맥이 있으면 brew를 통해서 간단하게 설치가 가능하다.1brew install nginxcs Nginx 프로세스nginx는 하나의 마스터 프로세스와 여러 worker 프로세스를 가진다. 마스터 프로세스의 주요 목적은 read 권한 그리고 성능 측정과 worker 프로세스 관리이다. worker 프로세스는 요청을 처리한다. nginx는 event-based 모델을 사용하고 worker 프로세스 사이에 요청을 효율적으로 분배하기 위해서 os에 의존하는 매커니즘을 사용한다. worker 프로세스에 개수는 설정 파일에서 정의되며 정의된 프로..

    간단한 카카오 챗봇 만들기

    node.js 공부한 것으로 한번 테스트 해보기 위해서 카카오 플러스친구를 만들고 그곳에서 호출하는 api를 만들어 연동해봤다. 일부러 wedul 플러스 친구 정보와 친구추가를한 사용자들에 정보를 담을 데이터는 redis에 넣어봤다. 플러스친구 만들기우선 카카오 플러스친구에 들어가서 플러스친구를 만들었다. 플러스 친구에 wedul이라고 검색하면 이제 나온다. 신기하다.친구 추가 url : http://pf.kakao.com/_qMxnEj 이제 친구 추가후에 채팅창에서 보여줄 안내 대화를 만들기 위해 api를 만들었다. api 만들 때 필요한 상세 내용들은 문서에 잘 나와있다. 아주 간단해서 10분이면 다 만들듯??? 그렇게 만든 api를 aws 프론티어에 올려서 카카오 플러스친구에 연동했다. Develo..

    Fake SMTP로 메일 전송 테스트

    간단하게 rabbitMQ 코드 만들어보는 도중에 메일전송기능이 필요했다. 그런데 메일을 계속 보낼수도 없기 때문에 메일이 잘 전송되고 있는지 확인할 수 있는 프로그램이 있는지 찾아봤다. 그중에 Fake SMTP 라는 프로그램이 있어서 소개해본다.프로그램은 하단에 첨부된 링크에서 다운받을 수 있다. 실행방법은 다운받은 파일위치에서 java -jar fakeSMTP-2.0.jar 명령어로 실행시키면 GUI 화면이 나온다. 스프링 부트에서 JavaMailSender와 간단한 설정을 통해 메일 전송 여부를 테스트 할 수 있다. 1234567891011121314151617181920212223242526// application.propertiesspring.mail.host=localhostspring.mai..

    Maven Scope 정리

    Maven Scope 정리 pom.xml에서 상용되는 scope에 대한 정리 ※compile - 아무런 scope를 명시하지 않았을때 사용되는 기본값. - 테스트 및 런타임에도 classpath에포함된다. ※provied - JDK 또는 컨테이너에 의해서 runtime에 제공되는 모듈 - 이 scope는 이미 컨테이너가 해당 라이브러리를 제공하고 있을때 유용 그러므로 실제로 배포시에 제외대상 - 예를 들면 아래 servlet api의 경우 이미 웹서버에서 제공하고 있는 경우에 maven scope를 provied로 기재123456 javax.servlet servlet-api 2.5 providedcs ※runtime - 런타임시 필요하지만 컴파일시에 필요하지 않는 경우에 사용 - 테스트와 런타임에는 사..

    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를 사용해서 진행해보자..

    Maven 프로젝트를 Gradle로 변경

    Maven 프로젝트를 Gradle로 변경해봤다. 멈저 PC에 cmd 창에서 gradle 명령어를 사용할 수 있도록 환경 변수를 편집해보자. 우선 시스템 환경변수에서 시스템 변수 편집에 들어가 Path를 수정하여 gradle\bin의 위치를 설정해준다. (gradle은 홈페이지에서 별도로 다운로드) 정상적으로 환경변수가 설정이 되면 cmd 창을 키고 gradle -v 명령어를 사용하면 다음과 같이 gradle 버전정보가 출력된다 그리고 maven 프로젝트 디렉토리에서 pom.xml이 존재하는 위치로 이동하여 다음 명령어를 사용하면 자동으로 build.gradle이 생성되면서 gradle 설정파일이 추가된다.1gradle init --type pomcs

    Intellij에서 톰캣 설정

    이클립스에서 톰캣 서버를 사용할 때 그 톰캣의 원래 config(server.xml)을 사용하지 않고 Extra Config를 사용한다. 인텔리제이를 처음 사용하면서 이 또한 그럴것 같아 찾아봤으나 인텔리제이의 경우 {TOMCAT_HOME}의 설정값을 참조 하고 있다. 그래서 Tomcat의 수정이 필요한 경우의 tomcat home에 위치해있는 conf/server.xml을 직적 수정해서 사용해야 톰캣 설정이 변경하다.

    Windows Subsystem for Linux (ubuntu)에 Docker 설치

    맥에서는 docker 설치와 운용이 쉬웠는데, 맥북이 망가지고 윈도우 컴퓨터를 사용하고 있으니 Docker 사용이 생각보다 쉽지 않았다. 그래서 저번에 Windows Subsystem for linux (ubuntu)를 설치하고 여기에 docker를 올려보면 어떨까 싶어서 도전해 보았다. 우선 docker engine는 WSL에서 실행되지 않아서 호스트 컴퓨터에 Windows용 Docker를 설치해야한다. 그리고 나서 Linux(ubuntu)에서 실행되는 Docker 클라이언트(WSL)가 Windows에 설치된 Docker Engine 데몬으로 명령어를 보내서 운용할 수 있다. 우선 Ubuntu에 Docker를 설치해보자. 1. 우선 패키지를 업데이트 한다.1sudo apt-get updatecs 2. ..

    윈도우 10에서 우분투 bash셀 사용방법

    윈도우10에서 bash 셀을 사용하기 위해서 우분투 설치를 지원합니다. 회사 동료 소개로 알게된 내용을 공유합니다. 설치 과정과 사용법을 알아보겠습니다. #설치방법 우선 Windows 기능에서 기능 켜기/끄기 설정창에 들어가 Linux용 Windows 하위 시스템을 키고 재시작을 수행합니다. 그리고 Microsoft App store에 들어가서 ubuntu를 검색하고 원하는 버전을 선택하여 설치합니다. 다운로드 받은 후 계정과 비밀번호를 설명하면 우분투를 사용할 수 있습니다. #ssh 원격접속 설정방법 우분투를 설치 후 ssh 접속설정방법을 알아보자. 우분투 패키지 업데이트 업그레이드sudo apt-get update sudo apt-get upgrade ssh 설정 vi /etc/ssh/sshd_con..

    오토 스케일링(Auto Scaling) 소개

    클라우드 환경이 대세다. 솔직히 말하면 대세인건 알지만 간단하게 aws 내 작은 서버 하나를 사용하고 있는 정도만 사용하고 있다. 아니 물론 SaaS 프로그램은 많이 사용하고 있지만 실질적으로 클라우드 환경이 어떻게 구성되고 있는지는 자주 사용하지 않아 100% 다 알지 못한다. 그래서 공부를 더욱 열심히 하고 있고 오늘은 오토 스케일링에 대해 알아보자. #오토스케일링 서버를 운영하다보면 갑작스럽게 트래픽이 몰리는 경우가 있다. 예를 들면 이벤트를 한다거나 특정 티켓이 오픈되는 경우가 될 수 있다. 이런 경우에 서버의 자원이 자동으로 확장되어 트래픽에 대응할 수 있다면 얼마나 좋을까? 이때 사용되는 기술이 오토 스케일링이다. 사용자가 미리 지정한 오토 스케일링 정책에 따라 트래픽이 발생하였을 때 미리 지..

    클라우드 컴퓨팅 설명 및 서비스 종류 정리

    클라우드 서비스 아마존과 MS, 구글 뿐만 아니라 국내에서는 NHN, 카페 25시등 클라우딩 컴퓨팅 사업에 뛰어들고 있다. 대체 클라우드가 왜 인기가 있고 클라우드가 무엇인지 알아보자. 클라우드란? 클라우드는 사용자가 서비스를 사용한 만큼의 비용을 지불하면서 서비스를 사용하는 것을 말하고 언제 어디서든 서비스를 접근하여 사용할 수 있는 서비스를 말한다. 인기 이유 인터넷이 보급되고 각 가정에 컴퓨터와 IT 기기들이 대중화 되면서 그 인기와 함께 기술도 같이 향상되었다. 나 또한 IT 업계에서 3년정도 일을 하고 있다. 세상이 편해지고 주머니가 가볍게 편하게 모든 서비스를 이용하고 싶어 카카오 페이, 삼성페이등도 넘처나는 시대가 되었다. 컴퓨터 역시 예전에는 사람들이 노트북을 들고다니고 별도의 소프트웨어를..

    Spring Boot 빌드 파일을 이미지로 만들어 컨테이너에 올리기.

    스프링 부트 애플리케이션을 Docker image로 빌드해서 컨테이너에 올리는 작업을 진행해 보겠다. 필요사항 JDK 1.8 later Maven 3.2 이상 STS Docker Pom.xml 수정을 먼저 진행해야한다. wedul 이라는 이름의 jar 파일이 생성된다. docker에서 실행하기 위한 Maven 설정이 들어있는 jar file이 만들어 진다. 만약 image prefix 값을 별도로 지정하지 않으면 artifact id가 명시된다. wedul com.spotify dockerfile-maven-plugin 1.3.6 ${docker.image.prefix}/${project.artifactId} target/${project.build.finalName}.jar 그리고 프로젝트 Root에 ..

    Mac OS에 Docker 설치하기

    Mac OS에 Docker 설치는 매우 간단하다. 하단 링크로 들어가서 Docker.dmg파일을 다운받고 설치를 우선 진행한다. Docker 설치링크 DMG파일을 실행하면 다음과 같은 창이 출력되고 드래그 하여 Application으로 옮겨주면 된다. 그 다음 도커를 실행하면 작업표시줄에 출력되고 클릭하면 자세한 상태와 기본 내용이 출력된다. 이제 시작해보자. 도커 시작!

    Docker 기본 개념 정리

    마이크로서비스를 사용하고 배포를 자동화하고 하면서 유동적인 컨테이너인 Docker가 많은 인기를 얻고 여기저기 회사에서 많이 사용되고 있다. 실제로 백엔드 개발자에게는 거의 필수로 알고 가야하는 툴중에 하나가 되어버렸다. Docker란 무엇인가? 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 이라고 한다. 여기서 컨테이너는 다양한 프로그램, 실행환경을 컨터이너에 동일한 인터페이스로 제공하여 여러 프로그램의 배포와 관리를 단순하게 해준다. 컨테이너 (Container) 컨테이너는 OS 와 격리된 공간으로서 별도의 프로세스가 동작하는곳을 말한다. 그러면 기존에 OS에서 VM을 설치하여 사용하던 방식과 무엇이 다른지 알아보자. VM과 Docker의 차이 기존의 VMware는 HostOS에 GuestOS가 올라..

    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의 커밋을 하나로 합쳐서 아래와 같이 마스터 브랜치에 합쳐보겠다. 우선 위와 같은 상황이 되도록 브랜치를 만들어서 진행해보..