feature 브랜치에서 작업을 진행하고 있는 중 다른 작업 요청이 와서 다른 브랜치로 checkout을 했는데 작업했던 소스가 보이는 현상이 발생했다. 내가 원했던 것은 새로운 브랜치로 변경을 하게 되면 기존 작업했던 소스 변경 및 새로 추가된 파일이 보이지 않는 것이였다. 이를 해결하기 위한 방법으로는 작업했던 소스들을 local repository에 커밋한 후 브랜치 변경을 하면 작업했던 소스들이 보이지 않게 할 수 있다. 하지만 완성되지 않은 코드를 커밋하는 것은 안 좋은 방법이기 때문에 이 방법은 그닥 추천하지 않는다. 이런 경우 Git에서는 어떠한 방법으로 가이드 하고 있는지 찾아보니 stash 라는 기능이 있다는 것을 알게 되었고, 다음과 같은 작업 절차를 이용하면 내가 원하는 상태에서 개발..
git을 이용하다 보면 충돌이 발생되는 경우가 많은데 SourceTree에서 제공하는 default 머지 툴은 사용하기가 불편하다.자신이 선호하는 merge tool이 있는 경우 이를 변경할 수 있는데 Tools > Diff 탭 이동 후 Merge Tool을 선택하면 된다. (난 P4Merge 툴을 사용) 위와 같이 SourceTree에서 설정을 완료하게 되면 다음의 .gitconfig 파일에 설정 정보가 추가되어 있는 것을 확인할 수 있다. .gitconfig 파일[mergetool "sourcetree"]cmd = 'C:/Program Files/Perforce/p4merge.exe' \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"trustExitCode = true ..
SourceTree를 사용하면서 local repository에 commit을 할 때 항상 Staged 영역에 변경된 소스를 추가한 후 commit을 해주곤 했다.헌데, 이런 반복적인 작업이 여간 귀찮은게 아니다. 이때 사용할 수 있는 방법이 Commit mode를 Seleted files로 변경하여 바로 commit을 날리는 것이다. 헌데, 매번 commit mode를 Seleted files로 변경해 주는 것 또한 귀찮다.default 설정을 바꾸는 곳이 분명 있을 거라 생각되어 찾아보니 역시나 존재했다.Tools > Options > Git 탭 이동"Use the staging area" 체크 박스 해제
Git을 이용하여 개발을 하였을 경우 원격 저장소의 소스를 내 로컬 저장소에 merge하기 위해서는 pull을 받게 된다.pull을 하게 되면 원격 저장소의 소스를 로컬 저장소로 가져온 후, Merge 작업을 자동으로 수행한다.여기서 원격 저장소의 소스를 로컬 저장소로 가져오는 작업을 Fetch라고 한다.즉, pull을 하게 되면 fetch를 한 후 merge 작업까지 자동으로 실행해 주는 것이다. 그럼 pull을 받았을 때 충돌이 발생하면 어떻게 해야 하는 걸까?이런 경우는 우선 fetch를 받은 후 개발자가 수동으로 merge 작업을 진행해 줘야 한다. 이클립스 EGit을 사용할 때 한 가지 알아야 할 것이 있는데 Egit 플러그인에서는 synchronize workspace 실행 전 fetch를 자..
git에 대한 개념적인 설명보다는 실무에서 무리 없이 사용할 수 있는 범위로 상황별 시나리오를 작성한다.각각의 시나리오는 A, B 개발자가 Git을 함께 쓰는 것을 예로 든다. 1. 개발자A 새로운 파일 생성 후 로컬 리포지토리에 commit이클립스에서 newFile1.txt 파일을 새로 생성하게 되면 해당 파일은 Untracked file의 상태를 가진다.Untracked file의 의미는 Git에서 관리대상에 포함되지 않는 다는 의미이다.이제 파일을 로컬 리포지토리에 commit해보자.프로젝트를 클릭 한 후 team > Synchronize 를 실행하면 newFile1.txt 파일이 목록에 보이게 된다.이제 해당 파일 commit을 해보려고 하면 commit을 할 수 없다. 커밋 버튼이 비활성화 되어..
jenkins를 사용하게 되면 대게 폴링을 이용하여 형상 관리 시스템의 리비전이 변경되었는지를 체크한다.만약 변경이 되어 있으면 빌드가 실행되고, 변경이 없다면 빌드가 실행되지 않는다.허나 이 방법은 매번 jenkins 시스템이 형상관리 시스템으로 불필요한 요청을 보내게 되는데 이런 문제를 해결할 수 있는 기술이 hook이다. hook의 동작 방식은 개발자가 github에 소스 코드를 push하면 github 시스템이 jenkins 시스템으로 noti를 보내게 되는 방식이며 이를 받은 jenkins 시스템은 빌드를 시작하게 된다. 다음은 설정 방법이다.1. GitHub plugin 플러그인 설치 2. Jenkins > configuration > GitHub Web Hook 이동 - Let Jenkins..
Git에서 필요한 라이브러리 다운로드yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel fedora 계열은 sudo apt-get install git Git 소스 다운로드cd /usr/local/srcwget http://git-core.googlecode.com/files/git-1.7.9.tar.gztar xvzf git-1.7.9.tar.gzcd git-1.7.9 Git 소스 컴파일 및 install./configuremakemake install Git 저장소 생성mkdir git-testcd git-testgit init Initialized empty Git repository in /home/nklee/git/git..
EGit 플러그인 설치Help > Install New Software.. 이동Work with의 셀렉트 버튼 클릭 후 Indigo - http://download.eclipse.org/releases/indigo 선택Collaboration 메뉴 확장 후 Eclipse EGit 체크 후 설치 git 설정window > Preferences > General > Network Connections > SSH2의 key management탭에서 Generate RSA Key 생성 후 Save Private Key 클릭id_rsa 파일과 id_rsa.pub 파일이 생성이 되는데 원하는 디렉토리에 저장한다. (나는 D:\\git 디렉토리에 저장하였음)key를 만들어 주는 이유는 github과 연동 시 http..