git push กล่าวว่า“ ทุกสิ่งเป็นปัจจุบัน” แม้ว่าฉันจะมีการเปลี่ยนแปลงในท้องถิ่น


238

ฉันมีเซิร์ฟเวอร์ gitosis ระยะไกลและที่เก็บ git ในพื้นที่และทุกครั้งที่ฉันทำการเปลี่ยนแปลงครั้งใหญ่ในรหัสของฉันฉันจะผลักดันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์นั้นด้วย

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

PS: นี่คือสิ่งที่แสดงคอมไพล์เมื่อทำงาน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


คุ้มค่าที่ตรวจสอบอีกครั้งว่าคุณอยู่ในไดเรกทอรีที่ถูกต้อง! Esp เมื่อคุณมี submodules คุณสามารถเข้าใจการตอบสนองของคอมไพล์จากผู้ปกครอง ..
geotheory

ในกรณีของฉันฉันได้รับข้อผิดพลาดในขณะcommitที่ฉันไม่ได้สังเกตและพยายามที่จะผลักดันรหัส
Zohab Ali

3
ลืมที่จะกระทำ?
ldgorman

คำตอบ:


256

คุณทำงานกับหัวหน้าเดี่ยวโดยบังเอิญหรือไม่?

ในขณะที่:

หัวเดี่ยว

แสดงว่าการกระทำล่าสุดของคุณไม่ใช่หัวหน้าสาขา

คำเตือน : สิ่งต่อไปนี้คือgit reset --hard: ตรวจสอบให้แน่ใจว่าได้ใช้git stashก่อนถ้าคุณต้องการบันทึกไฟล์ที่ถูกแก้ไขในปัจจุบัน

$ 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 checkoutหน้าคน (เน้นที่เหมือง):

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

$ git checkout v2.6.18

รุ่นก่อนหน้านี้ของคอมไพล์ไม่อนุญาตให้นี้และขอให้คุณสร้างสาขาชั่วคราวโดยใช้-bตัวเลือก แต่เริ่มต้นจากรุ่น 1.5.0, คำสั่งดังกล่าวตกเป็นของคุณHEADจากสาขาในปัจจุบันและตรงจุดที่กระทำการตั้งชื่อโดยแท็ก ( v2.6.18ใน ตัวอย่างด้านบน)

คุณสามารถใช้คำสั่ง git ทั้งหมดในขณะที่อยู่ในสถานะนี้
คุณสามารถใช้git reset --hard $othercommitเพื่อย้ายไปรอบ ๆ ตัวอย่างเช่น
คุณสามารถทำการเปลี่ยนแปลงและสร้างคอมมิทใหม่บน HEAD ที่ถอดออกได้ คุณยังสามารถสร้างการผสานโดยใช้
git merge $othercommit

สถานะที่คุณอยู่ในขณะที่หัวหน้าของคุณไม่ได้ถูกบันทึกโดยสาขาใด ๆ (ซึ่งเป็นเรื่องปกติคุณไม่ได้อยู่ในสาขาใด ๆ )
สิ่งนี้หมายความว่าคุณสามารถละทิ้งการคอมมิชชันและผสานชั่วคราวโดยเปลี่ยนกลับไปเป็นสาขาที่มีอยู่ (เช่นgit checkout master) และภายหลังgit pruneหรือgit gcจะเก็บขยะ
หากคุณทำสิ่งนี้โดยไม่ได้ตั้งใจคุณสามารถขอ reflog สำหรับ HEAD ว่าคุณอยู่ที่ไหนเช่น

$ git log -g -2 HEAD

4
มันไม่ชัดเจนเลยสำหรับฉันว่าฉันจะเข้าสู่สถานะนี้ได้อย่างไร (ทำบางอย่างที่ยุ่งกับ git-svn ในตอนนี้) แต่มันก็เพียงพอแล้วที่จะพาฉันกลับไปที่สถานที่ที่เหมาะสม ขอบคุณ
Christopher Schmidt

ฉันอยู่ในสถานะหัวหน้าเดี่ยวรวมการเปลี่ยนแปลงของฉันรวมการเปลี่ยนแปลงของฉันและตอนนี้ฉันต้องการผลักดันสิ่งนี้ให้เป็นอาจารย์และไม่สามารถ - บอกฉันว่า "ทุกอย่างทันสมัย" แต่ฉันกำลังทำตามคำแนะนำที่ให้ไว้กับ Gitlab ของฉัน: Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master" ฉันทำได้ดีจนถึงขั้นตอนสุดท้าย แต่ตอนนี้ฉันแค่สับสนว่าจะเดินหน้าต่อไปยังไง
John

@John คุณต้องอยู่ในสาขาเพื่อผลักดัน ตราบใดที่คุณอยู่ในโหมด HEAD ที่แยกออกมานั่นจะไม่ทำงาน รีเซ็ตสาขาของคุณไปยังที่ที่คุณอยู่: git branch -f myBranch HEADจากนั้นเช็คเอาต์สาขาดังกล่าวแล้วผลักมัน ในกรณีของคุณmyBranchอาจจะถ้าคุณอยู่ในกระบวนการของการรวมกิจการmaster nodeAPI
VonC

โปรดระวังการสูญเสียการเปลี่ยนแปลงในท้องถิ่นหลังจากเรียกใช้คำสั่งนี้ !! ลองใช้การทำ git stash และการแบ็คอัพโค้ดก่อนที่จะทำอะไรแบบนี้
kta

@kta ข้อดี: ฉันได้แก้ไขคำตอบเพื่อให้คำเตือนนั้นปรากฏ
VonC

152

เอ่อ .. ถ้าคุณเป็น noob คอมไพล์คุณแน่ใจว่าคุณมีgit commitมาก่อนgit pushหรือไม่ ฉันทำผิดครั้งแรก!


10
มันเป็นgit commit -a -m "your message goes here"ในกรณีของฉัน
aexl

ฉันรัก (การถากถาง) ทุกครั้งที่ฉันต้องการเพิ่มโครงการใหม่ให้กับ GitHub บางครั้งฉันลืมและข้อความแสดงข้อผิดพลาดทำให้ฉันคิดว่าฉันทำอะไรผิดจริงๆ - แน่นอน DUH! คอมมิชชันเกิดขึ้นกับฉันเมื่อฉันสร้างที่เก็บข้อมูลสำรองใหม่และฉันลืม
Tom Stickel

git noob ที่นี่ - ฉันลืมที่จะกระทำทุกครั้งก่อนที่ฉันจะผลักดัน - การกดควรกระทำโดยอัตโนมัติหากคุณไม่ได้ทำมันมาก่อน
FoxMcCloud

2
@FoxMcCloud commiting เป็นขั้นตอนสำคัญที่จะมีสติของฉันแน่ใจว่าคุณจะได้เรียนรู้ที่จะรักมันถ้าคุณยังไม่ได้ :) ~ git add -A, git diff --staged, เลื่อนผ่านการเปลี่ยนแปลงอืมมองที่ดีมากgit commit -m 'bam!',git push
AFOC

58

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

สาขาท้องถิ่นใหม่จะต้องผลักอย่างชัดเจน:

git push origin your-new-branch-name

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


3
ขอบคุณ! สิ่งนี้แก้ไขปัญหาของฉัน "ทุกสิ่งที่ทันสมัย" ด้วยสาขาใหม่ที่ฉันมี
Pangu

สิ่งที่ห่าหมายถึงอะไรโดย "your-new-branch-name"? Ps: คุณพูดถูกมากเกี่ยวกับผู้มาใหม่
www-0av-Com

@ user1863152 นั่นคือชื่อสาขาท้องถิ่นใหม่ที่คุณสร้าง ดูเหมือนว่าคุณจะไม่ทำอย่างนั้นดังนั้นโปรดตรวจสอบคำตอบอื่น ๆ ที่นี่
Roman Starkov

เห็นด้วยกับ "กระบวนการทำงานนี้ไม่เป็นมิตรกับผู้มาใหม่" ฉันดิ้นรนกับเรื่องนี้ตั้งแต่ 1 ชั่วโมง ฉันตั้งค่า repo ระยะไกลและท้องถิ่น ทำการเปลี่ยนแปลงไฟล์ REAME ในเครื่องแล้วลองผลักไปที่รีโมตและไม่มีการเปลี่ยนแปลงอะไรในรีโมต
Vir

