반응형
반응형

Windows환경에서 git bash를 이용해서, Linux 서버에 배포를 하는 작업을 주로 하는데, add 하는 과정에서 CRLF가 붙어버려서, 일반적으로는 문제가 없지만, 쉘 스크립트 등은 치명적일 수 있기 때문에, 이를 방지하는 설정이 있다는 걸 알게 되었다.


사실 문제가 생겨서는 아니고, add 할때마다 아래와 같은 Warning 메시지가 나오는게 거슬려서 찾아보게 됨.

warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.


git bash를 띄워서, 아래와 같은 명령어를 입력하면 자동으로 CRLF가 생성되는 것을 방지한다.

$ git config --global core.autocrlf false


반응형
,
반응형

코인거래소의 API를 연동할 일이 생겨서, 작업을 해서 최종적으로 github에 올리게 되었는데, 이전 직장에서 사용하던 git 사용 습관상 master branch는 건드리지 않고, master branch를 새롭게 clone떠서 다른 branch로 만든 후 push, 그 후 master branch의 내용을 다른 branch와 rebase 하는 작업을 하다보니..


rebase 특성 상, commit 을 일렬로 쭉 나열하기 때문에, 테스트간 API Key를 넣어서 로컬에서 commit했던 이력도 전부 다 github에 올라가게 되버리는 참사가 일어나게 되었다. 


이게 SVN만 사용하다보니, 로컬 commit이 같이 push가 될거라고는 생각을 못했는데, 치명적인 실수였던 것 같다.


당장 Key가 노출되었기 때문에, 거래소 API Key는 바로 삭제처리하고, 조금 더 완벽하게 하기 위해 github에 이미 올라간 API Key가 노출된 commit(HEAD 기준 바로 전 커밋)도 같이 없애 보기로 하였다.


아래와 같이 작업을 계획했고, 그 결과 자연스럽게 내가 노출한 Commit을 Commit을 안한거처럼 보이게 할 수 있었다.


1. remote repo 현재 버전을 로컬에 clone

$ git clone <Remote REPO URL>

2. 로컬에서 git rebase 명령어를 통해 HEAD와 바로 전 Commit을 합침

$ git rebase -i HEAD~2   # HEAD 포함 2개까지의 Commit을 하나의 Commit으로 만들겠다.
# 위 명령어를 치면 editor가 열리며 아래와 같이 해당되는 Commit들이 목록에 보여짐
# 아래부터는 전부 Editor 메시지
pick 111111 HEAD 바로 이전 Commit
pick 222222 HEAD Commit

# HEAD 바로 이전 Commit과 HEAD를 합치기로 했으므로, HEAD 부분의 커밋에 해당하는 라인의 가장 앞에 있는 pick을 squash로 바꿔주고, 저장 후 빠져나온다.
pick 111111 HEAD 바로 이전 Commit
squash 222222 HEAD Commit

# 이제 다시 editor가 뜨며, 새로운 commit 메시지를 입력하라고 나온다. 2개의 Commit을 자연스럽게 합치고, 메시지를 뭘로 할지 결정해서 입력해주고, 저장 후 빠져나온다.
# 주의사항이 있다면, 주석을 제외한 모든 텍스트가 Commit 메시지가 된다.
# This is the 1st commit message:
HEAD 바로 이전 Commit

# This is the commit message #2:
HEAD Commit

3. remote repo에 push (github 정책 상 커밋 이력을 수정하게 되면 다른 사용자가 pull을 받은 경우 conflict이 날 수 있기 때문에, 기본적으로 허용을 안한다고함.. 이런 경우 --force 옵션을 사용하여 강제로 덮어버릴 수 있다.)

$ git push origin master --force



반응형
,

[Git] 설치

개발/Git 2016. 6. 11. 00:39
반응형

Jenkins와 연동할 SCM이 필요해서, 뭘 사용할까 고민하다가 git을 사용하기로 마음 먹음.

 

이미 사내에 git, svn 둘다 있지만.. 새로 설치해서 세팅해보는걸로...

CentOS 기준이다. 

 

1. 사전 설치 목록

$ yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel

 

2. git을 다운받아서 압축을 푼다. 아래경로에서 받을 수 있음. (현재 최신버전이 1.9.0) 

 - http://code.google.com/p/git-core/downloads/list

 

3. 압축푼 경로로 이동 후 아래 명령어 작성

$ make prefix=경로 all
$ make prefix=경로 install

 

4. perl 관련된 에러가 발생한다. (발생하지 않으면 5번으로 넘어간다.)

- 해결 : http://madcoda.com/2013/09/cant-locate-extutilsmakemaker-pm-while-compile-git/ 

- perl-devel이 깔려있지 않아서 인 것 같다.

