로컬 변경 사항이 있더라도 git push에 "모든 것이 최신"으로 표시됩니다.
원격 Gitosis 서버와 로컬 Git 저장소가 있으며, 코드를 크게 변경할 때마다 해당 서버에도 변경 사항을 적용합니다.
저장소를에도 그나오늘로러변사있이고항로컬저시커실밋장행도라더하소를경컬날▁▁even시▁that▁find▁when▁but를 실행할 때 발견했습니다.git push origin master
', 'Everything update(모두 업데이트)'를 는 'Everything update(모두 업데이트)'라고 합니다.git clone
원격 서버의 파일을 체크아웃하려면 최신 변경 사항을 포함하지 않습니다.그리고 "master"라는 이름의 브랜치와 "origin"이라는 이름의 원격 서버만 가지고 있습니다.
할 때 입니다.ls-remote
그게 도움이 되는지는 잘 모르겠습니다.
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
혹시 당신은 분리된 머리로 일하고 있습니까?
다음과 같이:
최근 커밋이 지점장이 아님을 나타냅니다.
경고: 다음은 현재 수정된 파일을 저장하려면 먼저 를 사용해야 합니다.
$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>
man 페이지(mine 강조)에 언급된 바와 같이:
분기 끝에 없는 커밋을 체크아웃할 수 있으면 유용할 수 있습니다.
가장 확실한 예는 다음과 같이 태그가 지정된 공식 릴리스 지점에서 커밋을 확인하는 것입니다.
$ git checkout v2.6.18
이전 버전의 Git에서는 이를 허용하지 않았으며 다음을 사용하여 임시 분기를 생성하도록 요청했습니다.
-b
옵션, 그러나 버전 1.5.0부터는 위의 명령어가 현재 분기에서 사용자를 분리하고 태그로 명명된 커밋을 직접 가리킵니다.v2.6.18
위의 예에서).이 상태에서 모든 git 명령을 사용할 수 있습니다.
사용할 수 있습니다.git reset --hard $othercommit
예를 들어, 더 멀리 이동하는 것.
변경하고 분리된 HEAD 위에 새 커밋을 생성할 수 있습니다.
다을사용병만수있도습다니들합을여음하를 사용하여 을 만들 .git merge $othercommit
.HEAD가 분리되어 있는 동안 사용자가 있는 상태는 분기에 의해 기록되지 않습니다(자연스러운 일이지만 분기에 없습니다).
즉, 기존 분기로 다시 전환하여 임시 커밋 및 병합을 삭제할 수 있습니다(예:git checkout master
및에 ) 및 전버후이전버▁),후및이.git prune
또는git gc
쓰레기를 수거할 겁니다
실수로 이 작업을 수행한 경우, 예를 들어, reflog에 HEAD의 위치를 문의할 수 있습니다.$ git log -g -2 HEAD
하는 동안에git push
Jonathan Benn의 코멘트에서 언급한 바와 같이, "모든 것이 최신"이라고 말하지만, 분리된 HEAD는 여전히 기술적으로 푸시할 수 있습니다.
git push origin HEAD:main
소스가 분기가 아니며 업스트림 대상 분기가 없으므로 대상 분기를 지정해야 합니다.
라면, 어를 가지고 있습니까? 만약 당신이 약간 바보라면, 당신은 확실히 가지고 있는 것입니까?git commit
앞에git push
제가 처음으로 이런 실수를 저질렀습니다!
새로운 지역 지점을 추진하는 것이 아닐까요?
새 로컬 분기를 명시적으로 눌러야 합니다.
git push origin your-new-branch-name
기트에 관한 것들 중 하나는...레포를 복제하고, 지점을 만들고, 변경 사항을 커밋하고, 푸시하고,"모든 것이 최신 상태입니다."왜 그런 일이 일어나는지 이해하지만, 이 워크플로우는 새로 온 사람들에게 매우 비우호적입니다.
제 문제는 제 지역 지점이 원격 지점과 다른 이름을 가지고 있다는 것이었습니다.저는 다음을 수행함으로써 추진할 수 있었습니다.
$ git push origin local-branch-name:remote-branch-name
(https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/) 에 크레딧을 추가합니다.
$ git push origin local_branch:remote_branch
설명.
저도 같은 오류를 겪었고 그것을 알아내려고 몇 시간을 보냈습니다.드디어 찾았어요.입니다.git push origin branch-x
로컬에서 branch-x를 검색한 다음 원격 branch-x로 푸시합니다.
제 경우에는 원격 URL이 두 개 있었습니다.로컬로 y에서 x 리모트로 푸시하려고 할 때 branch-x에서 branch-y로 체크아웃을 했습니다. 두 번째 리모트의 x로 푸시하고 있었기 때문에 모든 것이 최신 상태라는 메시지가 정상입니다.
간단히 말해서 이런 종류의 트랩에 빠지지 않으려면 소스 참조와 대상 참조를 지정해야 합니다.
$ git push origin local_branch:remote_branch
업데이트:
분기를 누를 때마다 이 명령을 실행해야 하는 경우 다음을 사용하여 로컬 분기와 원격 분기 사이의 업스트림을 설정해야 할 수 있습니다.
$ git push --set-upstream origin local_branch:remote_branch
또는
$ git push -u origin local_branch:remote_branch
주의해야 할 또 다른 상황은 다음과 같습니다.git의 기본 상태는 "master" 분기에서 작업 중이라는 것입니다.그리고 많은 상황에서, 여러분은 주요 업무 부서로서 그 곳에 머무르게 될 것입니다(어떤 사람들은 멋을 부리고 다른 일을 하기도 하지만).
어쨌든, 그것은 단지 하나의 가지입니다.그래서 제가 직면하게 될 상황은 다음과 같습니다.
내 활성 브랜치는 사실 마스터 브랜치가 아닙니다.하지만 저는 습관적으로 다음과 같은 명령을 합니다.git push
저는 .)git push origin master
그래서 그것은 그것을 위한 지름길입니다).
그래서 저는 습관적으로 마스터 브랜치를 공유 레포에 밀어넣고 있습니다...그건 아마 좋은 깨끗한 것일 거예요, 제 경우엔...
하지만 제가 작업해온 변경 사항이 아직 마스터 브랜치에 있지 않다는 것을 잊었습니다.
마다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠgit push
그리고 "모든 것이 최신 상태"가 보여요, 저는 소리치고 싶지만, 물론, 그것은 git의 잘못이 아닙니다!내꺼야.
그래서 대신, 저는 제 브랜치를 마스터에 병합하고, 푸시를 하면, 모든 것이 다시 행복해집니다.
저는 같은 문제에 직면했습니다.스테이징 영역에 변경 사항을 추가하지 않았기 때문에.그리고 다음 명령을 사용하여 직접 코드를 원격으로 푸시하려고 했습니다.
git push origin master
그리고 그것은 메시지를 보여줍니다.Everything up-to-date
.
이 문제를 해결하려면 다음 단계를 수행하십시오.
git add .
git commit -m "Bug Fixed"
git push -u origin master
위의 VonC의 답변을 참조하십시오. 추가 단계가 필요했습니다.
$ git log -1
- note the SHA-1 of latest commit
$ git checkout master
- reset your branch head to your previously detached commit
$ git reset --hard <commit-id>
내가 이렇게 했지만, 그때 내가 하려고 했을 때.git push remoterepo master
"오류: 일부 참조를 푸시하지 못했습니다. 기록이 손실되는 것을 방지하기 위해 빨리 감기가 아닌 업데이트가 거부되었습니다. 다시 푸시하기 전에 원격 변경 사항(예: 'git pull')을 병합하십시오."
그래서 'git pull remote repo master'를 해봤는데 충돌이 있었습니다.가 ㅠㅠgit reset --hard <commit-id>
다시, 충돌한 파일을 백업 폴더에 복사했습니다.git pull remoterepo master
내 했고, 다시, 충한파내일프에다시복다니사습했트젝로을돌▁again,다▁did니▁copied습▁the사,▁back▁project.git commit
,그리고나서git push remoterepo master
그리고 이번에는 효과가 있었습니다.
Git은 '모든 것이 최신 상태입니다'라는 말을 중단했고 '빠른 전진'에 대한 불평도 중단했습니다.
나의 또 다른 매우 단순하지만 진부한 실수:메시지를 추가하는 것을 잊었습니다.-m
내 약속에 있는 수식어.그래서 이렇게 썼습니다.
git commit 'My message'
올바른 대신:
git commit -m 'My message'
참고: 오류가 발생하지 않습니다!하지만 당신은 당신의 커밋을 밀고 나갈 수 없을 것이고 항상 얻을 수 있을 것입니다.Everything up to date
대신에
당신의 git 상태로 보아, 당신은 아마 저와 다른 상황을 가지고 있을 것입니다.
하지만 어쨌든, 제게 일어난 일은 이렇습니다.다음 오류가 발생했습니다.
fatal: The remote end hung up unexpectedly
Everything up-to-date
여기서 더 유익한 메시지는 리모컨이 끊겼다는 것입니다.이는 http 게시 버퍼 크기를 초과하기 때문인 것으로 밝혀졌습니다.솔루션은 다음과 같이 증가하는 것입니다.
git config http.postBuffer 524288000
매우 드물지만 그래도 여전히: Windows에서 packed-refs에는 하나의 문자 대소문자(즉, dev/mybranch)가 있는 분기가 있는 반면 refs 폴더에는 core.ignorecase가 true로 설정된 다른 대소문자(즉, dev/mybranch)가 있을 수 있습니다.
해결책은 packed-refs에서 관련 행을 수동으로 삭제하는 것입니다.더 깨끗한 해결책을 찾지 못했습니다.
저는 비슷한 상황에 직면한 적이 있습니다; 제가 변화를 만들고 시도했을 때.git push origin master
모든 것이 최신 상태라고 말하고 있었습니다.
해야만 했어요git add
에 변된파그다음과일경다▁the음.git push origin master
그것은 그때부터 작동하기 시작했습니다.
제가 Github에 지점을 합병하고 현지에서 계속 발전했을 때 저는 직접 이것을 마주쳤습니다.제 해결책은 제안된 다른 해결책들과 조금 달랐습니다.
처음에 저는 (밀지 못했던) 오래된 지역 지점에서 새로운 지역 지점을 열었습니다.그런 다음 새 로컬 지점을 오리진 서버(Github)에 푸시했습니다.예.
$ git checkout -b newlocalbranch oldlocalbranch
$ git push origin newlocalbranch
이것은 비록 오래된 지역 지점이 아닌 새로운 지역 지점에서 Github에 나타나는 변화를 가져왔습니다.
저는 오늘 이 문제를 겪었고 다른 답변들과는 아무런 관련이 없었습니다.다음은 제가 수행한 작업과 수정 방법입니다.
최근에 저장소가 이전되었지만 로컬 복사본이 있었습니다.저는 지역 "마스터" 지점에서 분기하여 몇 가지 변경을 가했습니다. 그리고 나서 저장소가 이동한 것을 기억했습니다.저는 용한사를 요.git remote set-url origin https://<my_new_repository_url>
새 URL을 설정하지만 누르면 새 분기를 마스터로 밀어넣는 대신 "모든 것을 최신 상태로"라고만 표시됩니다.
저는 결국 그것을 기반으로 하여 해결했습니다.origin/master
그런 다음 다음 다음과 같이 명시적인 분기 이름으로 푸시합니다.
$ git rebase <my_branch> origin/master
$ git push origin <my_branch>
이것이 저와 같은 문제를 가진 사람에게 도움이 되기를 바랍니다!
저의 경우 원격 저장소가 2개 있었습니다.
git remote -v
originhttps https://asim_kt@...
originhttps https://asim_kt@...
origin ssh:git@bitbucket.org:...
origin ssh:git@bitbucket.org:...
두 레포 모두 동일합니다.단 하나는https
다른 것은 른것은다은것였습니다.ssh
않는 것을 (내에는 그래원않제나것는하거것경우을, (의서하지))ssh
사한이래를 https
ssh
작동하지 않았습니다!) 문제를 해결해 주었습니다.
제가 피처 브랜치를 하고 동료가 직접 피처 브랜치를 만드는 상황이 있었습니다.도망친git fetch -a
그리고 나서.git push origin <coworkers_branch>
이것은 모든 것이 최신 상태라는 것을 계속 말해주었습니다.
저는 <coworkers_branch>에서 체크아웃한 다음 기능 분기에서 풀링한 다음 <coworkers_branch>로 커밋하고 푸시하여 수정했습니다.
저는 솔직히 이것이 누군가에게 도움이 되기를 바랍니다. 왜냐하면 저는 이것에 제가 가져야 할 시간보다 훨씬 더 많은 시간을 보냈기 때문입니다.
git branch -M <desired branch>
이것은 저에게 효과가 있었습니다.
원격 URL을 잘못 입력하지 않았는지 확인합니다.
로컬 Jenkins 빌드 구성에서 Git를 CVS로 사용하도록 설정한 후 이 문제가 발생했다는 점도 언급하고 싶습니다.젠킨스는 제가 준 지점의 가장 최근 커밋을 확인한 것 같습니다. 또한 제가 레포에게 준 경로에 따라 리모컨을 재설정했습니다.기능 분기를 다시 확인하고 'git remote set-url'로 원본 원격 URL을 수정해야 했습니다.빌드 도구를 작업 디렉터리로 가리키면 안 됩니다. 그렇지 않으면 좋지 않은 시간을 보내게 됩니다.원격이 작업 디렉터리의 파일 경로로 설정되어 있으므로 원본과 대상이 동일한 변경 사항을 푸시하려고 하면 모든 최신 정보가 자연스럽게 보고됩니다.
.gitignore 파일에서 제외된 디렉터리의 이름을 지정했을 수도 있습니다.그래서 새로운 커밋은 추진되지 않을 것입니다."검색"을 무시하기 위해 디렉터리 이름을 지정했지만, 그것도 원본 트리의 디렉터리였습니다.
제가 찾은 빠른 방법이 있습니다.폴더로 하여 .git 파일을 .HEAD
파일을 작성하고 마스터로 되돌아온 분기를 변경합니다.예: 참조:refs/heads/master
제 실수는 지금까지 언급된 모든 것과 달랐습니다.만약 여러분이 왜 머리가 분리되어 있는지 전혀 모른다면, 여러분은 아마 그렇지 않을 것입니다.저는 자동 조종 장치를 만들고 있었습니다git commit
그리고.git push
그리고 출력을 읽지 않았습니다.git commit
알고 보니, 제가 -am을 잊어버려서 오류 메시지였습니다.
[colin] ~/github/rentap.js [master] M % git commit 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
error: pathspec 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers' did not match any file(s) known to git.
[colin] ~/github/rentap.js [master] M % git push
Enter passphrase for key '/home/colin/.ssh/id_ecdsa':
Everything up-to-date
퍼팅으로 고쳤습니다.-am
내가 주로 하는 곳:
[colin] ~/github/rentap.js [master] M % git commit -am 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
저도 같은 문제가 있었습니다.제 경우에는 동일한 리모컨의 이름을 지정해야 하기 때문에 발생했습니다.표준 '오리진'을 만들었지만, 저는 오랫동안 '기트허브'를 리모컨으로 사용해왔기 때문에 그것도 거기에 있었습니다.제가 '오리진' 리모컨을 제거하자마자 오류가 사라졌습니다.
여기서, 제 해결책은 위와 다릅니다.저는 이 문제가 어떻게 발생하는지 알아내지 못했지만, 제가 그것을 고쳤습니다. 조금 의외였습니다.
이제 다음과 같습니다.
$ git push origin use_local_cache_v1
Everything up-to-date
$ git status
On branch test
Your branch is ahead of 'origin/use_local_cache_v1' by 4 commits.
(use "git push" to publish your local commits)
......
$ git push
fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use
git push origin HEAD:use_local_cache_v1
To push to the branch of the same name on the remote, use
git push origin test
$ git push origin HEAD:use_local_cache_v1
Total 0 (delta 0), reused 0 (delta 0)
remote:
나를 위해 작동하는 명령은.
$git push origin HEAD:use_local_cache
◦당신들이 가능한 한 빨리 이 문제에서 벗어나기를 바랍니다)
여러 개의 리모컨이 있었습니다.하나를 제외한 나머지는 모두 올바르게 밀었기 때문에 저는 헤드가 분리되거나 문제가 발생하지 않았다는 것을 알았습니다.
그 대신 실수로 같은 URL을 두 개의 리모트에 입력했습니다.이미 푸시된 URL로 푸시하고 있었기 때문에 중복된 URL을 가진 리모트가 실패했습니다!
용사를 합니다.git remote -v
원격 목록과 해당 URL을 보여주었고, 문제를 발견했습니다.
장애가 발생한 원격을 올바른 URL로 재설정하여 문제를 해결했습니다.
git remote set-url <remote-name> <correct-url>
밀어넣는 디렉터리에 영향을 미치지 않는 커밋이 있을 수도 있습니다.그래서 제 경우에는 다음과 같은 구조를 가지고 있었습니다.
- .git
- README.md
- client/
- package.json
- example.js
- api/
- requirements.txt
- example.py
그리고 나는 마스터 수정을 하기로 약속했습니다.README.md
그리고 나서 달려갔습니다.git subtree push --prefix client heroku-client master
그리고 메시지를 받았습니다.Everything up-to-date
파일을 추가하고 아래 명령을 실행하여 이미 변경/추가된 파일을 커밋해야 합니다.
git add . 또는 git add file 이름 # 프로젝트에 기존 파일을 추가합니다.
git commit -m "first commit" #프로젝트의 모든 파일 커밋
git 푸시 오리진 마스터
저는 주피터-노트북으로 작업하던 중 이 기만적인 오류를 만났습니다.
저는 분리된 헤드가 없거나 로컬 및 원격 저장소의 이름이 다르기 때문에 위에서 제공한 솔루션을 통해 해결할 수 없었습니다.
하지만 실제로는 파일 크기가 1MB보다 약간 크고 최대 크기는 거의 2MB였습니다.
iPython 노트북의 파일 크기를 줄이려면 어떻게 해야 합니까?기술.
출력을 삭제하여 파일 크기를 줄이는 데 도움이 되었습니다.코드를 푸시할 수 있었고, 이후 파일 크기가 KB로 변경되었습니다.
저의 경우, 문제의 원인은 제가 수술을 하고 있었기 때문입니다.git push/pull
gitbash의 합니다.나는 다른 깃 프로젝트를 가리키는 깃 프로젝트 내부의 심볼 링크 폴더에 있었고, 그리고.git pull/push
가 이응답니다습했명에 했습니다.Everything up-to-date
(경로로 않고)했을 때, (cd) (cd) 심볼가링닌아경때이실을동했로로폴의제더크릭,때▁when'을)git push/pull
명령이 작동했습니다.
잠재적으로 드물지만 언급할 가치가 있는 또 다른 경우 - 로컬 환경에서 사전 커밋 후크(예: Python 안전, flake8, black, isort, bandit 등의 오류 검색 코드)가 구성되어 있는 경우, 이러한 후크 중 하나가 실패하면 커밋도 실패합니다.이는 콘솔에서 분명해야 하지만 후크에서 발생하는 오류로 인해 콘솔이 범람할 수 있으므로 사전 커밋 후크가 문제를 무시하도록 구성되거나 문제가 해결될 때까지 커밋이 작동하지 않는다는 사실을 모를 수 있습니다.
어리석은 오류/리마인더 - 내 PC를 포맷하고, vscode를 다시 설치하고, 자동 저장 활성화를 사용하는 것을 잊었습니다 :).
바라건대, 여러분이 더 빨리 깨닫고 디버깅 시간 10분을 절약할 수 있기를 바랍니다!
언급URL : https://stackoverflow.com/questions/999907/git-push-says-everything-up-to-date-even-though-i-have-local-changes
'programing' 카테고리의 다른 글
npm으로 클린 설치(node_modules 삭제 및 설치)를 수행하려면 어떻게 해야 합니까? (0) | 2023.06.06 |
---|---|
SQL, Postgres OIDs, 그것들은 무엇이고 왜 유용합니까? (0) | 2023.06.01 |
메인 스레드에서 작업을 수행하기 위한 GCD (0) | 2023.06.01 |
서버가 호스트 "localhost"(::1)에서 실행되고 포트 5432에서 TCP/IP 연결을 허용합니까? (0) | 2023.06.01 |
jQuery를 사용하여 다단계 양식 재설정 (0) | 2023.06.01 |