자식 오류 : 일부 심판을 원격으로 푸시하지 못했습니다.


450

어떤 이유로 든, 나는 지금 밀 수는 없지만 어제 할 수는 있습니다. 어쩌면 구성이나 무언가를 엉망으로 만들었습니다.

이것이 일어나는 일입니다.

git push origin master를 사용할 때

gitbashscr

내 작업 디렉토리 및 원격 저장소는 다음과 같습니다.

.git, css, js 디렉토리가있는 Windows 파일 폴더의 스크린 샷  그리고이 파일들 : index.php, readme, setsu.php.  화살표가있는 "local"이라는 단어는 css 폴더를 가리 킵니다.  아래, 제목 "github", css-folder 및 index.php-file의 스크린 샷


7
로컬 리포지토리가 git repo와 동기화되지 않은 것 같습니다. git pull을 시도 했습니까?
R11G

1
예,하지만 git pull 후에 다음 구문을 알지 못합니다 .git pull <remote> <branch>라고 말하면 git pull의 구문 예제를 볼 수 있습니까?
leipzy

1
이 비슷한 질문을 확인 함 - stackoverflow.com/questions/18588974/...
R11G

3
@ R11G 감사합니다! 이 링크는 나에게 도움이 stackoverflow.com/a/18589043/3626672
leipzy

2
새 저장소에 오류가 있습니다. 이것은 도움이되었다 : stackoverflow.com/a/6518774/2067690
HumanInDisguise

답변:


620

GitHub 리포지토리가 새로운 커밋이 푸시 된 것을 보았을 때 로컬에서 작업하는 동안 다음을 사용하는 것이 좋습니다.

git pull --rebase
git push

전체 구문은 다음과 같습니다.

git pull --rebase origin master
git push origin master

Git 2.6 이상 (2015 년 9 월)을 사용한 후 (한 번)

git config --global pull.rebase true
git config --global rebase.autoStash true

간단한 git pull것만으로 충분합니다.
(참고 : Git 2.27 Q2 2020 에서는 merge.autostash리베이스없이 일반 풀에 사용할 수 있습니다)

그런 식으로, 당신은 (재생 것이다 --rebase새로 업데이트의 상단에 해당 지역의 커밋 부분) origin/master(나 origin/yourBranch: git pull origin yourBranch).

6 장 Git Pocket Book의 리베이스끌어 오기 장 에서 더 완전한 예를 참조하십시오 .

나는 추천 할 것이다 :

# add and commit first
git push -u origin master

그러면 로컬 마스터 지점과 업스트림 지점간에 추적 관계가 설정됩니다.
그 후, 해당 지점에 대한 향후 푸시는 간단하게 수행 할 수 있습니다.

git push

" 새 분기를 명시 적으로 푸시해야하는 이유는 무엇입니까? "를 참조하십시오.


OP가 이미 재설정되고 커밋다시 실행 한 이후 origin/master:

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin master

필요가 없습니다 pull --rebase.

참고 : git reset --mixed origin/master또한 기록 할 수 git reset origin/master때문에, --mixed옵션을 사용하여 기본 중 하나입니다 git reset.


제안 된 git pull --rebase ...를 실행해도됩니까? coz 이미 완료했습니다> git reset --mixed origin / master> git add. > 자식 -m 커밋> 자식 밀어 원산지 마스터가 여기 제안 "이것은 새가 커밋이다 나는 원래 amendmend 될 예정 것" stackoverflow.com/questions/18588974/... BTW 당신의 대답은 도움이 선생님을 찾습니다
leipzy

