Github repository 위치 변경

IT 지식/Git|2019. 8. 1. 23:16

github에서 개인적으로 하고 있는 토이프로젝트 wedul_timeline을 친구와 함께 작업하기로 해서 그룹을 생성했다.

그룹 이름은 우리의 아이덴티티에 맞는 potato로 지정했다. ㅋㅋ

 

그런데 이렇게 지정하다보니 기존에 내 repository에 위치해있던 소스를 그룹으로 옮겨야 했다. 

그 과정에서 삽질했던 내용을 다음에는 삽질 하지 않도록 기록해봤다. 

 

현재 Git Repository 저장소 clone

우선 현재 있는 repository를 복사 해야한다.

git clone --mirror https://github.com/weduls/wedul_timeline

복사가 완료되었다. 그럼 이제 새로 이전할 레포지토리가 필요하다.

그룹에 들어가서새로운 레포지토리를 생성한다.

 

새로운 remote origin 설정

변경을 진행할 새로운 remote origin을 설정해준다. 새로운 remote 주소는 당연히 새로 생성한 레포지토리여야 한다.

git remote set-url --push origin https://github.com/weggdul/timeline_m

 

새로운 레포지토리에 복사한 저장소 내역 push

그럼 마지막으로 아까전에 mirror를 진행한 내역을 push로 서버에 밀어 넣어주자.

git push --mirror

 

결과를 확인해보면 레포지토리가 히스토리까지 그대로 옮겨진 것을 확인할 수 있다.

흠 편한군 ㅋㅋ

댓글()
  1. 2019.08.02 10:24 댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

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

IT 지식/Git|2018. 10. 4. 00:52

git에 연동해놓았던 travis ci에서 어느순간부터 계속 오류를 감지하였다.

그냥 귀찮아서 넘겼지만 보기싫어서 오류내용을 확인해봤다.

./gradlew assemble 오류는 gradlew 실행이 실패해서 발생하는 오류이다.

우선 locale에서 정상적으로 동작하는지 확인해보자.

1
./gradlew build
cs

오류가 발생한다. 왜그럴까.. 구글링 하다 보니 gradle wrapper가 실행될때 필요한 gradle-wrapper.jar 파일이 없어서 라고 한다. gradle-wrapper.jar 파일에 경우 gradle/wrapper 폴더에 들어있어야 하는데 없었다. 

그래서 gradle wrapper 명령어를 실행시켜서 생성해주었다.


그럼 다시 빌드해보자.

1
./gradlew build
cs


성공했다.

그럼 git에도 gradle/wrapper/gradle-wrapper.jar 파일을 올려보자.  

그런데 source tree에 변경된 리스트에 출력이 되질 않아서 명령어로 commit 하려는데 다음과 같은 문구가 나왔다.


확인해보니 .gitignore에 *.jar가 추가되어 있어서 안보이는 것 같다. 그래서 git repository에 올라가지 않아서 clone 받을 때 없었나보다.

그냥 -f 명령어를 넣어서 올려버렸다. 


흠 그래서 이번에 다시 travis ci 에서 재 빌드 하였는데 이런 오류가 떴다.

/home/travis/.travis/job_stages: line 266: ./gradlew: Permission denied

모지 권한오류라니.... 
또 구글링해서 알아보니 권한을 수정해줘야 한다는 것이다. 쩝
그래서 하라는대로 실행권한을 주었다. 그리고 확인하니 권한이 755로 올라갔다.



그리고 다시 빌드 시도

성공


참고

https://stackoverflow.com/questions/33820638/travis-yml-gradlew-permission-denied

댓글()

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

IT 지식/Git|2018. 10. 4. 00:34

이전직장에서도 SVN을 사용했다. 물론 GtitLab을 1년반정도 사용했으나 아쉽게도 협업하여 진행하지를 않아서 모두 master에 직접 커밋을 하였다.

그래서 이번에는 협업한다고 생각하고 시나리오를 만들어서 테스트를 진행해보자.

Github 저장소에서 상대방 Repository를 Fork하고 Pull Request를 요청해보고 변경된 최신내용을 Local에 반영하는 작업을 진행해보자.

1. 우선 Repository를 Fork 한다.


fork를 진행할 계정을 선택하고 확인을 누르면 내 Repository에 Fork된 저장소가 보이는 것을 확인할 수 있다.


2. SourceTree에 추가

