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

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

9
ฉันจะกู้คืนจาก git push -f origin master ที่ผิดพลาดได้อย่างไร
ฉันเพิ่งระบุแหล่งที่มาที่ไม่ถูกต้องในโครงการของฉันโดยใช้--forceตัวเลือก สามารถเปลี่ยนกลับได้หรือไม่? ฉันเข้าใจว่าสาขาก่อนหน้านี้ทั้งหมดถูกเขียนทับโดยใช้-fตัวเลือกดังนั้นฉันอาจทำให้การแก้ไขครั้งก่อนของฉันเสียหาย

5
ฉันต้องทำ“ git pull” ก่อนหรือหลัง“ git add, git Commit” เมื่อใด
วิธีที่ถูกต้องคืออะไร? git add foo.js git commit foo.js -m "commit" git pull git push หรือ git pull git add foo.js git commit foo.js -m "commit" git push หรือ git add foo.js git pull git commit foo.js -m "commit" git push UPD: ฉันลืมพูดไปว่าในกรณีนี้ฉันใช้git addเพื่อจัดลำดับไฟล์ที่ติดตามและแก้ไข ไม่รวมไฟล์ใหม่เอี่ยมไปยังที่เก็บ สิ่งนี้เปลี่ยนลำดับของคำสั่งหรือไม่?
93 git 

3
จะกู้คืนไดเร็กทอรีทั้งหมดจากประวัติของที่เก็บ git ได้อย่างไร
ฉันต้องการกู้คืนไดเร็กทอรีทั้งหมด (เรียกซ้ำ) จากประวัติของที่เก็บ git ของฉัน มีเพียง 1 สาขา (หลัก) ฉันรู้ว่าข้อผิดพลาดรวมอยู่ที่ไหน ฉันสามารถใช้แฮช sha1 ของพาเรนต์คอมมิตเพื่อกู้คืนสถานะของไดเร็กทอรีเหมือนเดิมก่อนที่จะรวมข้อผิดพลาดได้หรือไม่ ฉันคิดเกี่ยวกับสิ่งนี้: git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/ แต่มันไม่ได้ผล
93 git 

3
git grep ตามนามสกุลไฟล์
ฉันรู้ว่าถ้าฉันต้องการ grep สำหรับรูปแบบเฉพาะในไฟล์ที่มีนามสกุลบางอย่างฉันสามารถทำได้: // searches recursively and matches case insensitively in only javascript files // for "res" from the current directory grep -iIr --include=*.js res ./ ฉันพยายามค้นหาวิธีทำสิ่งนี้ผ่าน git grep เช่นกัน (เพื่อใช้ประโยชน์จากความเร็วของ git grep จากดัชนีที่เก็บไว้กับทรี) แต่ก็ไม่มีประโยชน์ ฉันเห็นที่นี่ว่าไม่สามารถยกเว้นไฟล์บางประเภทได้

4
git rebase ผสานความขัดแย้ง
ฉันแยก github repo และทำงานกับ repo github ของฉัน ฉันได้ทำการดึงคำขอและมันก็เสร็จสมบูรณ์ หลังจากนั้นต้นน้ำก็มีความมุ่งมั่นมากขึ้นดังนั้นตอนนี้ฉันต้องการตั้งฐานใหม่ฉันเดาว่านั่นคือสิ่งที่ฉันต้องทำ แต่ฉันได้รับความขัดแย้งในการรวมเหล่านี้: First, rewinding head to replay your work on top of it... Applying: Issue 135 homepage refresh Using index info to reconstruct a base tree... <stdin>:17: trailing whitespace. %h4 warning: 1 line adds whitespace errors. Falling back to patching base and …
93 git  github  git-rebase 

5
git status -> แสดงไฟล์ที่จะเพิ่ม (จัดฉาก) ในไดเรกทอรีย่อย
สมมติว่าฉันเริ่มต้นที่เก็บ git ในโฟลเดอร์และฉันมีไดเร็กทอรีย่อยอยู่ในนั้น ฉันมีรูปแบบ globbing หลายแบบ.gitignoreเพื่อแยกไฟล์ในไดเร็กทอรีย่อย แต่เมื่อฉันทำgit status ก่อนที่ผมจะขั้นตอนอะไรสถานะคอมไพล์จะแสดงเฉพาะชื่อของโฟลเดอร์ย่อยที่จะถูกเพิ่มโดยไม่ต้องเฉพาะเจาะจงเกี่ยวกับการที่ไฟล์ในไดเรกทอรีย่อยแต่ละรายการจะถูกเพิ่ม (ฉาก) git add .ถ้าฉันทำ ที่น่าสนใจgit statusคือมีความชัดเจนเกี่ยวกับไฟล์ที่จะถูกคอมมิตหลังจากที่ฉันจัดทำไฟล์ด้วยgit add .. มีการขอgit statusให้ชัดเจนเกี่ยวกับไฟล์สำหรับไฟล์ที่จะจัดฉากหรือไม่?