37

ปัญหาของฉันคือสาขาท้องถิ่นของฉันมีชื่อแตกต่างจากสาขาระยะไกล ฉันสามารถผลักดันโดยทำสิ่งต่อไปนี้:

$ 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/ )


28

สถานการณ์อื่นที่สำคัญที่ต้องระวัง: การเรียงลำดับสถานะเริ่มต้นสำหรับ git คือคุณกำลังทำงานในสาขา "ต้นแบบ" และในหลาย ๆ สถานการณ์คุณเพิ่งจะออกไปเที่ยวในที่ทำงานหลักของคุณ (แม้ว่าบางคนจะมีจินตนาการและทำสิ่งอื่น ๆ )

อย่างไรก็ตามนั่นเป็นเพียงสาขาเดียว ดังนั้นสถานการณ์ที่ฉันอาจเข้าเป็น:

สาขาที่ใช้งานจริงของฉันไม่ใช่สาขาหลัก ... แต่ฉันมักจะทำตามคำสั่ง: git push(และฉันเคยทำมาก่อนgit push origin masterดังนั้นจึงเป็นทางลัดสำหรับสิ่งนั้น)

ดังนั้นฉันจึงผลักสาขาหลักไปที่ repo ที่ใช้ร่วมกัน ... ซึ่งอาจเป็นสิ่งที่ดีในกรณีของฉัน ...

แต่ฉันลืมไปว่าการเปลี่ยนแปลงที่ฉันทำอยู่ยังไม่ได้อยู่ในสาขาหลัก !!!

ดังนั้นทุกครั้งที่ฉันลองgit pushและฉันเห็น "ทุกอย่างทันสมัย" ฉันต้องการกรีดร้อง แต่แน่นอนว่าไม่ใช่ความผิดของคอมไพล์! มันเป็นของฉัน.

ดังนั้นฉันจึงรวมสาขาของฉันเข้ากับปริญญาโทแล้วจึงผลักดันและทุกอย่างมีความสุขอีกครั้ง


ฉันอยากจะกรีดร้องด้วย git pushแต่แล้วคุณเทศน์เส้นทางแห่งความรอดที่จะรวมตัวผู้เข้าสู่ต้นแบบแล้ว
Aaron C

16
$ git push origin local_branch:remote_branch

คำอธิบาย

ฉันมีข้อผิดพลาดเดียวกัน & ใช้เวลาหลายชั่วโมงในการพยายามคิดออก ในที่สุดฉันก็พบว่า สิ่งที่ฉันไม่รู้ก็คือการผลักเช่นนี้git push origin branch-xจะพยายามค้นหา branch-x ในตัวจากนั้นกดไปที่ remote branch-x

ในกรณีของฉันฉันมี URL ระยะไกลสองแห่ง ฉันเช็คเอาต์จากbranch-xถึงbranch-yเมื่อพยายามที่จะผลักจาก y ในเครื่องไปที่ x remote ฉันมีข้อความว่าทุกอย่างทันสมัยซึ่งเป็นเรื่องปกติเพราะฉันผลัก 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 push upstream dev: master' ซึ่งหมายความว่ามันจะผลักดันซอร์สจาก dev ไปยัง master ขวา?
Dhaduk Mitesh

สิ่งนี้ช่วยฉันได้ฉันมีสาขาในท้องที่อื่นที่ชื่อว่าสาขาระยะไกลสิ่งที่ทำให้เกิดความสับสน
Hubert Kubiak

ตกลงนี้ทำงานได้อย่างแน่นอนสำหรับฉัน แต่ฉันต้องทำเช่นนี้ทุกครั้งที่ฉันต้องการผลักดันบางสิ่งสู่ระยะไกล ฉันจะแก้ไขได้ครั้งเดียวและทั้งหมดได้อย่างไร
SamuraiJack

คุณอาจจำเป็นต้องตั้งค่าอัปสตรีมระหว่างสาขาในพื้นที่และนอกสถานที่ของคุณด้วยรายการต่อไปนี้: $ git push - set-upstream กำเนิด local_branch: remote_branch
Melchia

6

