คำถามติดแท็ก git

Git เป็นระบบควบคุมเวอร์ชันแจกจ่ายแบบโอเพนซอร์ซ (DVCS) ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องกับการใช้งาน Git และเวิร์กโฟลว์ อย่าใช้แท็ก [github] สำหรับปัญหาที่เกี่ยวข้องกับ Git เพียงเพราะพื้นที่เก็บข้อมูลเกิดขึ้นเพื่อโฮสต์บน GitHub นอกจากนี้อย่าใช้แท็กนี้สำหรับคำถามการเขียนโปรแกรมทั่วไปที่เกี่ยวข้องกับที่เก็บ Git

2
คุณขอให้ฉันดึงโดยไม่บอกฉันว่าคุณต้องการรวมกับสาขาใด
TL; DR: ฉันมีสาขา "ติดตาม" ที่ดึงไม่ได้ ดังนั้นฉันจึงอยู่ใน "bucket-4": $ git branch -v bucket-1 410f7b5 * gh-53 * gh-48 * "Share App" bucket-2 7ed70a2 * upgrade to SOLR 3.3.0 bucket-3 400ffe4 * emergency fix prod issue * bucket-4 64c2414 Merge branch 'bucket-3' into bucket-4 master 8dc4854 [ahead 1] * gh-73 ฉันต้องการดึงการเปลี่ยนแปลงจากรีโมทของฉัน: $ …
125 git  git-pull 

11
มีคำสั่งละเว้นสำหรับคอมไพล์เหมือนที่มีสำหรับ svn หรือไม่?
ฉันเป็นผู้ใช้ใหม่gitและฉันกำลังเริ่มโครงการใหม่ ฉันมีไฟล์ dot มากมายที่ฉันอยากจะละเว้น มีคำสั่งเพิกเฉยgitเหมือนมีเพื่อsvn?
125 git  gitignore  ignore 

5
การใช้ที่เก็บระยะไกลกับพอร์ตที่ไม่ได้มาตรฐาน
ฉันกำลังตั้งค่าโปรเจ็กต์ git ในเครื่องของฉันสำหรับที่เก็บระยะไกล ที่เก็บระยะไกลกำลังให้บริการบนพอร์ตที่ไม่ได้มาตรฐาน (4019) แต่มันไม่ได้ผล แต่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: ssh: connect to host git.host.de:4019 port 22: Connection refused fatal: The remote end hung up unexpectedly error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git' การกำหนดค่าคอมไพล์ในเครื่องของฉันมีดังนี้ : [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = ssh://root@git.host.de:4019/var/cache/git/project.git fetch …
125 git 

13
การใช้ capistrano เพื่อปรับใช้จาก git สาขาต่างๆ
ฉันใช้ capistrano เพื่อปรับใช้แอปพลิเคชัน RoR โค้ดเบสอยู่ในที่เก็บ git และมีการใช้การแยกย่อยในการพัฒนา Capistrano ใช้deploy.rbไฟล์สำหรับการตั้งค่าซึ่งหนึ่งในนั้นเป็นสาขาที่จะปรับใช้ ปัญหาของฉันคือ: สมมติว่าฉันจะสร้างสาขาใหม่จากต้นแบบ ไฟล์ปรับใช้จะอ้างอิงสาขาหลัก ฉันแก้ไขเพื่อให้สามารถปรับใช้Aเพื่อทดสอบสภาพแวดล้อม ฉันเสร็จสิ้นการทำงานเกี่ยวกับคุณลักษณะและผสานสาขาเข้าต้นแบบ ตั้งแต่ไฟล์จากคือสดจะได้รับการรวมอยู่ในและตอนนี้ในโทสาขาการอ้างอิง ได้เวลาแก้ไขอีกครั้ง.deploy.rbdeploy.rb นั่นเป็นการแก้ไขด้วยตนเองที่ดูเหมือนไม่จำเป็นจำนวนมาก - พารามิเตอร์ควรตรงกับชื่อสาขาปัจจุบันเสมอ ยิ่งไปกว่านั้นมันเป็นเรื่องง่ายที่จะลืมแก้ไขการตั้งค่าทุกครั้ง อะไรคือวิธีที่ดีที่สุดในการทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ แก้ไข:ปรากฎว่ามีคนทำสิ่งที่ฉันต้องการแล้ว : เช้านี้ฉันมีโอกาสปรับใช้สาขาของที่เก็บ git ไปยังเซิร์ฟเวอร์การจัดเตรียม แต่ไม่ได้มีความคิดที่ชัดเจนที่สุดว่าจะทำอย่างไร การค้นหาอย่างรวดเร็วผ่านซอร์สโค้ด capistrano พบว่าฉันสามารถใช้ set :branch "branch_name"ในสคริปต์ปรับใช้ของฉันได้ ฉันลองแล้วและได้ผล จากนั้นฉันก็คิดว่าฉันจะต้องทำการเปลี่ยนแปลงที่คล้ายกันในทุกสาขาของฉัน แน่นอนว่าฉันเป็นคนขี้เกียจและสงสัยว่าไม่มีวิธีที่ดีกว่านี้ หากคุณไม่คุ้นเคยกับ git ผลลัพธ์ของคำสั่ง git branch คือรายการของสาขาที่มีเครื่องหมายดอกจันซึ่งทำเครื่องหมายรายการที่เช็คเอาต์ในเครื่องของคุณ ตัวอย่างเช่น: > git branch * drupal_authentication fragment_caching master …
125 git  capistrano 

