ฉันจะหาที่ตั้งต้นกำเนิด / หลักในคอมไพล์ได้อย่างไรและฉันจะเปลี่ยนได้อย่างไร


227

ฉันเป็นมือใหม่ Git ฉันเพิ่งย้ายโครงการ Rails จากการโค่นล้มไป Git ฉันติดตามการสอนที่นี่: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

ฉันใช้ unfuddle.com เพื่อจัดเก็บรหัสของฉันด้วย ฉันทำการเปลี่ยนแปลงบนแล็ปท็อป Mac ของฉันบนรถไฟไป / กลับจากที่ทำงานและจากนั้นผลักพวกเขาให้เปิดออกเมื่อฉันมีการเชื่อมต่อเครือข่ายโดยใช้คำสั่งต่อไปนี้:

git push unfuddle master

ฉันใช้ Capistrano สำหรับการปรับใช้และดึงรหัสจากที่เก็บ unuddle โดยใช้สาขาหลัก

เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นข้อความต่อไปนี้เมื่อฉันเรียกใช้ "สถานะ git" บนแล็ปท็อปของฉัน:

# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)

และฉันสับสนว่าทำไม ฉันคิดว่าแล็ปท็อปของฉันเป็นจุดกำเนิด ... แต่ไม่รู้ว่าจริง ๆ แล้วที่ฉันดึงมาจากการโค่นล้มหรือผลักไปที่ Unfuddle เป็นสิ่งที่ทำให้ข้อความปรากฏขึ้น ฉันสามารถ:

  1. ค้นหาที่ Git คิดว่า 'ต้นกำเนิด / หลัก' อยู่ที่ไหน?
  2. หากเป็นที่อื่นฉันจะเปลี่ยนแล็ปท็อปของฉันเป็น 'ที่มา / มาสเตอร์' ได้อย่างไร
  3. รับข้อความนี้ให้หายไป มันทำให้ฉันคิดว่า Git ไม่พอใจอะไรบางอย่าง

Mac ของฉันใช้ Git เวอร์ชัน 1.6.0.1


เมื่อฉันรันgit remote show originตามที่ dbr แนะนำฉันจะได้รับสิ่งต่อไปนี้:

~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

เมื่อฉันวิ่งgit remote -vตามที่ Aristotle Pagaltzis แนะนำฉันได้รับสิ่งต่อไปนี้:

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin  /Users/brian/Projects/GeekFor/gf/.git
unfuddle    git@spilth.unfuddle.com:spilth/geekfor.git

ตอนนี้น่าสนใจฉันกำลังทำงานในโครงการของฉันในgeekforไดเรกทอรี แต่มันบอกว่าที่มาของฉันคือเครื่องท้องถิ่นของฉันในgfไดเรกทอรี ฉันเชื่อว่าgfเป็นไดเรกทอรีชั่วคราวที่ฉันใช้เมื่อแปลงโครงการของฉันจากการโค่นล้มเป็น Git และอาจเป็นที่ที่ฉันผลักออกมา จากนั้นฉันเชื่อว่าฉันตรวจสอบสำเนาใหม่จากการแยกไปยังgeekforไดเรกทอรี

ดังนั้นดูเหมือนว่าฉันควรทำตามคำแนะนำของ dbr และทำ:

git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git

คำตอบ:


202

1. ค้นหาที่ Git คิดว่าใช้ 'ที่มา / หลัก' อยู่ที่ไหน git-remote

git remote show origin

.. ซึ่งจะส่งคืนบางสิ่งเช่น ..

* remote origin
  URL: me@remote.example.com:~/something.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branch
    master

รีโมตนั้นลิงก์ไปยังที่เก็บรีโมต เมื่อคุณทำ ..

git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle

..git จะส่งการเปลี่ยนแปลงไปยังที่อยู่ที่คุณเพิ่มไว้ มันเหมือนบุ๊คมาร์คสำหรับที่เก็บระยะไกล

เมื่อคุณรันgit statusจะตรวจสอบว่ารีโมตหายไปหรือไม่ (เปรียบเทียบกับที่เก็บโลคัลของคุณ) และหากเป็นเช่นนั้น หากคุณผลักดันการเปลี่ยนแปลงทั้งหมดของคุณไปที่ "จุดเริ่มต้น" ทั้งคู่จะซิงค์กันดังนั้นคุณจะไม่ได้รับข้อความนั้นอีก