ดูคำตอบของ 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 remoterepo master' และพบข้อขัดแย้ง ฉันทำgit reset --hard <commit-id>อีกครั้งคัดลอกไฟล์ที่ขัดแย้งไปยังโฟลเดอร์สำรองทำgit pull remoterepo masterอีกครั้งคัดลอกไฟล์ที่ขัดแย้งกลับไปยังโครงการของฉันทำgit commitแล้วgit push remoterepo masterและคราวนี้ก็ใช้งานได้

Git หยุดพูดว่า 'ทุกอย่างเป็นปัจจุบัน' และมันก็หยุดบ่นเกี่ยวกับ 'ส่งต่ออย่างรวดเร็ว'


3

ฉันต้องเผชิญกับสถานการณ์ที่คล้ายกัน; เมื่อฉันทำการเปลี่ยนแปลงและพยายาม git push origin masterมันก็บอกว่าทุกอย่างทันสมัย

ผมต้องไฟล์ที่มีการเปลี่ยนแปลงแล้วgit add git push origin masterมันเริ่มทำงานตั้งแต่นั้นมา


4
คุณไม่ต้องไปgit commitที่ไฟล์ที่เพิ่มก่อนผลักดัน?
เดวิดฮาร์

3

จากสถานะ git ของคุณคุณอาจมีสถานการณ์ที่แตกต่างจากของฉัน

แต่อย่างไรก็ตามนี่คือสิ่งที่เกิดขึ้นกับฉัน .. ฉันพบข้อผิดพลาดต่อไปนี้:

fatal: The remote end hung up unexpectedly
Everything up-to-date

ข้อความที่ให้ข้อมูลมากกว่านี้คือรีโมตวางสาย กลับกลายเป็นว่าเกินขนาดบัฟเฟอร์โพสต์ http การแก้ปัญหาคือการเพิ่มด้วย

git config http.postBuffer 524288000


3

ฉันมีปัญหานี้ในวันนี้และมันไม่มีอะไรเกี่ยวข้องกับคำตอบอื่น ๆ นี่คือสิ่งที่ฉันทำและวิธีแก้ไข:

ที่เก็บของฉันเพิ่งย้าย แต่ฉันมีสำเนาในเครื่อง ฉันแยกสาขา "เจ้านาย" ท้องถิ่นของฉันและทำการเปลี่ยนแปลงบางอย่าง - แล้วฉันจำได้ว่าที่เก็บได้ย้าย ฉันเคยgit remote set-url origin https://<my_new_repository_url>ตั้งค่า URL ใหม่ แต่เมื่อฉันผลักมันก็จะพูดว่า "ทุกอย่างทันสมัย" แทนที่จะผลักสาขาใหม่ของฉันเป็นหลัก

ฉันลงเอยด้วยการแก้มันด้วยการรีบูตไปorigin/masterแล้วผลักดันด้วยชื่อสาขาที่ชัดเจนเช่นนี้:

$ git rebase <my_branch> origin/master
$ git push origin <my_branch>

ฉันหวังว่านี่จะช่วยให้ทุกคนที่มีปัญหาเดียวกันกับฉัน!


3

หายากสุด ๆ แต่ก็ยัง: บน Windows อาจเป็นได้ว่าpack -refsมีสาขาที่มีตัวอักษรหนึ่งตัว (เช่น dev / mybranch) ในขณะที่โฟลเดอร์refsมีอีกกรณีหนึ่ง (เช่น Dev / mybranch) เมื่อ core.ignorecase ถูกตั้งค่าเป็นจริง .

การแก้ปัญหาคือการลบแถวที่เกี่ยวข้องด้วยตนเองจากบรรจุ-refs ไม่พบโซลูชันที่สะอาดกว่านี้


นั่นก็เป็นปัญหาสำหรับฉันเช่นกัน จบลงด้วยการเปลี่ยนชื่อโฟลเดอร์ที่มีกรณีที่ไม่ถูกต้องภายในโฟลเดอร์. git (บันทึก / refs / หัว, refs / heads)
Alexey Solonets

2

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

ก่อนอื่นฉันแยกสาขาท้องถิ่นใหม่ออกจากสาขาเก่าของฉัน (ซึ่งฉันดันไม่ได้) จากนั้นฉันผลักสาขาท้องถิ่นใหม่ไปยังเซิร์ฟเวอร์ต้นทาง (Github) กล่าวคือ