3
วัตถุต้นไม้ว่างเปล่ากึ่งลับของ git เชื่อถือได้หรือไม่และเหตุใดจึงไม่มีชื่อเชิงสัญลักษณ์
Git มีต้นไม้ว่างเปล่าที่รู้จักกันดีหรืออย่างน้อยก็เป็นที่รู้จักกันดีซึ่งมี SHA1 คือ: 4b825dc642cb6eb9a060e54bf8d69288fbee4904 (คุณสามารถเห็นสิ่งนี้ใน repo ใด ๆ แม้แต่ที่สร้างขึ้นใหม่ด้วยgit cat-file -tและgit cat-file -p) หากคุณทำงานหนักและระมัดระวังมากคุณสามารถใช้โครงสร้างว่างนี้เพื่อจัดเก็บไดเร็กทอรีที่ไม่มีไฟล์ได้ (ดูคำตอบของฉันจะเพิ่มไดเร็กทอรีว่างลงในที่เก็บ git ได้อย่างไร ) แม้ว่าจะไม่ใช่ความคิดที่ดีจริงๆ มันมีประโยชน์มากกว่าในการเป็นอาร์กิวเมนต์git diff-treeเดียวซึ่งหนึ่งในตัวอย่าง hooks ทำ สิ่งที่ฉันสงสัยคือ สิ่งนี้เชื่อถือได้มากน้อยเพียงใดนั่นคือ git ในอนาคตบางรุ่นจะไม่มีเลขวัตถุคอมไพล์4b825dc642cb6eb9a060e54bf8d69288fbee4904หรือไม่ เหตุใดจึงไม่มีชื่อเชิงสัญลักษณ์สำหรับต้นไม้ว่างเปล่า (หรือมีชื่อนี้?) (วิธีที่รวดเร็วและสกปรกในการสร้างชื่อเชิงสัญลักษณ์คือการใส่ SHA1 เข้าไปเช่น.git/Nulltreeน่าเสียดายที่คุณต้องทำสิ่งนี้สำหรับทุก repo ดูเหมือนจะดีกว่าที่จะใส่หมายเลขวิเศษในสคริปต์เป็นต้นฉันแค่มีความเกลียดชังทั่วไป เป็นตัวเลขวิเศษ)
125 git 

2
ด้วย GitHub ฉันจะผลักดันสาขาทั้งหมดเมื่อเพิ่ม repo ที่มีอยู่ได้อย่างไร
ฉันสร้างที่เก็บ GitHub ใหม่ - ฉันต้องการนำ repo ที่มีอยู่ของฉันไปที่นั่น ฉันทำตามคำแนะนำ: cd existing_git_repo git remote add origin git@github.com:acme-org/myprj.git git push origin master สิ่งนี้จะผลักดันสาขาหลักไปที่ GitHub เท่านั้น ฉันจะผลักดันทุกอย่าง (รวมถึงทุกสาขา) ใน repo ที่มีอยู่ไปยังที่เก็บ GitHub ใหม่ได้อย่างไร
125 git  github 

8
อักขระคาเร็ต (^) หมายถึงอะไร?
ฉันเห็นคำตอบสำหรับคำถามที่ช่วยกู้คืนไฟล์ที่ถูกลบใน git วิธีแก้ปัญหาคือ git checkout <deleting_commit>^ -- <deleted_file_path> ตัวละครคาเร็ต ( ^) ทำอะไร? ฉันเคยเห็นที่อื่นทำสิ่งที่มีประโยชน์มากในคอมไพล์ มันมีมนต์ขลัง ใครบางคนช่วยทำลายให้ฉันและบอกฉันว่ามันทำอะไร?
125 git 