2. หากเป็นที่อื่นฉันจะเปลี่ยนแล็ปท็อปของฉันเป็น 'ที่มา / มาสเตอร์' ได้อย่างไร

ไม่มีประโยชน์ในการทำเช่นนี้ พูดว่า "Origin" ถูกเปลี่ยนชื่อเป็น "แล็ปท็อป" - คุณไม่ต้องการทำgit push laptopจากแล็ปท็อปของคุณ

ถ้าคุณต้องการที่จะลบต้นกำเนิดระยะไกลคุณทำ ..

git remote rm origin

สิ่งนี้จะไม่ลบอะไรเลย (ในแง่ของเนื้อหาไฟล์ / ประวัติการแก้ไข) สิ่งนี้จะหยุดข้อความ "สาขาของคุณอยู่ข้างหน้า .. " เนื่องจากจะไม่เปรียบเทียบที่เก็บข้อมูลของคุณกับรีโมตอีกต่อไป (เพราะมันหายไป!)

สิ่งหนึ่งที่ต้องจำคือว่าไม่มีอะไรพิเศษเกี่ยวกับoriginมันเป็นเพียงชื่อเริ่มต้นใช้คอมไพล์

Git ไม่ใช้งานoriginโดยค่าเริ่มต้นเมื่อคุณทำสิ่งที่ต้องการหรือgit push git pullดังนั้นหากคุณมีรีโมทที่คุณใช้บ่อยๆ (ให้ปลดออกในกรณีของคุณ) ฉันขอแนะนำให้เพิ่มการแยกเป็น "ต้นทาง":

git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

หรือทำข้างต้นในคำสั่งเดียวโดยใช้ set-url:

git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

จากนั้นคุณสามารถทำgit pushหรือgit pullอัปเดตแทนgit push unfuddle master


1
เขาเขียนว่าเขาดันไปที่originพื้นที่เก็บข้อมูล (แม้ว่าเขาจะไม่ทราบว่ามันทำงานอย่างไรในแง่คอมไพล์) การลบรีโมตออกไปแทบจะไม่เป็นสิ่งที่มีประโยชน์สำหรับเขาเลย
อริสโตเติล Pagaltzis

10
ฉันไม่เข้าใจว่าทำไมผู้คนถึงพูดปดคำถาม มันเปลี่ยนความหมายของคำถามทำให้คำตอบที่มีอยู่ไม่มีความหมายและไม่ให้คนอื่นรู้ว่าผู้ถามคำถามต้องการข้อมูลเพิ่มเติมจากข้อเท็จจริงที่ว่าคำถามของพวกเขาอาจ 'ผิด' เล็กน้อย
stu

9
การลบต้นกำเนิดระยะไกลเป็นสิ่งที่ฉันต้องการอย่างแน่นอนเพราะมันชี้ไปยังที่เก็บในเครื่องที่ไม่มีอยู่อีกต่อไปไม่ใช่ที่เก็บที่แยกออกจากกัน
Brian Kelly

3
stu: Rewording เป็นสิ่งที่ดี! หากพวกเขาไม่ได้พูดอย่างชัดเจนในตอนแรกไม่มีคำตอบที่จะไม่แก้ปัญหาที่เกิดขึ้นจริง
dbr

4
แต่มันง่ายกว่ามากที่จะโกรธและขมขื่น :-) แต่ฉันเห็นประเด็นของคุณ
stu

286

ฉันมาถึงคำถามนี้เพื่อค้นหาคำอธิบายเกี่ยวกับสิ่งที่ข้อความ "สาขาของคุณอยู่ข้างหน้าโดย ... " หมายถึงในรูปแบบทั่วไปของคอมไพล์ ที่นี่ไม่มีคำตอบ แต่เนื่องจากคำถามนี้ปรากฏขึ้นที่ด้านบนของ Google เมื่อคุณค้นหาวลี "สาขาของคุณอยู่ข้างหน้า 'ต้นกำเนิด / หลัก'" และฉันก็เข้าใจว่าข้อความนั้นหมายถึงอะไรจริง ๆ ฉันคิดว่าฉันโพสต์ข้อมูลที่นี่