3
สร้างคอนเทนเนอร์ Docker ใหม่เมื่อมีการเปลี่ยนแปลงไฟล์
สำหรับการเรียกใช้แอปพลิเคชัน ASP.NET Core ฉันได้สร้าง Dockerfile ซึ่งสร้างแอปพลิเคชันและคัดลอกซอร์สโค้ดในคอนเทนเนอร์ซึ่ง Git ดึงข้อมูลโดยใช้ Jenkins ดังนั้นในพื้นที่ทำงานของฉันฉันทำสิ่งต่อไปนี้ใน dockerfile: WORKDIR /app COPY src src ในขณะที่ Jenkins อัปเดตไฟล์บนโฮสต์ของฉันอย่างถูกต้องด้วย Git Docker จะไม่ใช้สิ่งนี้กับรูปภาพของฉัน สคริปต์พื้นฐานของฉันสำหรับการสร้าง: #!/bin/bash imageName=xx:my-image containerName=my-container docker build -t $imageName -f Dockerfile . containerRunning=$(docker inspect --format="{{ .State.Running }}" $containerName 2> /dev/null) if [ "$containerRunning" == "true" ]; then docker stop …

3
'git pull origin mybranch' ออกจาก mybranch N ในท้องถิ่นที่กระทำก่อนต้นกำเนิด ทำไม?
ฉันเพิ่งสังเกตเห็นบางอย่างแปลก ๆgit pullซึ่งฉันไม่เข้าใจ เมื่อวันศุกร์ฉันทำงานในสาขาในพื้นที่ mybranchขอเรียกว่า ก่อนที่จะออกจากสำนักงานฉันผลักไปยังต้นกำเนิด (ซึ่งเป็น repo GitHub git push origin mybranchของฉัน): เมื่อวานที่บ้านฉันpullแก้ไขสาขาของฉันลงในแล็ปท็อปของฉันทำการเข้ารหัสเพิ่มเติมจากนั้นจึงส่งการเปลี่ยนแปลงของฉันกลับไปที่ github (ต้นทาง) ตอนนี้ฉันกลับมาทำงานอีกครั้งและพยายามดึงการเปลี่ยนแปลงจากเมื่อวานไปยังเครื่องทำงานของฉัน (ฉันไม่ได้เปลี่ยนแปลงอะไรเลยใน repo ท้องถิ่นของที่ทำงานในช่วงสุดสัปดาห์): git pull origin mybranch ที่ทำให้เกิดการผสานไปข้างหน้าอย่างรวดเร็วซึ่งก็ใช้ได้ จากนั้นฉันก็ทำgit statusและมันบอกว่า: # On branch mybranch # Your branch is ahead of 'origin/mybranch' by 6 commits. # nothing to commit (working directory clean) ฮะ? จะเป็นไปได้อย่างไรที่จะกระทำ …

4
git-stash กับ git-branch
ในคำถาม Git ก่อนหน้านี้ Daniel Benamy กำลังพูดถึงขั้นตอนการทำงานใน Git: ฉันกำลังทำงานหลักและมุ่งมั่นบางอย่างจากนั้นก็ตัดสินใจว่าฉันต้องการพักงานนั้นไว้ ฉันสำรองข้อมูลไว้สองสามข้อแล้วแยกจากก่อนที่ฉันจะเริ่มงานอึ เขาต้องการฟื้นฟูสถานะการทำงานของเขาให้กลับสู่จุดเดิมโดยไม่สูญเสียการเปลี่ยนแปลงในปัจจุบัน คำตอบทั้งหมดวนเวียนอยู่ในรูปแบบต่างๆเช่น git branch -m master crap_work git branch -m previous_master master สิ่งนี้เปรียบเทียบกับgit stashอย่างไร? ฉันสับสนเล็กน้อยที่พยายามดูว่ากรณีการใช้งานที่แตกต่างกันที่นี่คืออะไรเมื่อดูเหมือนว่าทุกอย่างgit stashจะได้รับการจัดการโดยการแตกแขนง ... @ Jordi Bunster : ขอบคุณที่เคลียร์เรื่องต่างๆ ฉันเดาว่าฉันคิดว่า "การซ่อน" เป็นเหมือนกิ่งไม้ที่มีน้ำหนักเบาไม่มีชื่อ ดังนั้นสิ่งที่ซ่อนสามารถทำได้สาขาก็ทำได้เช่นกัน แต่มีคำอื่น ๆ ดี!
92 git 