4
ฉันจะผลักไปที่ทางแยกจากโคลนของ repo ดั้งเดิมได้อย่างไร
ฉันสร้างทางแยก (ขอเรียกว่าmyrepo) ของที่เก็บอื่น (ขอเรียกว่าorirepo) บน GitHub orirepoต่อมาผมโคลน git clone https://github.com/original/orirepo.git ฉันแก้ไขไฟล์ประมาณ 20 ไฟล์จากนั้นฉันก็จัดเตรียมการเปลี่ยนแปลงของฉันและทำการคอมมิต git add git commit อย่างไรก็ตามเมื่อฉันพยายามที่จะผลักดัน git push ฉันได้รับข้อผิดพลาดนี้: remote: Permission to original/orirepo.git denied to mylogin. fatal: unable to access 'https://github.com/original/orirepo.git/': The requested URL returned error: 403 ฉันรู้ว่าฉันทำพลาด: ฉันควรจะโคลนส้อมของฉันมากกว่าorirepoแต่ตอนนี้มันสายเกินไปแล้ว ฉันจะดันไปที่ทางแยกแทนที่จะไปorigin/orirepoที่ซึ่งฉันไม่มีสิทธิ์เขียนได้อย่างไร
125 git  github 

5
git compute file hashes อย่างไร
แฮช SHA1 ที่เก็บไว้ในวัตถุโครงสร้าง (ตามที่ส่งคืนโดยgit ls-tree) ไม่ตรงกับแฮช SHA1 ของเนื้อหาไฟล์ (ตามที่ส่งคืนโดยsha1sum) $ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum de20247992af0f949ae8df4fa9a37e4a03d7063e - git compute file hashes อย่างไร มันบีบอัดเนื้อหาก่อนคำนวณแฮชหรือไม่?
124 git  hash  sha1  checksum  git-hash 


11
เปลี่ยน Git remote HEAD ให้ชี้ไปที่สิ่งอื่นนอกเหนือจาก master
ฉันจะตั้งค่าการอ้างอิง HEAD ของรีโมต Git ให้ชี้ไปที่บางสิ่งนอกเหนือจาก "master" ได้อย่างไร โครงการของฉันมีนโยบายที่จะไม่ใช้สาขา "หลัก" (ทุกสาขาจะต้องมีชื่อที่มีความหมาย) นอกจากนี้ที่เก็บหลักมาตรฐานสามารถเข้าถึงได้ผ่าน ssh: // เท่านั้นโดยไม่มีการเข้าถึงเชลล์ (เช่น GitHub หรือ Unfuddle) ปัญหาของฉันคือที่เก็บข้อมูลระยะไกลยังคงมีการอ้างอิง HEAD ไปยัง refs / head / master แต่ฉันต้องการให้ชี้ไปที่สาขาอื่น สิ่งนี้ทำให้เกิดปัญหาสองประการ: เมื่อโคลน repo มีสิ่งนี้ คำเตือน: remote HEAD หมายถึงการอ้างอิงที่ไม่มีอยู่จริงไม่สามารถชำระเงินได้ ที่สับสนและไม่สะดวก เบราว์เซอร์โค้ดบนเว็บขึ้นอยู่กับ HEAD เป็นพื้นฐานในการเรียกดูต้นไม้ ฉันต้องการ HEAD เพื่อชี้ไปที่สาขาที่ถูกต้องแล้ว

