git에서 rebase와 merge

요즘엔 git을 많이 이용하는데 항상 rebase와 merge에 대해서 헷갈리곤 했다. 잘 모를때 rebase로 하다가 소스를 날려먹은 후로는.. merge만 써왔다 최근에 몇군데 찾아봤는데 rebase 는 branch의 base를 재배치 한다는 의미라고 한다. gitflow를 쓰면서 feature를 새로 만들어서 작업을 하다 그동안 쌓인 develop를 rebase를 해봤는데. feature에서 작업하던 도중 쌓인 develop의 commit들이 local feature밑으로 들어가지는걸 확인했다. 히스토리가 꼬이지 않아 좋지만 한가지 문제는 feature를 서버로 push한 상태라면.. feature브런치가 두개가 생겨버린다 물론 로컬이 최신이므로 remote/origin을 feature를 삭제하고 신규로 push하면 해결되는것 같다....

March 24, 2016 · 1 min · 페이퍼

git local commit revert 시키기

아래와 같이 복구 대상 저장소를 지정한다 (현재 checkout이 develop인 경우) 1 git reset --hard remotes/origin/develop 저장소를 지정하지 않으면 현재 checkout된 remote를 기준으로 revert하는것 같다 1 git reset --hard

February 25, 2016 · 1 min · 페이퍼

git 관련 명령어 모음

svn to git 마이그레이션 1 2 git svn clone --stdlayout --no-metadata -A users.txt svn://example.com/repository/projectname cd projectname 아래 users.txt 만드는건데 perl 이 없어서 그런지.. 안되네요… ㅠ svn log ^/ --xml | grep -P "^<author" | sort -u | \ perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt ignore file처리 1 git svn show-ignore -i trunk > .gitignore remote git 지정 1 git remote add origin git@git.example.com:group/projectname.git tags 처리 1 git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done branches 처리 1 git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done push한다....

March 4, 2015 · 1 min · 페이퍼