ดังนั้นในฐานะมือใหม่ฉันสามารถเห็นว่าคำตอบที่ฉันต้องการคือคำตอบสำหรับมือใหม่อย่างชัดเจน โดยเฉพาะสิ่งที่วลี "สาขาของคุณอยู่ข้างหน้า ... " หมายถึงว่ามีไฟล์ที่คุณเพิ่มและมุ่งมั่นในพื้นที่เก็บข้อมูลในท้องถิ่นของคุณ แต่ไม่เคยผลักไปที่แหล่งกำเนิด เจตนาของข้อความนี้ยิ่งทำให้สับสนโดยข้อเท็จจริงที่ว่า "git diff" อย่างน้อยสำหรับฉันก็ไม่พบความแตกต่าง มันไม่ได้จนกว่าฉันจะวิ่ง "git diff origin / master" ที่ฉันบอกว่ามีความแตกต่างระหว่างที่เก็บในเครื่องของฉันและต้นแบบระยะไกล

ดังนั้นเพื่อความชัดเจน:


"สาขาของคุณอยู่ข้างหน้าโดย ... " => คุณต้องกดไปที่ต้นแบบระยะไกล เรียกใช้"git diff origin / master"เพื่อดูความแตกต่างระหว่างที่เก็บในเครื่องของคุณกับที่เก็บต้นแบบระยะไกล


หวังว่านี่จะช่วยมือใหม่คนอื่น ๆ

(นอกจากนี้ฉันรู้ว่ามีรายละเอียดปลีกย่อยการกำหนดค่าที่อาจทำให้โมฆะการแก้ปัญหานี้บางส่วนเช่นความจริงที่ว่าต้นแบบอาจไม่เป็น "ระยะไกล" และ "กำเนิด" นั้นเป็นชื่อที่กำหนดค่าใหม่ได้ที่ใช้โดยการประชุมเป็นต้น ไม่สนใจสิ่งนั้นเราต้องการคำตอบที่ง่ายและตรงไปตรงมาเราสามารถอ่านเกี่ยวกับรายละเอียดปลีกย่อยในภายหลังเมื่อเราแก้ไขปัญหาเร่งด่วนแล้ว)

ท่านเอิร์ล


2
@Earl คงไม่git diff --cached origin/masterดีกว่าการสอนที่นี่เพราะมันระบุว่าอะไรจะเป็นผลของการผลักดันครั้งต่อไป คำสั่งที่ไฮไลต์ที่คุณต้องดังกล่าวยังแสดงไฟล์ปราศจากข้อผูกมัดและ unstaged (ผมคิดว่าผมเป็นมือใหม่คอมไพล์เกินไป)
nhed

48
นอกจากนี้ยังเป็นไปได้ว่าคุณต้องทำงานถ้าคุณได้รับข้อผิดพลาดนี้หลังจากที่git fetch git pull remote branchการอ้างอิงของคุณอาจล้าสมัย git fetchแก้ไขที่
bryan kennedy

ไม่origin/masterเป็นส่วนหนึ่งหมายถึงmasterสาขาในoriginrepo?
Rakib

1
โปรดทราบว่าคำอธิบายนี้ไม่สมบูรณ์ ขณะนี้ฉันกำลังประสบอยู่ # On branch master # Your branch is ahead of 'origin/master' by 3 commits. แต่ git diff origin / master ไม่แสดงสิ่งใด (และ - ตัวเลือกแคชจะไม่เปลี่ยนแปลงสิ่งนี้) และการดึงข้อมูลคอมไพล์ไม่เปลี่ยนแปลงสิ่งนี้การดึง git ไม่เปลี่ยนสิ่งนี้การรีเซ็ต git - ฮาร์ดไม่เปลี่ยนแปลงสิ่งนี้ ในการเปลี่ยนแปลงสิ่งนี้ฉันต้องการ: git reset - แหล่งกำเนิด / ต้นแบบที่ยากลำบากและฉันเลือกเส้นทางนั้นเพราะคนอื่นกำลังทำงานกับฉันในที่เก็บนี้และฉันไม่ต้องการทำให้การทดสอบของพวกเขาเป็นโมฆะและเพราะฉันไม่สามารถหาสิ่งที่ เป็น
RDM

