IT

Git: 분기를 체크아웃할 수 없음 - 오류: pathspec '...'이(가) git에 알려진 파일과 일치하지 않습니다.

itgroup 2023. 4. 23. 10:17
반응형

Git: 분기를 체크아웃할 수 없음 - 오류: pathspec '...'이(가) git에 알려진 파일과 일치하지 않습니다.

아까 일했던 지점을 왜 체크 아웃할 수 없는지 모르겠어요.다음 명령을 참조하십시오(주의:co입니다.checkout

ramon@ramon-desktop:~/source/unstilted$ git branch -a
* develop
  feature/datts_right
  feature/user_controlled_menu
  feature/user_controlled_site_layouts
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/datts_right
  remotes/origin/master
ramon@ramon-desktop:~/source/unstilted$ git co feature/user_controlled_site_layouts 
error: pathspec 'feature/user_controlled_site_layouts' did not match any file(s) known to git.

무슨 뜻인지 잘 모르겠고 구글에서 내가 이해할 수 있는 것을 찾을 수 없을 것 같아.

그 지점을 어떻게 체크하고 어떻게 하면 망가뜨릴 수 있을까요?

갱신:

게시물을 찾았고,git show-ref을 사용하다

97e2cb33914e763ff92bbe38531d3fd02408da46 refs/heads/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/heads/feature/datts_right
11a90dae8897ceed318700b9af3019f4b4dceb1e refs/heads/feature/user_controlled_menu
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/heads/master
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/HEAD
e7c17eb40610505eea4e6687e4572191216ad4c6 refs/remotes/origin/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/remotes/origin/feature/datts_right
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/master
23768aa5425cbf29d10ff24274adad42d90d15cc refs/stash
e572cf91e95da03f04a5e51820f58a7306ce01de refs/tags/menu_shows_published_only
429ebaa895d9d41d835a34da72676caa75902e3d refs/tags/slow_dev

디렉토리의 갱신(user_controlled_site_layouts에 있습니다.refs/heads/feature folder

$ ls .git/refs/heads/feature/
datts_right  user_controlled_menu  user_controlled_site_layouts
$ cat .git/refs/heads/feature/user_controlled_site_layouts
3af84fcf1508c44013844dcd0998a14e61455034

★★★의 갱신git show 3af84fcf1508c44013844dcd0998a14e61455034

$ git show 3af84fcf1508c44013844dcd0998a14e61455034
commit 3af84fcf1508c44013844dcd0998a14e61455034
Author: Ramon Tayag <xxx@xxxxx.xxx>
Date:   Thu May 12 19:00:03 2011 +0800

    Removed site layouts migration

diff --git a/db/schema.rb b/db/schema.rb
index 1218fc8..2040b9f 100755
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended to check this file into your version control system.

-ActiveRecord::Schema.define(:version => 20110511012647) do
+ActiveRecord::Schema.define(:version => 20110503040056) do

   create_table "attachments", :force => true do |t|
     t.string   "name"
@@ -205,15 +205,6 @@ ActiveRecord::Schema.define(:version => 20110511012647) do
     t.integer  "old_id"
   end

-  create_table "site_layouts", :force => true do |t|
-    t.string   "name"
-    t.text     "description"
-    t.text     "content"
-    t.integer  "site_id"
-    t.datetime "created_at"
-    t.datetime "updated_at"
-  end
-
   create_table "site_styles", :force => true do |t|
     t.text     "published"
     t.datetime "created_at"

★★를 해 보세요.git fetch그러면 로컬 저장소가 Github에서 모든 새로운 정보를 얻을 수 있습니다.새로운 지점에 대한 정보만 얻을 뿐 실제 코드는 얻을 수 없습니다.후, ,,는git checkout정상적으로 동작합니다.

기본적으로 브랜치는 표시되지만 로컬 복사본은 아직 없습니다.

브랜치를 취득한 후 체크 아웃 하는 것만으로, 다음의 커맨드를 사용할 수 있습니다.

git fetch
git checkout <Branch name here>

차이점을 공유하고 fetch가 어떻게 동작하는지, pull이 어떻게 다른지 보기 위해 아래 이미지를 작성했습니다.

여기에 이미지 설명 입력

새 지점을 체크아웃할 때 다음 오류가 발생했습니다.

오류: pathspec 'BRANCH-NAME'이 git에 알려진 파일과 일치하지 않습니다.

git checkout origin/<BRANCH-NAME>분 , , , , , , , , , , , , 。

(원산지에서 추출/)

마지막으로 문제를 해결하기 위해 다음 작업을 수행했습니다.

git remote update
git fetch 
git checkout --track origin/<BRANCH-NAME>

이 에러는 리모트에 로컬트래킹 브랜치가 없는 브랜치에 대해서 발생했습니다.리모트 브랜치는 심플한 방법으로 체크 아웃 했습니다만,

git checkout feature/foo

과거에 나는 이 오류를 피하기 위해 해야 했다.

git checkout -t -b feature/foo origin/feature/foo

나도 내가 무슨 짓을 해서 그런 상황에 빠졌는지 모르겠어.

「」가 붙은 브랜치를 .git branch -D yourbranchname리포(repo)를 다시 풀/풀링하여 로컬브런치를 다시 작성해야 할 수 있습니다.

시험:

git checkout -b yourbranchname

저도 같은 질문이 있고 이 링크에서 정보를 얻었어요: git fetch가 모든 브랜치를 가져오는 것은 아닙니다.

이 상황이 어떻게 발생했는지 알 수 없지만 적어도 해결할 수 있습니다.

스텝 1. "remote.origin"을 확인합니다.fetch" 설정은 다음과 같습니다.

$git config --get remote.syslog.가지고 오다

+refs/heads/private_dev_dev_dev: refs/refs/refs/private_dev_dev_dev

스텝 2. "remote.origin"을 변경합니다.fetch"를 사용하여 모든 것을 가져옵니다.

$git config remote.syslog."+refs/heads/*:refs/remotes/context/*"를 가져옵니다.

$git config --get remote.syslog.가지고 오다

+refs/heads/*:refs/remotes/refs/*

그런 다음 모든 브랜치를 얻기 위해 "git pull"(아마 "git fetch origin"도 작동하지만 시도하지 않았습니다)을 시도할 수 있습니다.

저희 지점에서도 같은 문제가 있었습니다.

이 명령어들은 나에게 효과가 있다.

git fetch --all
git checkout <branch-name>

Git Windows를 하지 않을 경우 해야 합니다.--icase-pathspecs ★★★★★★★★★★★★★★★★★」GIT_ICASE_PATHSPECS = 1 env var 설정, git 패스스펙은 대소문자를 구분합니다.

git checkout origin/FooBranch "Some/Path/To/File.txt"

같지 않다

git checkout origin/FooBranch "some/path/to/file.Txt"

ㅇㅇㅇㅇㅇ로 요.git fetch origin <branchName>:<branchName>.

동일한 로컬 복사를 가져와 만듭니다.이것에 의해, 다음의 조작이 가능하게 됩니다.

git checkout <branchName>

지점 이름과 커밋되지 않은 파일이 없는 경우 다음을 수행하십시오.

git fetch && git checkout <branch name>

지점을 바꾸다가 그 문제에 직면했어요.

현재의 브랜치를 풀하고 새로운 브랜치를 체크하려고 했는데 동작했다.

git pull // on your old branch git checkout <new_branch>

합니다.git config - git config config - git config.git config config config config config config config config config config config config config config config config config 。.git\config

이전에는

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/develop:refs/remotes/origin/develop

수정했습니다.

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/*:refs/remotes/origin/*

헤드가 하나의 브랜치만을 가리키고 있기 때문에 다른 기존 브랜치에 대한 참조를 찾을 수 없었기 때문에 *로 변경했기 때문에 원래 브랜치는 모두 체크됩니다.

git pull

이것으로 간단하게 해결했습니다. :)

다음 방법으로 지점을 체크아웃하려고 할 때 이 오류가 발생했습니다.

git checkout branchX

아직 확인해보지 못했습니다.리모콘을 명시적으로 기술했을 때만 동작했습니다.

git checkout --track origin/branchX

그 이유는 2개의 리모트(원산지+)를 가지고 있었기 때문입니다.else)를 설정합니다.두 번째 리모컨이 필요 없어서 제거했더니 작동했어요.다음 방법으로 기본 리모컨을 설정할 수 있습니다.

checkout.defaultRemote=origin

나에게는 통하지 않았다

git clone --depth=1즉,--single-branch.

된 료료를 실행하다git clone고쳐줄 거야

다음 작업을 했을 때 이 정보를 얻었습니다.

  • IntelliJ IDE 사용, git에 연결
  • 새 파일을 만들어 git에 추가했습니다.
  • 새 파일 이름 변경.

디렉토리 체크인을 하려고 했을 때, 이 에러가 발생했습니다.

수정 방법:

나는 git 확장자로 리포(repo)를 열었다.나는 그 파일이 (옛 이름으로) 꾸며져 있는 것을 보았다.하지만 그것이 더 이상 존재하지 않았기 때문에, 그것은 약속될 수 없었다.

나는 이 파일의 스테이징을 해제했다.

그리고 파일(이번에는 올바른 이름)을 git에 다시 추가하여 오류 없이 커밋했습니다.

는 이 , 는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.git checkout fooerror: pathspec 'foo' did not match any file(s) known to git.

내가 잘못 알고 있었어.그래서 배운 교훈: 당황하기 전에 어떤 보고서를 보고 있는지 확인하라.

발신지를 했습니다.url.git/config,으로써 나의 "" " " " " " ".git/config되었습니다.[remote "origin"] 표시

fetch = +refs/heads/*:refs/remotes/origin/*

의 행 고정 " " "error: pathspec 'master' did not match any file(s) known to git.

먼저 부모 지점을 체크 아웃합니다.그런 다음 입력합니다.

git fetch --all --prune 
git checkout <your branch>

도움이 됐으면 좋겠다!

더 나은/심플한 방법:

git fetch origin yourLocalBranch:yourLocalBranch
git checkout yourLocalBranch

얕은 레포 클론을 작성했을 때 이 에러가 발생하여 솔루션을 입수했습니다.예를 들어 체크 아웃하는 브랜치는 릴리즈/120 입니다.

git ls-remote origin release/120 # make sure the remote branch exits
git fetch origin refs/heads/release/120:refs/remotes/origin/release/120 # fetch to local repo
git co -b release/120 origin/release/120 # checkout to workspace

처음 git을 가지고 놀았을 때도 같은 문제가 있었습니다.내 첫 번째 약속을 시도할 때...

git commit -m 'first commit!'

작전본부에서 언급한 오류가...

error: pathspec 'commit!'' did not match any file(s) known to git.

커밋 메시지에서 키워드를 사용하여 git을 혼동한 것 같아서 다른 단어를 몇 개 더 시도해보니 같은 오류가 발생하였습니다.

마지막으로 메시지에서 큰따옴표를 사용했는데...

git commit -m "first commit!"

이것은 성공적이었습니다...

[master (root commit) 0000000] first commit!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dummyDoc.txt

글쎄요, dev/{feature_branch}와 같은 브랜치는 거의 삭제되지 않았고, 새로운 브랜치 dev를 생성하여 체크아웃을 시도했을 때도 같은 문제가 발생하였습니다.다음 명령을 실행했습니다.

git fetch -p

날 위해 일했어

Windows OS 에서는, 디폴트로 git 는 다음과 같이 인스톨 됩니다.

core.ignorecase = true

즉, git repo 파일은 대소문자를 구분하지 않으므로 이를 변경하려면 다음과 같이 실행해야 합니다.

\yourLocalRepo> git config core.ignorecase false

이 설정은 .disc\config 파일에서 찾을 수 있습니다.

커밋중에 -m 플래그를 제공하지 않는 바보같은 실수를 했습니다(웃음).

git commit -m "commit message in here"

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★♪는 난 named named라는 이름의 줄 알았어요.foo다음과 같이 합니다.

git checkout foo

다음 정보를 얻을 수 있었습니다.

error: pathspec 'foo' did not match any file(s) known to git.

그런 다음 전체 지점 이름을 시도했습니다.

git checkout feature/foo

날 위해 일했어

제 경우 2개의 브랜치 1) 마스터(라이브 서버용) 2) dev(테스트 서버용)를 가지고 있습니다.각 서버에서 코드를 푸시하도록 여러 개의 리모콘을 설정했습니다. 때, 「지점 전환」이라고 했습니다.error: pathspec 'master' did not match any file(s) known to git.

보면 알 수 요.git remote -v다른 리모컨을 제거했지만origin 액세스 할 수 있습니다.git remote remove <remote-name>

★★★★★★★★★★★★★★★.git fetch

이제 지점 체크아웃을 할 수 있게 되었습니다.git checkout <branch-name>.

세 단계

  1. 'git fetch' 명령을 작성합니다.
  2. 원하는 브런치를 표시하고 관련 브런치로 전환합니다.
  3. 그런 다음 명령어 'pool origin your_pool_name'을 작성합니다.

Windows 로 발생하는 경우는, 파일명의 대소문자가 원인일 가능성이 있습니다.

오늘 이 오류가 발생했습니다.새로운 파일을 만들고 GIT에 추가한 후 파일 이름 중 한 글자를 하위에서 상위로 변경했는데, 그 후 아무것도 할 수 없었습니다. - commit, revert, delete from repo.

제가 찾은 유일한 해결책은 이 파일을 GIT에 추가했을 때 파일 이름을 다시 정확히 같은 케이스로 변경한 후 GIT에서 이 파일을 삭제하기 위해 GIT를 실행하고 다시 원하는 대로 파일 이름을 변경하는 것이었습니다.그 변경 후, 저는 리포에 전념하고 문제없이 추진할 수 있었습니다.

Android Studio에서 커밋되지 않은 파일의 이름을 바꾼 후 내게 일어났다.

Git은 더 이상 존재하지 않아도 이전 버전이 저장소에 있는 것처럼 보였다.

fetch, pull, checkout, add all and so on did not help in my case!

그래서 TortoiseGit의 Git GUI를 열어보니, 문제의 원인이 된 정확한 파일이 나와 있었습니다.

그 후 저장소에서 파일을 삭제했습니다.

git rm -r --cached /path/to/affected/file

그리고 문제는 사라졌다.

나는 다른 근본 원인이 있었다.

기본적으로 모든 브랜치 중 jira 발행 키와 일치하는 모든 브랜치를 검색하여 해당 브랜치에서 git branch checkout 명령을 실행하는 스크립트를 가지고 있습니다.

내 경우, 2개 이상의 브랜치가 같은 jira 키를 공유했기 때문에, 전술한 에러로 스크립트가 실패하는 문제가 있었습니다.

사용되지 않은 오래된 브랜치를 삭제하고 단일 브랜치에만 jira 키 참조가 있는지 확인함으로써 문제를 해결합니다.

누군가 사용하길 원할 때를 대비해서 여기 내 코드가 있다.

git remote update
git fetch --all --prune 
git branch -r --list *$1* | xargs git checkout --force

이것을 로 보존하다switchbranch.sh

그럼 터미널에서 사용하세요../switchbranch.sh PRJ-1234

대상 파일명의 오타가 아닌지 확인합니다.제가 타이핑해서 무대에 올리려고 했는데

git add includes/connection..php

근데 점 두 개를 쓰고 있는 건 몰랐는데...

git add includes/connection.php

그건 효과가 있다.

언급URL : https://stackoverflow.com/questions/5989592/git-cannot-checkout-branch-error-pathspec-did-not-match-any-files-kn

반응형