git 을 이용하여 svn repository 사용하기. |
출처 : http://viget.com/extend/effectively-using-git-with-subversion
Repository Setup
-
$ git svn clone -s [svn 주소] [downloadPath]
// -s 는 subversion repository 가 trunk/ branches/ tags/ 로 구성된 표준 layout 을 구성한다는 이야기이다.
위 명령어는 downloadPath 에 git repository 정보를 불러온다.
이 때 empty directory 는 불러오지 않는다. ( git 자체가 empty directory 를 track 하지 않는다. )
-
svn:ignore 를 통해 ignore 된 파일들은 ignore 되지 않는다.
따라서 이들을 ignore 시키려면 다시 다음 명령어를 호출해주어야 한다.
git svn show-ignore > .gitignore
// 이 방식은 .gitignore 파일 역시 tracking 하는 방법이다.
or
git svn show-ignore >> .git/info/exclude
// 이 방식은 ignore 파일을 tracking 하지 않는 방법이다.
Branch 만들기
-
git 은 lightweight local branch 를 만들기 쉽다.
git branch [newBranchName] (targetBranchName)
// 현재의 branch 의 branch를 만들 경우에는 써주지 않아도 된다.
-
생성한 branch 로 이동하기 위해서는
git checkout [newBranchName] 을 하면 된다.
-
생성을 하면서 이동하기 위해서는
git checkout -b [newBranchName] (targetBranchName)
// targetBranchName 은 optional
-
존재하는 모든 branch 를 보기 위해서는
git branch
-
remote 에 있는 branch 까지 보려면
git branch -a
// 오래 걸릴 수 있다.
변화된 파일 추가하기
-
새로운 파일을 생성했거나, 기존 track 된 파일을 변화를 시켰다면
git add [newFileName]
// 이 명령을 하면 tracking 을 시작한다, recursive 로 작동하기 때문에 파일 이름 대신 폴더를 지정해줘도 된다.
-
tracking 하던 파일을 삭제하려면
git rm [fileName]
// 이 명령도 add 와 마찬가지로 recursive 하게 동작시킬 수 있는데, recursive 로 동작시키기 위해서는 add 와 다르게 -r 옵션을 줘야 한다.
-
아래 명령을 수행하면 변화된 부분을 보여주며 이 녀석들을 add 할것인지 아닌지를 물어보는 procesure 를 타게 된다.
git add --patch
// git 은 파일의 변화를 보지 않고, 파일 내용의 변화에 집중한다.
Change 한 것 Revert 하기
-
svn 의 revert 와 완벽히 매치하는 git 명령어는 없다.
revert 하는 것은 add 가 되었는지 여부에 따르는데, 만약 add 되지 않았다면
git checkout [fileName]
만약 add 되었다면
git reset HEAD [fileName]
Commit 하기
-
git commit
// commit message prompt 가 나온다.
or
git commit -a '메시지'
// commit message prompt 없이 바로 commit 된다.
Branch 를 master 에 merge 하기
-
git checkout master
git merge [featureBranchName]
만약 conflict 가 있다면 이것을 고치도록 표시해준다.
conflict 를 수정한 경우에는 git add 로 수정사항을 다시 staging 시켜준 후 commit 을 수행해야 한다.
-
만약 branch 에 많은 commit 을 했는데, 이것을 하나로 응축시켜 merge 하고 싶은 경우에는
git merge --squash [featureBranchName]
Subversion 으로부터 update 하거나 commit back 하기
-
subversion 으로 commit 하기 전에 subversion 에 변동사항을 다운받아서 local git repo 에 적용하기를 원할 것이다.
git svn rebase
// subversion 으로부터 모든 새로운 change 를 다운받아 local change 에 적용한다.
-
rebase 를 해준 후에 svn 으로 recommit 하기 위해서는
git svn dcommit
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
starUML 에서 final field 마킹(표시)하는 방법 (0) | 2016.05.24 |
---|---|
Good Engineer 의 5가지 조건 (0) | 2016.05.03 |
SVN 을 사용하면서 git 처럼 local commit 후에 searver 로 push 할 수 있나요? (0) | 2016.04.23 |
Class Diagram 에 대한 구체적인 내용들. (0) | 2015.06.28 |
git commit message 수정 방법 (0) | 2015.03.22 |
댓글