1
ฉันยังได้รับข้อความนี้เมื่อฉันต้องการดึงออกจากแทนที่จะผลักไปที่จุดเริ่มต้น / หลัก เช่นจากสาขาอื่นถ้าฉันgit checkout masterได้รับข้อความซึ่งหมายความว่าฉันควรgit pull origin masterทำงานก่อน แต่ฉันพบว่ามันสับสนมากเพราะถ้อยคำของข้อความบ่งบอกถึงสิ่งตรงกันข้าม
Anentropic

38

ผมมีปัญหาที่เป็นที่คล้ายกันนี้ที่ไดเรกทอรีการทำงานของฉันเป็นahead of origin by X commitsแต่ได้รับผลในการgit pull Everything up-to-dateฉันจัดการเพื่อแก้ไขได้โดยทำตามคำแนะนำนี้ ฉันโพสต์สิ่งนี้ที่นี่ในกรณีที่ช่วยคนอื่นด้วยปัญหาที่คล้ายกัน

การแก้ไขพื้นฐานมีดังนี้:

$ git push {remote} {localbranch}:{remotebranch}

ตำแหน่งที่ควรแทนที่คำในวงเล็บด้วยชื่อระยะไกลชื่อสาขาท้องถิ่นของคุณและชื่อสาขาระยะไกลของคุณ เช่น

$ git push origin master:master

1
ขอบคุณที่ทำเพื่อฉัน git diffไม่แสดงอะไรเลยและหลังจากทำสิ่งที่คุณอธิบายแล้วฉันไม่ได้รับข้อความที่สับสนและน่ารำคาญอีกต่อไป
LaundroMat

1
ต้องการ upvotes เพิ่มเติม :) คำตอบที่ได้รับการโหวตสูงกว่าทุกคน "ไม่มีผล" สำหรับผม (คือ "คอมไพล์ดึงข้อมูล" - ไม่อะไร ... ตรวจสอบ "คอมไพล์กำเนิดแสดงระยะไกล" - ไม่มีอะไรที่ไม่ถูกต้องไม่มีอะไรที่จำเป็นในการเปลี่ยนแปลง)
อดัม

24

บางครั้งมีความแตกต่างระหว่างเวอร์ชันต้นแบบแคชท้องถิ่นของต้นแบบต้นกำเนิด (ต้นฉบับ / ต้นแบบ) และต้นแบบต้นกำเนิดจริง

หากคุณเรียกใช้git remote updateสิ่งนี้จะทำการซิงต้นแบบต้นแบบด้วย Origin / Master

ดูคำตอบที่ยอมรับสำหรับคำถามนี้

ความแตกต่างระหว่างต้นแบบต้นกำเนิดดึง Git และต้นกำเนิดดึง Git / ต้นแบบ


10

ฉันคิดว่าแล็ปท็อปของฉันคือจุดเริ่มต้น ...

นั่นเป็นเรื่องไร้สาระ: originหมายถึงพื้นที่เก็บข้อมูลระยะไกลเริ่มต้น - ที่คุณมักจะดึง / ดึงการเปลี่ยนแปลงของผู้อื่น

ฉันสามารถ:

  1. git remote -vจะแสดงให้คุณเห็นสิ่งที่originเป็น; origin/masterคือ“บุ๊คมาร์ค” ของคุณเป็นที่รู้จักกันเป็นรัฐสุดท้ายของmasterสาขาของoriginพื้นที่เก็บข้อมูลของคุณเองและmasterเป็นสาขาการติดตามorigin/masterสำหรับ นี่คือทั้งหมดที่ควรจะเป็น

  2. คุณทำไม่ได้ อย่างน้อยก็ไม่มีเหตุผลที่ที่เก็บจะเป็นที่เก็บระยะไกลที่เป็นค่าเริ่มต้นสำหรับตัวเอง

  3. มันไม่ใช่ เป็นเพียงการบอกคุณว่าคุณได้ทำสิ่งที่มุ่งมั่นมากมายที่ไม่ได้อยู่ในพื้นที่เก็บข้อมูลระยะไกล (ตามสถานะล่าสุดของพื้นที่เก็บข้อมูลนั้น)


1
ฉันคิดว่าแล็ปท็อปของฉันเป็นจุดเริ่มต้นเนื่องจากเป็นที่ที่ฉันสร้างที่เก็บครั้งแรก (ที่มา)
Brian Kelly