Git을 Command를 사용해서 멋지게 사용하면 좋지만 실력이 부족하기 때문에 SourceTree를 사용해서 진행해보자.
SourceTree에 방금 Fork 했던 저장소를 추가해보자.


3. 소스코드 변경

Clone을 받은 코드를 내가 원했던 내용대로 수정하고 커밋과 push를 진행한다.


작업을 완료한 후 내 저장소에 가보면 정상적으로 커밋과 푸시가 완료된것을 확인 할 수 있다.


4. 변경사항 Pull Request
지금까지 진행한 내용은 내 개인 Repository에만 반영되어있다. 실제로 원래 저장소에 가보면 원래 상태 그대로인것을 확인할 수 있다.

그럼 위에 그림에서 New pull request 버튼을 누르고 비교할 브랜치를 선택 해준다.

그러면 아래와 같이 변경사항과 함께 Pull request를 만들 수 있는 화면이 나온다

그럼 코멘트를 작성하고 Pull Request를 만들어보자.

요청이 완료되었고  이제 저장소의 원래 소유자가 요청을 받아주면 작업을 완료 할 수 있습니다.


5. Pull Request 수락.

원래 Repository의 주인인 dauns 계정으로 들어가 보면 Pull Request가 하나 있는것을 확인할 수 있다.
여기서 이 요청을 거절할 수도 있고, merge 할수도 있고 rebase 할수도 있다.

테스트이기 때문에 Merge 해보자.

Merge를 하고 나면 저장소에 내용이 변경되었고 Pull Request도 사라진것을 확인할 수 있다.

6. 원격 저장소 변경사항 Local에 반영

내가 fork를 진행한 원격 저장소 내용이 변경되어서 내가 fork를 진행한 저장소와 달라졌다고 가정해보자. 

위에 그림에 보면 tt.java라는 파일이 추가되었고 내 저장소에는 저 내용이 반영되어 있지 않다.

이를 반영하기 위해서는 먼저 원래 저장소를 upstream의 이름으로 원격저장소로 추가해줍니다.


그리고 추가된 upstream에서 우측클릭을 한 후  "upstream에서 가져와 병합하기"를 선택합니다.

그러면 원격저장소의 내용이 내 Local Repository에 반영이 되었습니다. 


이 내용을 commit & push 하여 내 원격 저장소에도 반영을 해주면 완료됩니다.

확실히 GIT이 더 어렵다. 

지금이야 간단하지 꼬이면 참 귀찮아질 것 같다. 사례를 많이 만들어봐서 연습해봐야겠다.

댓글()

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

IT 지식/Git|2018. 6. 22. 00:28

저번에 공부했었던 rebase에 대해 더 공부해보자. 이번에 공부할 내용은 대화형 rebase를 통해 커밋한 내용을 지우거나, 순서를 바꾸거나 기존 커밋에 내용을 더 추가하거나 하는 내용을 확인해보자.

 

커밋 합치기

리베이스를 진행할 때 리베이스를 진행할 브랜치에 커밋된 내용이 길다고 가정해보자. 그러면 그 커밋마다 변경된 내용이 다 달라서 master에 리베이스를 진행할 때 여러번에 conflict를 해결해야 한다.

그래서 오늘 강의해주신 강사님이 말씀하시길 브랜치의 커밋을 하나로 합치고 나서 rebase를 진행하면 좋다고 하셨다. 그럼 합쳐보자.

우선 아래 이미지를 보면 c2와 c3의 커밋을 하나로 합쳐서 아래와 같이 마스터 브랜치에 합쳐보겠다.

우선 위와 같은 상황이 되도록 브랜치를 만들어서 진행해보면 다음과 같이 히스토리를 볼 수있다.

그럼 여기서 feature 커밋과 feature 2번째 커밋을 합쳐보겠다.

우선 대화형 리베이스에 경우 앞에 있는 커밋들에 대해 조정을 하는 것이기 때문에 조정하려고 하는 커밋의 바로 직전 커밋에서 조절을 시작해야한다. 

위에 상태에서는 feature 브랜치에서 마스터 커밋위치에서 우측 클릭을 하여 대화형 리베이스 모드에 진입한다. (이 부분은 앞으로 진행할 내용들도 동일하다.)

가장 최상단의 커밋을 누르고 이전 커밋과 합치기를 누른다.

그러고 난 후 커밋을 더블클릭하면 메시지를 변경할 수있다.

 

