[Git] 원격 저장소에있는 브랜치를 로컬로 가져오기

참고: http://blog.outsider.ne.kr/641

git pull이나 fetch를 아무리해도 원격 저장소에 있는 브랜치를 땡겨오진 않습니다.

git branch를 실행하면 본인의 저장소에 있는 브랜치 목록을 확인할 수 있죠. 여기에 -r을 더 붙이면 원격 저장소의 브랜치를 볼 수 있습니다. -a를 붙이면 원격과 로컬에 있는 브랜치를 전부다 보여주죠.

$ git branch -r
origin/HEAD -> origin/master
origin/dev-env-refactoring
origin/gh-pages
origin/master

원격에 dev-env-refactoring이라는 브랜치가 있는데 이걸 로컬로 가지고 오고 싶다면..

$ git checkout -b env origin/dev-env-refactoring
Branch env set up to track remote branch dev-env-refactoring from origin.
Switched to a new branch ‘env’
$ git branch
* env
master
$ git branch -a
* env
master
remotes/origin/HEAD -> origin/master
remotes/origin/dev-env-refactoring
remotes/origin/gh-pages
remotes/origin/master

끝… 이제 머지를 해볼까;;

[Git] 아흑.. 커밋을 잘못했네;; 세상에 푸쉬까지 해버렸는데… 어쩌지…

필요한 작업은 두가지. 하나는 reset 하는 다시 push. 덤으로 remote에 있는 저장소와 pull을 해서 다시 한번 동기화 맞춰주기.

세번째 작업은 부가적인거니까 일단 앞에 두개만 해보자.

git reset HEAD^

이 명령을 사용하면 커밋 하나를 되돌릴 수 있다. 두개를 되돌리려면

git reset HEAD~2

이렇게 되돌린 다음엔 다시 커밋을 하고..

git commit -m ‘머라머라’

이제 Push를 해야되는데.. Github같은 곳에 있는 저장소로 올리려고 push하면 다음과 같은 메시지가 떨어진다.

$ git push origin master
To git@github.com:keesun/telepathy.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘git@github.com:keesun/telepathy.git’
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. ‘git pull’) before pushing again. See the
‘Note about fast-forwards’ section of ‘git push –help’ for details.

원격 저장소에 있는 정보가 손실 될 수 있는 작업이라서 리젝트 시킨다. 오호.. 상당히 똑똑하다. 그런데 어쩌겠는가.. 내가 원하는 작업이 바로.. 그 작업이라네.. 없애주길 바래.

이럴때 사용할 수 있는게 +다.

git push origin +master

이렇게 +를 붙여주면 경고는 무시하고 데이터가 손실되도 push한다.