3
나를 위해 "git commit"을 실행해야했습니다. :(
Tyler

고마워, Git LFS의 어리석은 문제를 수정했으며, 결과적으로 haha로 명령 줄을 사용해야한다는 것을 스스로 포기했습니다.
Tyler C

2
정말 super .. 아래 명령이 나를 위해 일했습니다 ... git reset --mixed origin / master git add. git commit -m "이것은 내가 처음에 수정하려는 계획에 대한 새로운 커밋"git push origin master 감사합니다 @VonC
Hari Narayanan

1
고마워 작동합니다! 이 솔루션에 대한 몇 시간을 찾고있었습니다!
Redion Xhepa

96

누구든지 시도 했습니까?

git push -f origin master

문제를 해결해야합니다.

편집 : 아래의 @Mehdi의 의견을 바탕으로에 대해 명확히해야합니다 —force pushing. 위의 git 명령은 첫 번째 커밋에만 안전하게 작동합니다. 이전에 커밋, 풀 요청 또는 분기가 이미 있으면 모든 재설정하고 0에서 설정합니다. 그렇다면 더 나은 솔루션을 위해 @VonC의 자세한 답변을 참조하십시오.


25
효과가 있지만 나쁘다. 무엇을하고 있는지 알지 못한다면 사용하지 마십시오. (아마도 당신이 그렇게보고 있다면 당신이 무엇을하고 있는지 모를 것입니다)
Mehdi

3
시도하는 경우 -f/ 대신 --force항상 사용 --force-with-lease하는 것이 안전합니다 . 이로 인해 다운 스트림 변경 사항이 있으면 푸시로 인해 방해받을 수 있습니다. --force-with-lease일상 생활의 많은 상황에서 --force필요 하지만 거의 필요하지 않습니다.
Joshua Goldberg

63

방금 git init파일을 사용 git add .하거나 비슷한 것을 추가하고 원격 브랜치를 추가 한 git commit -m 'commit message'경우 원격으로 푸시하기 위해 로컬로 아무것도 커밋하지 않은 것일 수 있습니다 ... 발행물.


1
이것에 부딪쳤다. 커밋 명령이 git add 중에 작동하지 않았습니다. 좋은 전화. 감사합니다
jgritten

1
고마워요! 그게 다야. 나는 내 변화를 저질렀다고 생각했다. 이제 git push -u origin master가 정상적으로 작동합니다.
tleo

36

나는 같은 문제가 있었다. 초기 커밋조차도 커밋하지 않았으며 여전히 푸시하려고했기 때문에이 문제가 발생했습니다.

내가 git commit -m "your msg"한 다음 모든 것이 잘 작동했습니다.


8
그건 말이되지 않습니다. 원래 질문은 로컬 자식이 뒤에 있다는 것 입니다. "뒤에있다"고 결코 지역 커밋을 할 수는 없습니다!
GhostCat

오, 나는 또한 커밋하는 것을 잊었다. p
Shams Nahid

이것은 또한 빈 커밋으로 푸시 할 수 없을 수도 있습니다
mboy

3
방금이 문제가 있었고 커밋하는 것을 잊었습니다. 오류 메시지가 더 명확해야합니다
Ivan

1
정확한 오류 메시지가 표시되어이 솔루션으로 문제를 해결 한 이후로 적용됩니다.
Diego Fortes

19

브랜치의 이름을 바꾸고 다음을 누르십시오.

git branch -m new-name
git push -u new-name

이것은 나를 위해 일했습니다.


1
그것은 작동하지만, 우리가해야 할 이유를 설명하십시오
kanlukasz을

와우, 이것은 실제로 효과가 있었지만 왜 그렇습니까? 지역 지사 이름에 하이픈이 my-branch_wont_push있습니다. 이름을 (으 my_branch_wont_push)로 git push -u origin my_branch_wont_push바꾸면 나를 위해 일했습니다.
cdabel

13

github 도움말 에서이 문제에 대한 해결책을 찾았습니다.

다음에서 확인할 수 있습니다. 빨리 감기가 아닌 오류 처리

그것은 말한다 :

원격 지점에서 변경 한 내용을 가져 와서 로컬에서 변경 한 내용을 병합하여이 문제를 해결할 수 있습니다.

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin branch
# Merges updates made online with your local work

또는 git pull을 사용하여 두 명령을 한 번에 수행 할 수 있습니다.

$ git pull origin branch
# Grabs online updates and merges them with your local work

1
상황이 예상대로 작동 할 때마다 정상적인 프로세스입니다. git이 @rubyandcoffee가 요청한 것처럼 이미 최신 상태라고 생각하면 아무것도 도움이되지 않습니다.
Tim

10
  1. git init

  2. git remote add origin https://gitlab.com/crew-chief-systems/bot

  3. git remote -v (현재 저장소 확인 용)

  4. git add -A(모든 파일 추가)

  5. git commit -m 'Added my project'

  6. git pull --rebase origin master

  7. git push origin master


코드를 푸시하기 전에 저장소에서 가져와야합니다
James Siva

git pull --rebase origin master처럼 쓸 수 있습니다
James Siva

6

나는 아래 단계로 고정 된 동일한 문제에 직면했다.

  1. git init
  2. git add .
  3. git commit -m 'Add your commit message'
  4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

    (위의 URL https : //User_name@bitbucket.org/User_name/sample.git 은 비트 버킷 프로젝트 URL을 나타냅니다)

  5. git push -u origin master

힌트

다음을 사용하여 자식 허브 계정이 로컬 자식과 연결되어 있는지 확인하십시오.

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

4

gerrit을 사용하는 경우 커밋에서 부적절한 Change-id로 인해 발생할 수 있습니다. Change-Id를 삭제하고 어떻게되는지보십시오.


4

Github 저장소로 이동하기 전에 변경 사항을 커밋하십시오. 문제가 해결 될 수 있습니다.


4

푸시하기 전에 초기 변경 사항을 커밋하지 않으면 문제가 발생합니다


3

푸시하기 전에 변경 사항을 추가하고 커밋해야합니다. git push -f origin master


3
git push origin {your_local_branch}:{your_remote_branch}

로컬 지점과 원격 지점이 동일한 이름을 공유하는 경우 로컬 지점 이름을 생략 할 수 있습니다 git push {your_remote_branch}. 그렇지 않으면이 오류가 발생합니다.


3

나는 다음 단계를 따라 갔고 그것은 나를 위해 일했다.

 rm -rf .git
 git init
 git add .
 git commit -m"first message"
 git remote add origin "LINK"
 git push -u origin master

2

파일이 없을 때 발생할 수 있습니다. 텍스트 파일을 만든 후 다음 명령을 따르십시오

git add .
git commit -m "first commit"
git push --set-upstream origin master

2

나에게 문제는 커밋 전에 파일을 추가하지 않았다는 것입니다.

git add .

git commit -m "your msg"


2

가장 잘 사용 rm -rf .git/hooks하고 git push를 사용해보십시오.


흥미롭게도 원산지에 대한 확약이 명확하지 않은 경우에 도움이되었습니다 (리베이스 할 필요가 없음).
pevik

왜 모든 후크를 던져 버리겠습니까? 먼저 백업을 하시겠습니까?
MSpreij

2

GitHub에서 빈 저장소를 만들고 코드를 로컬로 가지고 있습니다. 아래 순서에 따라 동일한 문제에 직면했습니다.

git init
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git add .
git push -u origin master

문제가 발생했습니다 : 파일을 준비하기 전에 커밋을 시도했습니다.

따라서 파일을 준비한 다음 커밋해야합니다.

이것은 올바른 순서입니다.

git init
git add .
git commit -m 'Initial Commit'
git remote add origin https://github.com/kavinraju/Repo-Name.git
git push -u origin master

먼저 잘못된 순서를 실행하기 때문에 아래 명령을 실행하면됩니다.

git add .
git commit -m 'Initial Commit'
git push -u origin master

1

이것이 적용되는지 확실하지 않지만 나를위한 수정은 git init 후에 로컬로 무언가를 커밋하는 것이 었습니다. 그런 다음 --set-upstream ...을 사용하여 원격으로 푸시했습니다 ...


1

나를 위해 해결 된 새 지점 만들기 :

git checkout -b <nameOfNewBranch>

예상 한대로 이전 분기가 새 분기에 완전히 포함되었으므로 병합 할 필요가 없습니다.


1
나는이 문제가 정확히 있었고, feature22에 있었고 git push origin feature22-fix,하고 있었지만 feature22-fix로컬이나 원격을 종료하지 않았으므로 먼저 지점을 로컬로 체크 아웃 한 다음
Honey

1

기존 GitHub 리포지토리로 디렉토리를 초기화하려는 경우 변경 사항을 커밋해야합니다.

파일을 만들어보십시오 :

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

그러면 나중에 삭제할 수있는 initial이라는 파일이 배치됩니다.

이 답변이 도움이 되길 바랍니다! 행운을 빕니다!


1

약간의 힘을 주어야합니다

밀어 넣기 만하면됩니다.


1

제 경우 husky에는 푸시를 허용하지 않는 패키지 였습니다 .

> husky - pre-push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to push some refs to 'https://username@bitbucket.org/username/my-api.git'

억지로 밀어 넣으려면 git push origin master --no-verify

나는 npm run prepush오류를 디버그하기 위해 달렸다 .

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's loopback-utils@0.8.3 does not satisfy loopback-utils@^0.9.0

npm install그것을 커밋하고, 문제가 해결됩니다.


1

이것들을하다

git rm --cached *
git add .
git commit -m"upload"
git push --set-upstream origin master

행복한 코딩!


1

이 자식 명령을 사용해보십시오.

git push origin master –f
git push origin master --force

0

위의 답변 중 아무것도 작동하지 않고 ssh-add최근에 무언가를 엉망으로 만들었다면 . 시험

ssh-add -D

0

소스 트리 사용자

먼저 초기 커밋을 수행하거나 커밋되지 않은 변경 사항이 없는지 확인한 다음 소스 트리 측면에 "REMOTES"가 있으며 마우스 오른쪽 단추로 클릭 한 다음 '원점으로 푸시'를 클릭하십시오. 당신은 간다.


0

지점과 동일한 태그가 있고 지점을 원격으로 푸시하려고 시도했을 때이 문제가 발생합니다.


0

필자의 경우 문제는 (이상하게는) master라는 분기가 없다는 것입니다. Github에서 저장소를 가져 왔습니다.


0

나는 아직 체크 아웃하지 않은 기존 오타 'evelop'분기를 추진하고 있었고 대신 '봉투'라는 분기를 추진하고 싶었습니다. 따라서 현지 작업 복사본에 지점이 있어야합니다. 물론 오타가 발생하지 않도록 오류를 푸시하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.