$ git checkout -b newlocalbranch oldlocalbranch
$ git push origin newlocalbranch

สิ่งนี้มีการเปลี่ยนแปลงเพื่อแสดงบน Github แม้ว่าจะอยู่ใน newlocalbranch มากกว่า oldlocalbranch


2

ในกรณีของฉันฉันมี 2 repos ระยะไกล

git remote -v
originhttps https://asim_kt@...
originhttps https://asim_kt@...
origin  ssh:git@bitbucket.org:...
origin  ssh:git@bitbucket.org:...

repo ทั้งสองเหมือนกัน เพียงหนึ่งเป็นอื่นhttps sshดังนั้นในการลบสิ่งที่ไม่ต้องการออก (ในกรณีของฉันsshเนื่องจากฉันใช้httpsเพราะsshไม่ทำงาน!) ได้แก้ไขปัญหาให้ฉันแล้ว


2

ความผิดพลาดของฉันนั้นแตกต่างจากที่กล่าวมาทั้งหมด หากคุณไม่รู้ว่าทำไมคุณถึงมีหัวที่แยกออกมาคุณก็อาจจะทำไม่ได้ ผมทำงานในหม้อแปลงไฟฟ้าที่มี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'

2

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

git push origin master

Everything up-to-dateและจะแสดงข้อความ

เพื่อแก้ไขปัญหานี้ให้ลองขั้นตอนเหล่านี้

  1. git add .
  2. git commit -m "Bug Fixed"
  3. git push -u origin master

1

ยืนยันว่าคุณไม่ได้ทำ URL ระยะไกลของคุณผิด

ฉันแค่อยากจะพูดถึงว่าฉันวิ่งเข้าไปในนี้หลังจากเปิดใช้งาน Git เป็น CVS ในเจนกินส์สร้างการกำหนดค่าท้องถิ่น ปรากฏว่าเจนกินส์ตรวจสอบความมุ่งมั่นล่าสุดของสาขาที่ฉันให้ไว้และรีเซ็ตรีโมตของฉันเพื่อให้สอดคล้องกับเส้นทางที่ฉันมอบให้กับ repo ต้องทำการตรวจสอบสาขาฟีเจอร์ของฉันอีกครั้งและแก้ไข URL ระยะไกลต้นทางของฉันด้วย 'git remote set-url' อย่าไปชี้เครื่องมือสร้างไปยังไดเรกทอรีทำงานของคุณมิฉะนั้นคุณจะมีเวลาไม่ดี รีโมตของฉันถูกตั้งค่าเป็นพา ธ ไฟล์ไปยังไดเร็กทอรีที่ใช้งานของฉันดังนั้นมันจึงรายงานทุกอย่างเป็นปัจจุบันเมื่อฉันพยายามผลักดันการเปลี่ยนแปลงด้วยแหล่งที่มาและปลายทางเดียวกัน


1

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


1

มีวิธีที่รวดเร็วที่ฉันพบ ไปที่โฟลเดอร์. git ของคุณเปิดHEADไฟล์และเปลี่ยนสาขาที่คุณอยู่บนหลังเป็นหลัก เช่นการอ้างอิง:refs/heads/master


ตั้งค่าจริงเป็นที่refs/heads/masterเก็บของฉันเสียหาย Warning: you are leaving 1 commit behind, not connected to any of your branchesแต่การตั้งค่ากับสิ่งที่ผมคิดว่าจะเป็นหัวกระทำให้ข้อความต่อไปนี้: ฉันสามารถนำความมุ่งมั่นไปสู่สาขาใหม่และผสานมันกลับไปที่เจ้านาย
schmijos

1

ฉันมีปัญหาเดียวกัน ในกรณีของฉันมันเกิดจากต้องชื่อสำหรับระยะไกลเดียวกัน มันสร้าง 'ต้นกำเนิด' มาตรฐาน แต่ฉันใช้ 'github' เป็นรีโมทของฉันเป็นเวลานานดังนั้นนั่นก็มีเช่นกัน ทันทีที่ฉันลบรีโมต 'ต้นทาง' ข้อผิดพลาดก็หายไป