1
ในทางกลับกันฉันรู้สึกดีที่ได้originชี้ไปที่แล็ปท็อปในพื้นที่เนื่องจากการออฟไลน์หรือการสลับเครือข่ายเป็นกรณีที่พบบ่อยมากสำหรับอุปกรณ์พกพาเช่นแล็ปท็อป วิธีนี้คุณสามารถใช้git pushและgit pullทุกเวลาไม่จำเป็นต้องคิดถ้าคุณเชื่อมต่อกับเครือข่ายที่เหมาะสมในปัจจุบัน โลคัลนี้originสามารถซิงค์กับรีโมตจริงโดยอัตโนมัติเมื่อลิงก์เครือข่ายพร้อมใช้งานขึ้นอยู่กับสถานะโรมมิ่งปัจจุบัน ส่วนที่มีปัญหาคือเมื่อใดที่จะเรียกใช้การซิงค์ที่เปรียบเทียบกับส่วน GIT นั้นค่อนข้างง่าย
Tino

2
การชี้ไปoriginที่ที่เก็บอื่นบนแล็ปท็อปของคุณเหมาะสมอย่างแน่นอน อย่างไรก็ตามการชี้originพื้นที่เก็บข้อมูลด้วยตนเองนั้นไม่ได้: มันจะไม่สร้างความแตกต่างใด ๆ ไม่ว่าคุณจะเรียกใช้git pushหรือgit pullเนื่องจากที่เก็บข้อมูลนั้นซิงค์กับตัวเองอยู่เสมอ มันผิดธรรมชาติ
อริสโตเติล Pagaltzis

3

[ สารละลาย ]

$ git push origin

^ นี่แก้ไขได้สำหรับฉัน สิ่งที่มันทำมันทำให้ต้นแบบของฉัน (บนแล็ปท็อป) ตรงกับ "จุดเริ่มต้น" ที่อยู่บนเซิร์ฟเวอร์ระยะไกล


1

ฉันกำลังดิ้นรนกับปัญหานี้และไม่มีคำตอบก่อนหน้าตอบคำถามที่ฉันเห็น ฉันได้ลอกปัญหากลับไปสู่พื้นฐานเพื่อดูว่าฉันสามารถทำให้ปัญหาชัดเจนขึ้นหรือไม่

ฉันสร้างที่เก็บใหม่ (rep1) ใส่หนึ่งไฟล์ลงไปและคอมมิชชัน

mkdir rep1
cd rep1
git init
echo "Line1" > README
git add README
git commit -m "Commit 1"

ฉันสร้างโคลนของ rep1 และเรียกมันว่า rep2 ฉันดูข้างใน rep2 และดูว่าไฟล์นั้นถูกต้อง

cd ~
git clone ~/rep1 rep2
cat ~/rep2/README

ใน rep1 ฉันทำการเปลี่ยนแปลงเดียวกับไฟล์และกระทำมัน จากนั้นใน rep1 ฉันสร้างรีโมตเพื่อชี้ไปที่ rep2 และผลักดันการเปลี่ยนแปลง

cd ~/rep1
<change file and commit>
git remote add rep2 ~/rep2
git push rep2 master

ตอนนี้เมื่อฉันเข้าสู่ rep2 และทำ 'สถานะคอมไพล์' ฉันได้รับแจ้งว่าฉันมาก่อน

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#

README ใน rep2 เป็นอย่างที่มันเคยเป็นมาก่อนการกระทำครั้งที่สอง การดัดแปลงเพียงอย่างเดียวที่ฉันทำคือการ rep1 และสิ่งที่ฉันต้องการจะทำคือการผลักพวกเขาออกไปที่ rep2 ฉันไม่เข้าใจอะไร


1
สองสิ่ง: การตรวจสอบ "ต้นกำเนิด / หลัก" ของ rep2 ไม่ได้ดูที่ rep1 จริง ๆ หากคุณทำ 'git pull' ใน rep2 มันจะสังเกตเห็นว่าพวกเขาอยู่ในสถานะเดียวกันและหยุดบ่น หากต้องการดูการเปลี่ยนแปลงจากการทำสำเนาที่ใช้งานได้จริงคุณต้องทำการ 'เช็คเอาต์ git' - การกดไม่เคยแตะสำเนาการทำงานของ repo ปลายทาง
Walter Mundt