- 설치 후, 3번을 다시 실행 

반응형
,
반응형

git bash등을 켜서, 디렉토리로 이동한 후 git init을 해주면, 로컬에 Repository가 생김.

 

webapp기준 target/폴더 등은 올라가 필요가 없으므로,

.gitignore파일을 생성하여 추적에서 제외시켜준다.

 

commit 까지 해준다. (git add, git commit) 

 

이제 원격지에 push를 해야 한다.

gerrit을 설치해서 gerrit에 push를 할 것이기 때문에, 다음 포스트는 gerrit 설치 및 연동이 될 것 같다. 

반응형
,
반응형

처음에는 네트워크 상황이 좋지 않아서 타임아웃이 발생했겠구나 싶었는데..

고작 500 line밖에 안되는 텍스트 문서가 타임아웃이 발생하는 건 좀 아닌 것 같고 해서 찾아보니..

역시나 Gerrit의 버그였다.

 

Gerrit 2.9.x 기준으로 해결방법은,

Old Screen -> new Screen으로 설정에서 바꿔주면 발생하지 않는다.

 

처음엔 New Screen이 복잡해보여서 사용을 안했었는데,

Diff 해주는 UI라던지, 코드 리뷰 점수, Submit등 화면이 안넘어가고 한 화면에서 누를 수 있어서

더 편한듯..?

반응형

'개발 > Git' 카테고리의 다른 글

[Git] 설치  (0) 2016.06.11
[Git] Repository 만들기  (0) 2016.06.11
[Git Bash] git push 명령어 만으로 Gerrit Master에 push하기  (0) 2016.06.11
[Gerrit] download-commands Plugin 설치  (0) 2016.06.11
[Git] Git bash public key 추가  (0) 2016.06.11
,
반응형

각 프로젝트에서 vi .git/config로 파일을 열어서

[remote "origin"] 항목에 한줄을 추가한다.


push=HEAD:refs/for/master 


위와 같이 설정을 바꾸어 두면, git push origin HEAD:refs/for/master로 gerrit에 push하던 것을

git push 만으로 가능하게 해준다.

반응형
,
반응형

Eclipse -> IntelliJ로 IDE변경 작업을 하면서,

mylyn에서 제공하던 IDE 자체 리뷰 기능을 사용하지 못해서 아쉬워하던 중..


IntelliJ에서도 gerrit plugin을 지원하여, IDE 자체에서 리뷰 기능을 제공하도록 하고 있었다.


gerrit 플러그인을 설치하고, 새로운 patchSet을 업로드 해보았는데.. 수동으로 검색하기 전까지 목록이 뜨지 않았고

아래와 같은 에러가 발생하였다.


Cannot fetch changes: No fetch information provided. If you are using Gerrit 2.8 or later, you need to install the plugin 'download-commands' in Gerrit.


대충 구글링하여 원인 파악을 해보니, IntelliJ에서 Gerrit으로 보내는 다운로드 프로토콜이 맞지 않아서 발생하는 에러라고 한다.


이 문제는 Gerrit에서 download-commands 플러그인을 설치하여, 다운로드 프로토콜을 추가 지원하면 해결이 된다.

설치 방법은 Gerrit이 설치된 Path의 bin폴더에 가서 아래 명령어를 입력하면 설치가 된다.


java -jar gerrit.war init -d {Gerrit Home 경로} --install-plugin=download-commands

반응형
,
반응형

AWS에 Git 서버가 들어있는 경우 인증키 문제 관련된 내용


Eclipse 같은 경우는 General - Network Connection - SSH2 에서 private key로 ppk든 pem이든 추가를 해주면,

인증 문제가 해결이 되지만, Git Bash같은 경우는 기본적으로 사용자 폴더 밑에 .ssh 폴더에 있는 Key를 참조하기 때문에

Eclipse에서 세팅을 했다고해도 인증 문제가 발생한다.


이런 경우, AWS 인증키(ppk or pem파일)를 이용하여 public key를 직접 생성해주어야 한다.


1. puttygen 프로그램 (구글링 하면 바로 나옴)을 실행하여 ppk파일을 Load해준다.


2. 상단 메뉴 중 Conversions - Export OpenSSH Key 메뉴를 선택 후 발생하는 팝업에서, id_rsa 라고 적어준다.


3. Save public key 버튼을 눌러 id_rsa라고 적어준다. (id_rsa.pub 파일이 생성됨)


4. 생성된 두 개의 파일 (id_rsa, id_rsa.pub)을 Windows 사용자 폴더\.ssh 경로에 복사해준다.

반응형
,
반응형

SSL 인증키 검사때문인데, 그냥 검사하지 않도록 세팅하면 된다.


git config --global http.sslVerify false


반응형
,
반응형