1

ฉันมีสิ่งนี้เกิดขึ้น (ความมุ่งมั่นในบันทึกการคอมไพล์ของฉันไม่ได้อยู่ใน GitHub แม้ว่า git จะบอกว่าทุกอย่างทันสมัย) และฉันมั่นใจว่าปัญหาคือ Github ฉันไม่ได้รับข้อความแสดงข้อผิดพลาดใน git แต่ GitHub มีข้อผิดพลาดสถานะและความมุ่งมั่นของฉันอยู่ที่นั่นหลายชั่วโมงในภายหลัง

https://status.github.com/messages

ข้อความสถานะ GitHub คือ:

  • เรากำลังตรวจสอบรายงานการให้บริการไม่พร้อมใช้งาน
  • เรากำลังตรวจสอบปัญหาในการเข้าถึง GitHub.com
  • เราล้มเหลวผ่านระบบจัดเก็บข้อมูลเพื่อคืนค่าการเข้าถึง GitHub.com

1

ข้อผิดพลาดอื่น ๆ ที่เรียบง่ายและไม่มีเสียงรบกวนอีกอย่างของฉัน: ฉันลืมเพิ่ม-mตัวแก้ไขข้อความ ดังนั้นฉันจึงเขียนว่า:

git commit 'My message'

แทนที่จะถูกต้อง:

git commit -m 'My message'

หมายเหตุ: มันจะไม่โยนข้อผิดพลาดใด ๆ ! แต่คุณจะไม่สามารถผลักดันการกระทำของคุณและได้รับEverything up to dateแทนเสมอ


0

ที่นี่ทางออกของฉันแตกต่างจากข้างบน ฉันไม่ได้คิดว่าปัญหานี้จะเกิดขึ้นได้อย่างไร แต่ฉันแก้ไขได้ เล็กน้อยโดยไม่คาดคิด

ตอนนี้มาทาง:

$ 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

(หวังว่าพวกคุณจะได้รับจากปัญหานี้โดยเร็วที่สุด)


0

ฉันรู้ว่ามันเก่ามาก แต่ในกรณีของฉันฉันแก้ไขมันค่อนข้างเร็ว

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

ฉันไม่รู้ว่าทำไม แต่อาจเป็นประโยชน์กับคนอื่น


จริงๆแล้วมันไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณได้รับชื่อเสียงเพียงพอคุณจะได้รับสิทธิพิเศษในการถอนคำตอบที่คุณชอบ วิธีนี้ผู้เยี่ยมชมคำถามในอนาคตจะเห็นคะแนนโหวตที่สูงขึ้นสำหรับคำตอบนั้นและผู้ตอบจะได้รับคะแนนชื่อเสียงด้วย ดูทำไมออกเสียงลงคะแนนที่สำคัญ
Waqar UlHaq

1
ตกลงขอบคุณสำหรับการชี้แจง แต่ทำไมถึงไม่สามารถพิจารณา (ถ้าคุณต้องการ) เป็น "วิธีแก้ปัญหา" สำหรับปัญหานี้ มันไม่ได้เป็นทางออก แต่มันจะมีประโยชน์สำหรับคนอื่น ๆ อยู่ดี
Cisco

0

ความเป็นไปได้อีกอย่างก็คือคุณยอมรับว่าจะไม่ส่งผลกระทบต่อไดเรกทอรีที่คุณกำลังกด ดังนั้นในกรณีของฉันฉันมีโครงสร้างเช่น

- .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


0

ฉันทำงานกับJupyter-Notebookเมื่อฉันพบข้อผิดพลาดหลอกลวงนี้

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

แต่สิ่งที่ฉันทำคือไฟล์ของฉันมีขนาดใหญ่กว่า1MBเล็กน้อยและใหญ่ที่สุดคือเกือบ2MB ~ฉันลดขนาดไฟล์โดยใช้ฉันจะลดขนาดไฟล์ในสมุดบันทึก iPython ของฉันได้อย่างไรเทคนิค. มันช่วยลดขนาดไฟล์ของฉันโดยการล้างผลลัพธ์ ฉันสามารถกดรหัสต่อจากนี้ไปเพราะมันมีขนาดไฟล์เป็น KB

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