3
ความแตกต่างระหว่าง 'git format-patch และ' git diff 'คืออะไร?
ฉันไม่เห็นความแตกต่างระหว่างผลลัพธ์ของ 'git format-patch' และ 'git diff' เลยมีไหม และฉันจะไม่สามารถใช้ 'git diff' เพื่อสร้างโปรแกรมแก้ไขแล้วใช้โดยใช้ git ได้หรือไม่? ปัญหาของฉันคือฉันได้เพิ่มการเปลี่ยนแปลงลงในดัชนี แต่ดูเหมือนว่า git format-patch จะยอมรับเฉพาะ commits ดังนั้นหากฉันสามารถใช้เอาต์พุตของ diff ได้ฉันก็สามารถใช้คำสั่งนี้เพื่อสร้างแพตช์สำหรับการเปลี่ยนแปลงในดัชนี: git diff --cached > index.patch
92 git  diff  patch 

3
คืนสาขารวมถึงลูก ๆ ทุกคน
ฉันมีโทโพโลยีที่เก็บ Git ต่อไปนี้: A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) โดยการเปลี่ยนfeatureสาขาใหม่ฉันคาดว่าจะสร้างฐานทรีย่อยใหม่ทั้งหมด (รวมถึงสาขาย่อย): $ git rebase feature master A-B-F (master) \ D (feature-a) \ / C (feature) \ E (feature-b) อย่างไรก็ตามนี่คือผลลัพธ์ที่แท้จริง: C' (feature) / A-B-F (master) \ D (feature-a) \ / C \ E (feature-b) ฉันรู้ว่าฉันสามารถแก้ไขได้อย่างง่ายดายด้วยตนเองโดยดำเนินการ: …

14
บัญชี Heroku หลายบัญชี
ฉันประสบปัญหาในการทำงานกับบัญชี Heroku หลายบัญชีบนคอมพิวเตอร์ของฉัน สิ่งนี้ก็คือมันใช้งานได้ดีมาก่อนโดยการสลับบัญชีกับอัญมณี heroku แต่ตอนนี้ (แม้ว่าฉันจะสร้างคีย์ SSH ใหม่แล้ว) มันจะไม่ทำงาน เมื่อฉันทำgit push heroku masterมันเพียงแค่พูดว่า: my@email.com ไม่ได้รับอนุญาตให้เข้าถึง my_app_name ใครมีคำแนะนำเกี่ยวกับวิธีแก้ปัญหานี้หรือไม่?
92 git  heroku 

6
เหตุใดการแตกแขนงและการรวมเข้าด้วยกันใน Mercurial จึงง่ายกว่าการโค่นล้ม?
การจัดการการผสานหลายรายการเข้ากับสาขาใน Subversion หรือ CVS เป็นเพียงหนึ่งในสิ่งเหล่านั้นที่ต้องมีประสบการณ์ การติดตามสาขาและการรวมใน Mercurial นั้นง่ายกว่ามาก (และอาจเป็นระบบกระจายอื่น ๆ ) แต่ฉันไม่รู้ว่าทำไม มีใครรู้บ้างไหม? คำถามของฉันเกิดจากข้อเท็จจริงที่ว่าด้วย Mercurial คุณสามารถใช้วิธีปฏิบัติในการทำงานที่คล้ายกับที่เก็บส่วนกลางของ Subversions / CVSs และทุกอย่างจะทำงานได้ดี คุณสามารถทำการผสานหลายรายการในสาขาเดียวกันและคุณไม่ต้องใช้เศษกระดาษที่ไม่มีที่สิ้นสุดพร้อมหมายเลขคอมมิตและชื่อแท็ก ฉันรู้ว่าเวอร์ชันล่าสุดของ Subversion มีความสามารถในการติดตามการผสานไปยังสาขาดังนั้นคุณจึงไม่ต้องยุ่งยากในระดับเดียวกัน แต่เป็นการพัฒนาที่ยิ่งใหญ่และสำคัญในฝั่งของพวกเขาและมันก็ยังไม่ทำทุกอย่างที่ทีมพัฒนาทำได้ ชอบที่จะทำ ต้องมีความแตกต่างพื้นฐานในวิธีการทำงานทั้งหมด

7
วิธีการกู้คืนวัตถุ Git ที่เสียหายจากความล้มเหลวของฮาร์ดดิสก์
ฉันมีความล้มเหลวของฮาร์ดดิสก์ซึ่งส่งผลให้ไฟล์บางไฟล์ของที่เก็บ Git เสียหาย เมื่อเรียกใช้git fsck --fullฉันจะได้รับผลลัพธ์ต่อไปนี้: error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129 error: inflate: data stream error (invalid code lengths set) error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129 error: inflate: data stream error (invalid stored block lengths) …

13
ฉันจะปรับใช้แอปของฉันโดยอัตโนมัติหลังจากการพุช git (GitHub และ node.js) ได้อย่างไร
ฉันมีแอปพลิเคชันของฉัน (node.js) ที่ใช้งานบน VPS (linux) ฉันใช้ git hub เป็นที่เก็บ ฉันจะปรับใช้แอปพลิเคชันโดยอัตโนมัติบน git push ได้อย่างไร
92 git  node.js  github  push  githooks 

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