18
การย้ายจาก CVS ไปเป็น Git: $ Id $ equivalent?
ฉันอ่านคำถามมากมายเกี่ยวกับเครื่องมือควบคุมซอร์สโค้ดง่ายๆและ Git ดูเหมือนจะเป็นทางเลือกที่สมเหตุสมผล ฉันเปิดใช้งานและทำงานได้ดีจนถึงตอนนี้ สิ่งหนึ่งที่ฉันชอบเกี่ยวกับ CVS คือการเพิ่มหมายเลขเวอร์ชันโดยอัตโนมัติ ฉันเข้าใจว่าสิ่งนี้ไม่ค่อยสมเหตุสมผลในที่เก็บแบบกระจาย แต่ในฐานะนักพัฒนาฉันต้องการ / ต้องการอะไรแบบนี้ ให้ฉันอธิบายว่าทำไม: ฉันใช้ Emacs เป็นระยะ ๆ ฉันจะค้นหาไฟล์ต้นฉบับ Lisp เวอร์ชันใหม่สำหรับแพ็คเกจของบุคคลที่สาม สมมติว่าฉันมีไฟล์ foo.el ซึ่งตามส่วนหัวคือเวอร์ชัน 1.3 ถ้าฉันค้นหาเวอร์ชันล่าสุดและเห็นว่ามันคือ 1.143 หรือ 2.6 หรืออะไรก็ตามฉันรู้ว่าฉันค่อนข้างล้าหลัง ถ้าฉันเห็นแฮช 40 อักขระสองสามตัวแทนฉันจะไม่รู้ว่าอันไหนจะมาทีหลังหรือไม่รู้ว่ามันยาวเท่าไร ฉันจะเกลียดมันเป็นอย่างยิ่งถ้าฉันต้องตรวจสอบ ChangeLogs ด้วยตนเองเพื่อให้ทราบว่าฉันล้าสมัยแค่ไหน ในฐานะนักพัฒนาฉันต้องการขยายความเอื้อเฟื้อนี้ให้กับผู้คนที่ใช้ผลลัพธ์ของฉัน (และบางทีฉันอาจล้อเล่นว่าใครเป็นใคร แต่ขอทิ้งไว้สักครู่) ฉันไม่อยากจำที่จะต้องเพิ่มจำนวนแช่งตัวเองทุกครั้งหรือการประทับเวลาหรืออะไรทำนองนั้น นั่นเป็น PITA ที่แท้จริงและฉันรู้จากประสบการณ์ ฉันมีทางเลือกอะไรบ้าง? หากฉันไม่สามารถรับ $ Id: $ เทียบเท่าฉันจะให้สิ่งที่ฉันกำลังมองหาได้อย่างไร ฉันควรพูดถึงว่าความคาดหวังของฉันคือผู้ใช้ปลายทางจะไม่ได้ติดตั้ง Git และแม้ว่าพวกเขาจะทำ …

17
Github Windows 'ไม่สามารถซิงค์สาขานี้'
ฉันใช้ Github Windows 1.0.38.1 และเมื่อฉันคลิกปุ่ม 'ซิงค์' หลังจากกระทำฉันได้รับข้อผิดพลาด ฉันจะแก้ปัญหานี้ได้อย่างไร ถ้าอยู่ในกะลาต้องทำอย่างไร? การซิงค์จะทำงานได้ดีถ้าฉันทำgit pushหรือgit pullแต่ในครั้งต่อไปที่ฉันต้องการซิงค์โดยใช้หน้าต่าง Github ฉันได้รับข้อผิดพลาดเดียวกัน

5
รีเฟรชไฟล์ทั้งหมดในบัฟเฟอร์จากดิสก์ในกลุ่ม
คำสั่งในการรีเฟรชไฟล์จากเวอร์ชันบนดิสก์คือ :e! ฉันจะทำเช่นเดียวกันกับไฟล์ทั้งหมดในบัฟเฟอร์ได้อย่างไร ความเป็นมา: ฉันต้องการสิ่งนั้นเพราะฉันใช้ git กับหลายสาขาโดยเปิดเป็นกลุ่มเดียวที่มีบัฟเฟอร์ เมื่อฉันชำระเงินสาขาฉันต้องการรีเฟรชเป็นกลุ่ม
124 git  vim  buffer 

10
วิธีลบ blobs ที่ไม่ได้อ้างอิงจาก git repo ของฉัน
ฉันมี repo GitHub ที่มีสองสาขา - master & release สาขาการเผยแพร่มีไฟล์การแจกจ่ายไบนารีที่มีส่วนทำให้มีขนาด repo ที่ใหญ่มาก (> 250MB) ดังนั้นฉันจึงตัดสินใจที่จะล้างสิ่งต่างๆ ก่อนอื่นฉันลบสาขาการเผยแพร่ระยะไกลผ่านทาง git push origin :release จากนั้นฉันลบสาขาการเผยแพร่ในเครื่อง ก่อนอื่นฉันลองgit branch -d releaseแต่คอมไพล์แจ้งว่า"error:" release "branch ไม่ใช่บรรพบุรุษของ HEAD ปัจจุบันของคุณ" ซึ่งเป็นความจริงดังนั้นฉันจึงgit branch -D releaseบังคับให้ลบ แต่ขนาดพื้นที่เก็บข้อมูลของฉันทั้งในเครื่องและบน GitHub ก็ยังใหญ่มาก จากนั้นฉันก็วิ่งผ่านรายการคำสั่ง git ตามปกติเช่นgit gc --prune=today --aggressiveไม่มีโชค การทำตามคำแนะนำของ Charles Bailey ที่SO 1029969ฉันสามารถรับรายชื่อ SHA1 สำหรับกลุ่มที่ใหญ่ที่สุดได้ จากนั้นฉันใช้สคริปต์จากSO …
124 git 

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