“ ไม่สามารถอัปเดตพา ธ และเปลี่ยนเป็นสาขาได้ในเวลาเดียวกัน”


186

บางครั้งฉันใช้checkout -bตัวเลือกในการสร้างสาขาใหม่ตรวจสอบในเวลาเดียวกันและตั้งค่าการติดตามในคำสั่งเดียว

ในสภาพแวดล้อมใหม่ฉันได้รับข้อผิดพลาดนี้:

$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?

ทำไม Git ถึงไม่ชอบ สิ่งนี้เคยทำงานกับ repo เดียวกัน


6
ข้อความแสดงข้อผิดพลาดกำลังบอกคุณว่าorigin/masterไม่ใช่ ID การส่งมอบคือไม่ใช่สาขาระยะไกลที่ถูกต้อง มันปรากฏขึ้นในการgit branch -rส่งออก?
torek

มันไม่ได้ ปรากฎว่าฉันไม่ได้ตรวจสอบกิ่งก้านสาขาที่ห่างไกลทั้งหมดในระหว่างการโคลน
marekful

คำตอบ:


199

' origin/master' ซึ่งไม่สามารถแก้ไขได้ตามความมุ่งมั่น

แปลก: คุณต้องตรวจสอบรีโมทของคุณ:

git remote -v

และทำให้แน่ใจว่าoriginถูกดึง:

git fetch origin

แล้ว:

git branch -avv

(เพื่อดูว่าคุณดึงข้อมูลorigin/masterสาขา)

สุดท้ายใช้git switchแทนความสับสนgit checkoutด้วย Git 2.23+ (สิงหาคม 2019)

git switch -c test --track origin/master

11
ฉันพิมพ์ผิดในคำสั่งของฉันซึ่งก่อให้เกิดข้อผิดพลาดนี้; ฉันสะกดคำไม่ถูกต้องจากระยะไกล!
qix

2
มันเป็นสาขาใหม่และที่เก็บในเครื่องของฉันก็ไม่รู้เหมือนกัน ฉันต้องทำpullแล้วคำสั่งนี้ก็ใช้ได้
coding_idiot

2
คำตอบนี้มีประโยชน์เพราะมันแสดงให้ฉันเห็นว่ามีบางสิ่งแปลก ๆ เกิดขึ้น: รีโมตถูกตั้งค่าอย่างถูกต้อง แต่รีโมตสาขาใหม่ไม่สามารถดึงข้อมูลได้ เมื่อฉันลอกแบบรีโมตในไดเรกทอรีใหม่ทั้งหมดมันใช้งานได้ .gitไดเรกทอรีของฉันอาจจะเสียหายอย่างใด?
Konrad Rudolph

git remote -v ส่งคืนข้อผิดพลาดนี้ร้ายแรง: ไม่ใช่ชื่อวัตถุที่ถูกต้อง: 'remote'
Karim Samir

@KarimSamir คุณสามารถถามคำถามแยกต่างหาก (กับระบบปฏิบัติการและรุ่น git ของคุณ) ตามที่git remote -vดำเนินการใน repo git ทำงานได้
VonC

79

FWIW: ถ้าคุณพิมพ์ผิดใน branchname คุณจะได้รับข้อผิดพลาดเดียวกันนี้


4
จริงๆแล้วมันจะดีถ้ามีคนสามารถใช้เวลาในการที่จะบอกนักพัฒนา Git เกี่ยวกับเรื่องนี้เกิดข้อผิดพลาดไม่ได้ข้อมูลมาก;)
Scorchio

8
ใช่นี่เป็นปัญหาของฉันฉันมีที่ว่างในชื่อสาขาของฉัน
Karim Samir

กันที่นี่ฉันพยายามgit checkout -b origin mybranchแทนgit checkout -b mybranch(พิเศษorigin)
Guillaume Renoult

ฉันคัดลอกวางชื่อสาขาของฉันและมีช่องว่างต่อท้ายหลังจากชื่อสาขาที่ทำให้เกิดข้อผิดพลาดนี้
learningKnight

ผมพยายามที่จะชำระเงินแทนorgin/my-branch origin/my-branchพลาดไปหนึ่งi& ฉันเกาหัวไปซักพักนึงเพื่อทำความเข้าใจว่าทำไมพันธมิตรเก่าถึงไม่ยอมเข้าร่วม Typo เป็นปัญหาจริงๆ
DDM

55

คุณจะได้รับข้อผิดพลาดนี้ในบริบทของ, git clone --depth=50 --branch=masterเช่นเทรวิสสร้างที่ตามค่าเริ่มต้นรหัสการตรวจสอบออกมาพร้อมกับ ที่ดีที่สุดของความรู้ของฉันคุณสามารถควบคุม--depthผ่านทางแต่ไม่.travis.yml --branchเนื่องจากผลลัพธ์นั้นมีเพียงสาขาเดียวเท่านั้นที่ถูกติดตามโดยรีโมตคุณจำเป็นต้องอัพเดตรีโมตอย่างอิสระเพื่อติดตามการอ้างอิงรีโมตที่ต้องการ

ก่อน:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

การแก้ไข:

$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch

หลังจาก:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master

5
แก้ไขเพื่อฉัน ฉันใช้ตื้น - ความลึก = 1 โคลนและนี่คือสิ่งที่ฉันต้องการเพื่อเปลี่ยนสาขา
Sawtaytoes

1
ใช่ใช่สิ่งที่ลึกซึ้งส่งผลให้เกิดข้อผิดพลาดนี้อย่างแน่นอน! ถ้าเป็นไปได้ฉันขอแนะนำให้แก้ไขประโยคสองสามประโยคแรกเพื่อเน้นความลึก
Dubslow

19

สิ่งง่าย ๆ นี้ใช้ได้สำหรับฉัน!

ถ้ามันบอกว่ามันไม่สามารถทำ 2 อย่างในเวลาเดียวกันให้แยกพวกมันออก

git branch branch_name origin/branch_name 

git checkout branch_name

ทำให้ง่ายต่อการค้นหาว่าปัญหาที่แท้จริงคืออะไร
Z. Khullah

9

คุณสามารถทำตามขั้นตอนเหล่านี้เมื่อคุณพบปัญหานี้:

  1. รันคำสั่งต่อไปนี้เพื่อแสดงรายการสาขาที่เป็นที่รู้จักสำหรับที่เก็บในเครื่องของคุณ

git ต้นกำเนิดแสดงระยะไกล

ซึ่งแสดงผลลัพธ์นี้:

 remote origin
  Fetch URL: <your_git_path>
  Push  URL: <your_git_path>
  HEAD branch: development
  Remote branches:
    development                             tracked
    Feature2                                tracked
    master                                  tracked
    refs/remotes/origin/Feature1         stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    Feature2     merges with remote Feature2
    development  merges with remote development
    master       merges with remote master
  Local refs configured for 'git push':
    Feature2     pushes to Feature2     (up to date)
    development  pushes to development (up to date)
    master       pushes to master      (local out of date)
  1. หลังจากตรวจสอบรายละเอียดเช่น (ดึงข้อมูล URL ฯลฯ ) ให้เรียกใช้คำสั่งนี้เพื่อดึงข้อมูลสาขาใหม่ (เช่นที่คุณอาจต้องการเช็คเอาต์ใน repo ท้องถิ่นของคุณ) ที่มีอยู่ในระยะไกล แต่ไม่ใช่ในท้องถิ่นของคุณ
» git remote update

Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
 * [new branch]      Feature3    -> Feature3

ในขณะที่คุณสามารถดูสาขาใหม่ถูกดึงจากระยะไกล
3. สุดท้ายชำระเงินสาขาด้วยคำสั่งนี้

» git checkout -b Feature3 origin/Feature3

Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'

ไม่จำเป็นต้องบอก Git ให้ติดตาม (โดยใช้--track ) สาขาด้วยรีโมต

คำสั่งดังกล่าวจะตั้งสาขาท้องถิ่นเพื่อติดตามสาขาระยะไกลจากแหล่งกำเนิด


4

หากคุณมีพื้นที่สีขาวในสาขาของคุณคุณจะได้รับข้อผิดพลาดนี้


1

สำหรับฉันฉันต้องการเพิ่มรีโมท:

git remote -add myRemoteName('origin' in your case) remoteGitURL

จากนั้นฉันสามารถดึง

git fetch myRemoteName

1

สาเหตุที่สาขาในพื้นที่ของคุณไม่ติดตามสาขาระยะไกล ดังที่ ssasi กล่าวว่าคุณต้องใช้คำสั่งเหล่านี้:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

ฉันแก้ไขปัญหาของฉันตอนนี้ ....


0

ก่อนอื่นคุณต้องFetchใช้รีโมต (สาขาเฉพาะ) จากนั้นคุณสามารถสร้างบท้องถิ่นและติดตามด้วยรีโมตสาขานั้นโดยใช้คำสั่งของคุณ (เช่นcheckoutด้วย -b และ - แทร็ก)


0

คุณควรไป dir submodule git statusและเรียกใช้

คุณอาจเห็นไฟล์จำนวนมากถูกลบ คุณสามารถเรียกใช้

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules // submoudles เป็นชื่อของคุณ

  5. git submoudle add ....


0

คุณสามารถใช้คำสั่งเหล่านี้: git remote update, git fetch, git checkout -b branch_nameA origin: branch_nameB

ฉันคิดว่าอาจเป็นเพราะสาขาในประเทศของคุณไม่สามารถติดตามสาขาระยะไกลได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.