수색…


소개

Git을 사용하여 코드를 변경, 준비 및 커밋 한 후에 다른 사용자가 변경 사항을 사용할 수있게하려면 푸시가 필요하며 저장소의 로컬 변경 사항을 저장소 서버로 전송해야합니다. 이 항목에서는 Git을 사용하여 코드를 올바르게 푸시하는 방법에 대해 다룹니다.

통사론

  • git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]

매개 변수

매개 변수 세부
--힘 로컬 참조를 덮어 씁니다. 원격 저장소가 커밋을 잃을 수 있으므로주의해서 사용해야합니다 .
--말 수가 많은 자세한 실행.
<원격> 푸시 조작의 대상인 리모트 리포지터리 (repository)입니다.
<refspec> ... 어떤 원격 참조를 업데이트할지 지정하십시오.

비고

상류 하류

소스 제어와 관련하여 저장소에서 복사 (복제, 체크 아웃 등) 할 때 "다운 스트림"상태가 됩니다. 정보가 "다운 스트림"으로 전달되었습니다.

변경 사항을 적용 할 때 일반적으로 해당 항목을 "업스트림"으로 다시 보내서 동일한 저장소에서 가져온 모든 사람이 동일한 변경 사항을 처리 할 수 ​​있도록 해당 저장소에 저장합니다. 이것은 대부분 소스 제어의 기술적 요구 사항보다는 모든 사람이 업무를 조정할 수있는 사회적 문제입니다. 주 프로젝트에 변경 사항을 적용하여 다양한 개발 라인을 추적하지 않으려합니다.

때로는 "업스트림"에 변경 사항을 제출하는 것에 대해 말하는 패키지 또는 릴리스 관리자 (도구가 아닌 사람)에 대해 읽습니다. 이는 대개 원래 소스를 조정하여 시스템 용 패키지를 만들 수 있음을 의미합니다. 그들은 그러한 변경을 계속하고 싶지 않기 때문에 원래 소스에 "업스트림"으로 보내면 다음 릴리스에서 같은 문제를 다루지 않아도됩니다.

( 출처 )

푸시

git push

기존 업스트림에 코드를 푸시합니다. 푸시 설정에 따라 현재 브랜치 (Git 2.x의 기본값) 또는 모든 브랜치 (Git 1.x의 기본값)에서 코드를 푸시합니다.

원격 저장소 지정

자식으로 작업 할 때 여러 개의 원격 저장소가 있으면 편리 할 수 ​​있습니다. 푸시 할 원격 저장소를 지정하려면 명령에 이름을 추가하기 만하면됩니다.

git push origin

분기 지정

특정 분기로 푸시하려면 feature_x 라고 말하면됩니다.

git push origin feature_x

원격 추적 분기 설정

원래 작업하고있는 지사가 원격 저장소에서 온 것이 아니라면 단순히 git push 를 사용하면 처음에는 작동하지 않습니다. git이 현재 브랜치를 특정 원격 / 브랜치 조합으로 푸시하도록 명령하려면 다음 명령을 수행해야합니다

git push --set-upstream origin master

여기에서 master 는 원격 origin 의 분기 이름입니다. -u--set-upstream 의 줄임말로 사용할 수 있습니다.


새 저장소로 푸시하기

아직 만들지 않았거나 비어있는 저장소로 푸시하려면 다음을 수행하십시오.

  1. GitHub에서 저장소 만들기 (해당되는 경우)
  2. 지정된 URL을 https://github.com/USERNAME/REPO_NAME.git 형식으로 복사 https://github.com/USERNAME/REPO_NAME.git
  3. 로컬 저장소로 가서 git remote add origin URL 실행합니다.
    • 추가되었는지 확인하려면 git remote -v 실행합니다.
  4. git push origin master 실행합니다.

이제 코드가 GitHub에 있어야합니다.

자세한 내용 은 원격 저장소 추가 를 참조하십시오.


설명

푸시 코드는 git이 로컬 커밋과 원격 커밋의 차이를 분석하여 업스트림에 작성되도록 보냅니다. 푸시가 성공하면 로컬 저장소와 원격 저장소가 동기화되고 다른 사용자가 커밋을 볼 수 있습니다.

"업스트림"및 "다운 스트림"의 개념에 대한 자세한 내용은 비고를 참조하십시오.

강제 추진

때때로 원격 변경 사항과 호환되지 않는 로컬 변경 사항이있는 경우 (예 : 원격 브랜치를 빨리 감기거나 원격 브랜치가 로컬 브랜치의 직접 조상이 아닌 경우) 변경 사항을 푸시하는 유일한 방법은 강제 푸시입니다 .

git push -f

또는

git push --force

중요 노트

이렇게하면 모든 원격 변경 내용을 덮어 쓰며 원격 컴퓨터가 해당 지역과 일치하게됩니다.

주의 :이 명령을 사용하면 원격 저장소가 커밋잃을 수 있습니다. 더욱이,이 원격 저장소를 다른 사람들과 공유하는 경우, 강제 실행을하지 않는 것이 좋습니다. 왜냐하면 그 기록은 모든 덮어 쓴 커밋을 유지할 것이므로 원격 저장소와 동기화되지 않게됩니다.

엄지 손가락의 규칙으로 다음과 같은 경우에만 강제로 누르십시오.

  • 덮어 쓰려고하는 변경 사항을 가져온 것 외에는 아무도 없습니다.
  • 강제로 푸시 한 후 모든 사람이 새로운 사본을 복제하도록하고 모든 사람이 변경 사항을 적용하도록 할 수 있습니다 (사람들은 당신을 싫어할 수 있습니다).

특정 객체를 원격 브랜치에 푸시

일반 구문

git push <remotename> <object>:<remotebranchname>

git push origin master:wip-yourname

마스터 브랜치를 원래의 wip-yourname 브랜치 (대부분의 경우 복제 한 저장소)로 푸시합니다.


원격 지점 삭제

원격 브랜치를 삭제하는 것은 빈 객체를 푸시하는 것과 같습니다.

git push <remotename> :<remotebranchname>

git push origin :wip-yourname

wip-yourname 원격 브랜치 삭제

콜론을 사용하는 대신 --delete 플래그를 사용할 수도 있습니다.이 플래그는 경우에 따라 더 잘 읽을 수 있습니다.

git push origin --delete wip-yourname

단일 커밋 푸시

브랜치에 다른 커밋없이 리모컨으로 푸시하고 싶은 커밋이 하나있는 경우 다음을 사용할 수 있습니다

git push <remotename> <commit SHA>:<remotebranchname>

이 같은 git 히스토리를 가정하면

eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local

347d700 커밋을 원격 마스터 로 푸시하려면 다음 명령을 사용하십시오.

git push origin 347d700:master

기본 푸시 동작 변경

현재 는 현재 작업중인 분기와 이름을 공유하는 원격 저장소의 분기를 업데이트합니다.

git config push.default current

Simple 은 업스트림 브랜치로 푸시되지만 업스트림 브랜치가 다른 것으로 호출되면 작동하지 않습니다.

git config push.default simple

업스트림 은 그것이 무엇인지에 상관없이 업스트림 브랜치로 푸시합니다.

git config push.default upstream

일치 하면 로컬과 원격 git config에 일치하는 모든 브랜치가 푸시됩니다. push.default upstream

선호 스타일을 설정 한 후

git push 

원격 저장소를 업데이트합니다.

푸시 태그

git push --tags

원격 저장소에없는 모든 git tags 를 푸시합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow