본문 바로가기
프로그래밍 놀이터/Tips

git 을 이용하여 svn repository 사용하기.

by 돼지왕 왕돼지 2016. 4. 24.
반응형

 git 을 이용하여 svn repository 사용하기.



출처 : http://viget.com/extend/effectively-using-git-with-subversion

.git/info/exclude, .gitignore, a, B, Branch, Branch 를 master 에 merge 하기, Branch 만들기, branches, Change, Change 한 것 Revert 하기, checkout, COMMIT, Commit 하기, Conflict, empty directory, GIT, git add, git add --patch, git branch, git checkout, git commit, git commit -a, git merge, git reset, git reset HEAD, git rm, git svn, git svn clone, git svn dcommit, git svn rebase, git svn show-ignore, git 을 이용하여 svn repository 사용하기., lightweight local branch, local branch, local change, local git repo, Master, merge, newbranch, r, rebase, recursive, Repository, Repository Setup, revert, S, s option, squash, Staging, subversion, Subversion 으로부터 update 하거나 commit back 하기, svn, svn repository, svn 주소, svn:ignore, Tags, target branch, track, Tracking, trunk, 머지, 변동사항, 변화된 파일 추가하기, 응축, 저장소, 파일, 파일 내용 변화, 파일 변화, 폴더, 표준 layout



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





반응형

댓글