그러면 다음과 같이 합쳐진것을 확인할 수있다.

 

특정 커밋 없애기

이번에는 특정 커밋을 제거 하고 싶을 때 하는 방법을 알아보자.

위와 같은 상황에서 feature 커밋 2를 없애보자.

마찬가지로 바로 직전 커밋인 feature 커밋 1으로 커서를 두고 대화형 리베이스 모드에 들어간다.

그리고 지우고자 하는 커밋을 선택하고 삭제한다음 OK 를 누른다.

 

그러면 다음과 같이 커밋 히스토리가 변경된 것을 알 수 있다.

커밋 순서 바꾸기

커밋의 순서를 바꾸고 싶을 때 다음과 같이 진행한다.

동일하게 그 직전에 마우스를 놓고 대화형 리베이스 모드에 들어간다.

feature commit2 와 3의 순서를 바꿔보겠다.

변경을 원하는 커밋을 누르고 하단의 화살표를 통해 순서를 바꾸고 확인을 누르면 된다.

 

중간에 커밋내용 변경하기

커밋을 진행하다 보면 파일을 빼먹을때가 있다. 이럴경우 특정 커밋에 내용을 추가해주면서 방법을 알아보자

 

바로 직전인 마스터 대화형 리베이스를 선택한다.

그리고 해당 커밋에 amend 영역을 클릭하고 확인을 누른다.

그러면 해당 commit 부분이 리베이스 될때 멈추는 것을 볼 수 있다.

그 상태에서 변경하거나 추가하고 싶은 파일을 스테이지 다음과 같이 올린다. 여기서 중요한 것은 스테이지에 올린 후에 커밋을 진행한다 (커밋 옵션에서 마지막 커밋 수정을 눌러서 진행해야 한다.)

그리고 액션 메뉴에 있는 재배치 계속을 클릭한다.

 

 

여러 경우 리베이스에 대해 공부했다.

다음에는 리베이스 도중 conflict 해결에 대해 알아보자.

 

 

댓글()

git사용을 위한 ssh-keygen 설정

IT 지식/Git|2018. 5. 27. 21:26

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 부분에 입력한다.

댓글()

CI를 알아보고 Github에 travis-ci를 적용해보자.

IT 지식/Git|2018. 5. 27. 21:22

개발을 하는데 많은 도움을 주는 환경이 늘어나고 있다. 그중에 CI 기법을 자주사용하는데 그중에 travis ci를 알아보자. 

우선 CI(Continuous Integration)란 무엇인가? 

CI는 개발자가 개발한 소스코드가 커밋될 때마다 오류가 있는지 확인해주고 빌드까지 해주는 시스템을 말한다. 

이는 배포와 빌드 테스트를 한번에 진행을 해주면서 시간을 절약하는 효과를 발휘한다. 

대표적인 CI 서버는 Jenkins, Travis 등이 있다. 

그럼 대표적인 SCM인 github와 trivis-ci를 연동하는 방법을 알아보자.

Github와 Travis-ci 연동
1. https://travis-ci.org/ 에서 github 계정으로 로그인을 한다.
2. 연동하고자 하는 Repository에 switch를 on 한다.




3. 소스코드 최상단에 .travis.yml 파일을 추가한다. 해당 파일 내부에 설정값 작성 방법은 travis 홈페이지에서 확인할 수 있다. 내 저장소는 java 프로젝트이기 떄문에 다음과 같이 설정하였다.





language: java branches: only: 

- master



4. 해당 repository의 테스트 커밋을 진행한다. 소스에 이상이 없이 정상적으로 커밋되면 다음과 같은 화면을 확인할 수 있다.





travis에 연동이 완료되었다.
그 다음 내 repository에 README.md 파일에 하단과 같은 태그를 추가하는 방법을 알아보자.





README.md 파일에 태그 추가하기
1. travis 페이지에서 README.md 파일에 추가할 url 정보를 가져온다. (markdown으로 가져와야한다.)






2. README.md 파일에 [![Build 로 시작하는 부분을 복사해서 추가한다.

아주 간단하다.
이렇게 travis-ci를 설정해 놓으면 커밋할때마다 오류여부를 바로 확인 할 수 있어 좋은것같다.

회사 프로젝트도 svn과 jenkins을 연동하여 커밋시 자동으로 빌드되도록 환경 구성을 한번 해봐야겠다.


댓글()