Git | 원격 Git 저장소 | git push


git push 명령

푸시는 브랜치를 로컬 저장소에서 원격 저장소에 쓰기 작업을 의미합니다. 이 명령은 git fetch 반대되는 것이지만, 페치는 지점을 로컬 저장소로 가져 오는 작업 인 반면, 푸시 지점을 원격 저장소로 내보내기 작업입니다. 이 명령은 변경의 잘못 쓰기를 일으킬 수 있으므로 사용시주의가 필요합니다. 이 문제는 아래에서 설명합니다.

사용법

git push <remote> <branch>

관련된 모든 커밋 및 내부 개체와 함께 지정된 지점을 <remote>에 밀어 명령입니다. 이 명령을 실행하면 푸시 대상 리포지토리에 로컬 브랜치가 생성됩니다. 변경의 잘못 쓰기를 방지하기 위해 Git은 푸시 연락처 저장소에서 통합 처리가 앞으로 병합 아닌 경우는 푸시가 거부됩니다.

git push <remote> --force

위의 명령과 비슷하지만 앞으로 병합 아닌 경우에도 강제로 밀어가 실행됩니다. 푸시 조작에 의해 어떻게 될지를 완벽하게 이해하고있는 경우를 제외하고는 –force 플래그를 사용하여 수 없습니다.

git push <remote> --all

모든 로컬 브랜치를 지정하여 원격 저장소에 밀어 명령입니다.

git push <remote> --tags

브랜치를 푸시하는 것만으로는 예 –all 플래그가 지정된 경우에도 태그가 자동으로 푸시되지 않습니다. –tags 플래그를 지정하면 모든 로컬 태그를 원격 저장소에 보낼 수 있습니다.

보충 설명

git push 의 가장 일반적인 사용 사례는 로컬 변경의 중앙 저장소에 게시합니다. 몇 번이나 로컬 커밋을 실행하고 그것을 다른 개발자와 공유 할 단계가 된 경우 (필요한 경우) 인터랙티브로 Rebase 사용하여 그것을 정리하고 그것을 중앙 저장소에 푸시 합니다.

Git 튜토리얼 : git push

위 그림은 로컬 master 가 중앙 저장소의 master 를 추월 해 진행하고 그 상태에서 git push origin master 명령을 실행하여 변경 사항을 게시하면 어떻게되는지를 보여줍니다. git push 가 원격 저장소에서 git merge master 명령을 실행하는 경우와 본질적으로 동등하다는 것을 명심하십시오.

강제 추진

Git은 푸시의 결과로 앞으로 병합 이외의 처리가 필요한 경우, 푸시 요청은 거부됩니다. 따라서, 원격 저장소와 로컬 저장소가 분기 상태에있는 경우에는 먼저 원격 브랜치를 가져 와서 로컬 브랜치로 병합 한 후 다시 밀어 시도해야합니다. 이것은 SVN에서 변경 내용을 커밋하기 전에 로컬 저장소를 원격 저장소로 동기화 할 때 svn update 명령을 사용하는 것과 비슷합니다.

–force 플래그를 지정하면이 제한이 해제되고 원격 저장소를 로컬 저장소에 일치시키기 위해 마지막으로 끌어 된 시점 이후에 원격 저장소에 변경이 발생했다면 그들은 모두 삭제됩니다. 강제 푸시가 필요한 유일한 경우는 공개한지 얼마 안된 커밋에 결함이 발견 git commit –amend 명령 또는 대화 형 리베이스를 사용하여 그것을 수정 한 경우입니다. 그러나이 경우에도 –force 플래그를 적용하기 전에 결함이있는 지점을 끌어 개발자는 한 명도 없다는 확신이 있어야합니다.

푸시 처는 베어 저장소 제한

또한, 푸시 시설은 –bare 플래그를 지정하여 만든 저장소에 한정해야합니다. 푸시는 원격 저장소의 구조를 변경하는 작업이기 때문에 다른 개발자의 저장소에 푸시는 결코 가서는 안됩니다. 베어 저장소에만 작업 디렉토리를 가지지 않기 때문에 다른 개발자의 개발 작업을 방해하는 것은 아닙니다.

사용 예

다음 예제는 로컬 작업 성과를 중앙 저장소에 공개하는 일반적인 방법을 보여줍니다. 먼저 로컬 master 를 확실히 최신의 것으로하기 위해 중앙 저장소의 master를 가져 와서 로컬 변경 게다가으로 업데이트합니다. 여기서 커밋을 공유하기 전에 대화 형 리 기반을 활용하여 커밋을 정리하면 좋을 것입니다. 다음은 git push 명령을 사용하여 로컬 master 의 모든 커밋을 중앙 저장소로 보냅니다.

git checkout master
git fetch origin master
git rebase -i origin/master
# Squash commits, fix up commit messages etc.
git push origin master

이미 로컬 master 가 최신으로되어 있는지 확인하고 있기 때문에 병합은 앞으로 병합 될 것이며, git push 명령을 실행해도 앞서 말한 앞으로 병합 이외의 통합 처리로 인한 문제 가 발생하지 않습니다.