ฉันคิดว่าอาจเป็นกรณีนั้น แต่ฉันได้รับ "เช็คเอาต์ Git M README สาขาของคุณอยู่ก่อนหน้า 'Origin / Master' โดย 1 คอมมิชชัน แต่สำเนาการทำงานของฉันเป็นจริงโดย 1 กระทำไม่ได้ไปข้างหน้า
Steve Hindmarch


1

ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้และฉันคิดว่ามันเป็นเพราะฉันได้ลบบางไฟล์ที่ฉันไม่ต้องการอีกต่อไป ปัญหาคือคอมไพล์ไม่รู้ว่าไฟล์ถูกลบแล้วและเห็นว่าเซิร์ฟเวอร์ยังมีอยู่ (เซิร์ฟเวอร์ = กำเนิด)

ดังนั้นฉันวิ่ง

git rm $(git ls-files --deleted)

จากนั้นวิ่งมุ่งมั่นและผลักดัน

ที่แก้ไขปัญหา


1
สิ่งนี้ใช้ได้เฉพาะเมื่อข้อความคอมมิทระบุว่าลบ - <ชื่อไฟล์>
looneydoodle

1

ฉันเป็นมือใหม่คอมไพล์เช่นกัน ฉันมีปัญหาเดียวกันกับข้อความ 'สาขาของคุณอยู่ก่อนข้อความต้นทาง / ปรมาจารย์โดย N' การทำ 'git diff origin / master' ที่แนะนำนั้นแสดงให้เห็นถึงความแตกต่างที่ฉันไม่ได้สนใจ ดังนั้น ...

เนื่องจากโคลนคอมไพล์ของฉันมีไว้สำหรับโฮสต์และฉันต้องการสำเนา repo หลักที่แน่นอนและไม่สนใจที่จะเปลี่ยนแปลงในท้องถิ่นฉันตัดสินใจที่จะบันทึก repo ทั้งหมดของฉันและสร้างใหม่:

(บนเครื่องโฮสต์)

mv myrepo myrepo
git clone USER@MASTER_HOST:/REPO_DIR myrepo

เพื่อความรวดเร็วฉันเคยทำการเปลี่ยนแปลงโคลนในเครื่องโฮสติ้งของฉัน ไม่มีอีกแล้ว ฉันจะทำการเปลี่ยนแปลงเหล่านั้นกับนายคอมไพล์กระทำที่นั่นและทำการดึงคอมไพล์ หวังว่านี่จะทำให้ clit git ของฉันอยู่ในเครื่องโฮสติ้งอย่างสมบูรณ์

/ นารา


0

ฉันสงสัยในสิ่งเดียวกันเกี่ยวกับ repo ของฉัน ในกรณีของฉันฉันมีรีโมทเก่าที่ฉันไม่ได้ผลักไปอีกต่อไปดังนั้นฉันจึงจำเป็นต้องลบออก

รับรายการรีโมท:

git remote

ลบอันที่คุณไม่ต้องการ

git remote rm {insert remote to remove}

0

เป็นไปได้ที่จะรีเซ็ตเป็นการมอบหมายเฉพาะก่อนที่การคอมมิทของคุณจะเกิดขึ้น

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

ใช้git logเพื่อค้นหาว่าอะไรคือสิ่งที่คุณมอบให้ก่อนที่จะมีการเปลี่ยนแปลงเกิดขึ้น

$ git log
commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb
...
commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
...

จดบันทึกการกระทำในท้องถิ่นและรีเซ็ตโดยตรงไปยังการส่งก่อนหน้า:

git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e

-1

ฉันมีปัญหา "สาขาของคุณอยู่ข้างหน้า 'ต้นกำเนิด / หลัก' โดย nn คอมมิท" เมื่อฉันผลักไปยังที่เก็บระยะไกลด้วย:

git push ssh://git@xxx.repositryhosting.com/yyy/zzz.git

เมื่อฉันพบว่าที่อยู่ระยะไกลของฉันอยู่ในไฟล์. git / FETCH_HEAD และใช้งาน:

git push

ปัญหาหายไป

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