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

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

6
คอมไพล์ดึงการเปลี่ยนแปลงในท้องถิ่น
ฉันจะอัปเดต (ดึง) โครงการ git อย่างปลอดภัยได้อย่างไรโดยไม่ต้องแตะต้องไฟล์ใดไฟล์หนึ่งแม้ว่าจะมีการเปลี่ยนแปลงอัปสตรีม myrepo / config / config.php มีวิธีหรือไม่แม้ว่าไฟล์นี้จะมีการเปลี่ยนแปลงในระยะไกลเมื่อฉัน git ดึงทุกอย่างอื่นมีการปรับปรุง แต่ไฟล์นี้ไม่เปลี่ยนแปลง (ไม่รวมแม้) PS ฉันต้องทำสิ่งที่ฉันขอเพราะฉันเขียนสคริปต์การปรับใช้ที่ใช้คอมไพล์เท่านั้น ฉันไม่สามารถเปลี่ยนไฟล์กำหนดค่าเป็นเทมเพลตได้ ดังนั้นฉันต้องการวิธีเขียนสคริปต์อัปเดตที่ไม่สูญเสียสิ่งที่เปลี่ยนแปลงในเครื่อง ฉันหวังว่าจะมีอะไรที่เรียบง่ายเหมือน: git assume-remote-unchanged file1 git assume-remote-unchanged file2 แล้วก็ git pull
132 git 

5
Git: ตั้งค่ารีโมตการดึงข้อมูลอย่างเดียวหรือไม่
เมื่อฉันทำงานgit remote -vในหนึ่งในที่เก็บ Git ของฉันที่มีการกำหนดค่ารีโมตฉันเห็นว่าแต่ละรีโมตมีทั้งการดึงและการกดสเปค: $ git remote -v <remote-name> ssh://host/path/to/repo (fetch) <remote-name> ssh://host/path/to/repo (push) สำหรับรีโมตที่ชี้ไปที่นักพัฒนาเพียร์ไม่จำเป็นต้องกดและ Git จะปฏิเสธที่จะผลักดันไปยังพื้นที่เก็บข้อมูลที่ไม่ได้เปลือยเลย มีวิธีใดที่จะกำหนดค่ารีโมทเหล่านี้เป็น "แบบดึงข้อมูลอย่างเดียว" โดยไม่มีที่อยู่หรือความสามารถในการพุช
132 git  workflow 

1
Atlassian "logo" หลังจากที่กดไปที่ bitbucket
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เมื่อผลักไปที่ bitbucket ฉันได้ "ภาพ" นี้มา นี่คืออะไร?
132 git  bitbucket 

3
git merge: ใช้การเปลี่ยนแปลงกับโค้ดที่ย้ายไปยังไฟล์อื่น
ตอนนี้ฉันกำลังพยายามผสมคอมไพล์ที่สวยมาก ปัญหาอย่างหนึ่งที่ฉันพบคือฉันได้ทำการเปลี่ยนแปลงรหัสบางอย่างในสาขาของฉัน แต่เพื่อนร่วมงานของฉันย้ายรหัสนั้นไปยังไฟล์ใหม่ในสาขาของเขา เมื่อฉันทำเช่นgit merge my_branch his_branchนั้นคอมไพล์ไม่ได้สังเกตว่าโค้ดในไฟล์ใหม่นั้นเหมือนกับโค้ดเก่าและไม่มีการเปลี่ยนแปลงใด ๆ ของฉันเลย วิธีใดที่ง่ายที่สุดในการใช้การเปลี่ยนแปลงของฉันอีกครั้งกับโค้ดในไฟล์ใหม่ ฉันจะไม่มีปัญหามากเกินไปในการค้นหาว่าต้องนำคอมมิตใดมาใช้ใหม่ (ฉันสามารถใช้ได้git log --stat) แต่เท่าที่ฉันสามารถบอกได้ว่าไม่มีวิธีใดที่จะรับ git เพื่อนำการเปลี่ยนแปลงไปใช้กับไฟล์ใหม่อีกครั้ง สิ่งที่ง่ายที่สุดที่ฉันเห็นในตอนนี้คือการใช้การเปลี่ยนแปลงซ้ำด้วยตนเองซึ่งดูเหมือนจะไม่ใช่ความคิดที่ดี ฉันรู้ว่า git รู้จัก blobs ไม่ใช่ไฟล์ดังนั้นต้องมีวิธีที่จะบอกได้อย่างแน่นอน "ใช้การเปลี่ยนแปลงโค้ดที่แน่นอนจากคอมมิตนี้ยกเว้นไม่ได้อยู่ที่ไหน แต่ตอนนี้อยู่ที่ไหนในไฟล์ใหม่นี้"
132 git 

5
จะแสดงบันทึกของไฟล์ที่เปลี่ยนชื่อด้วย git ได้อย่างไร?
ฉันค่อนข้างใหม่กับคอมไพล์ฉันเคยใช้ Subversion มาก่อน ฉันสังเกตเห็นว่าส่วนหน้าของคอมไพล์กราฟิกและปลั๊กอิน IDE ส่วนใหญ่ดูเหมือนจะไม่สามารถแสดงประวัติของไฟล์ได้หากไฟล์ถูกเปลี่ยนชื่อ เมื่อฉันใช้ git log --follow ในบรรทัดคำสั่งฉันเห็นบันทึกทั้งหมดในการเปลี่ยนชื่อ จากข้อมูลของ Linus Torvaldsสวิตช์ --follow เป็นคำสั่ง "SVN noob" ผู้ใช้คอมไพล์ที่จริงจังไม่ได้ใช้: --follow เป็นแฮ็คทั้งหมดที่มีขึ้นเพื่อตอบสนองผู้ใช้อดีต SVN ที่ไม่เคยรู้อะไรเกี่ยวกับสิ่งต่างๆเช่นความเป็นพ่อแม่หรือกราฟการแก้ไขที่ดีเลย มันไม่ได้เป็นพื้นฐานโดยสิ้นเชิง แต่การใช้งาน "--follow" ในปัจจุบันเป็นสิ่งที่ช่วยประมวลผลล่วงหน้าอย่างรวดเร็วที่ยึดติดกับตรรกะการเดินการแก้ไขแทนที่จะเป็นอะไรที่สำคัญจริงๆ มันได้รับการออกแบบให้เป็น "SVN noob" อย่างแท้จริงไม่ใช่เป็น "ฟังก์ชันคอมไพล์จริง" แนวคิดก็คือคุณจะหลีกหนีจากความคิด (เสีย) ที่คิดว่าการเปลี่ยนชื่อมีความสำคัญในภาพรวม คำถามของฉัน : ผู้ใช้คอมไพล์ฮาร์ดคอร์ในหมู่คุณจะได้รับประวัติของไฟล์อย่างไรเมื่อถูกเปลี่ยนชื่อ? วิธีที่ 'จริง' ในการทำเช่นนี้คืออะไร?
132 git 

3
การรวม 2 สาขาเข้าด้วยกันใน GIT
ฉันเพิ่งเริ่มใช้ GIT และคิดว่ามันยอดเยี่ยม แต่ฉันก็สับสนเล็กน้อยว่าmergeคำสั่งทำอะไร สมมติว่าเรามีโครงการทำงานในสาขา "A" ฉันกลับบ้านและทำการเปลี่ยนแปลงสาขานี้และบันทึกเป็น "B" โปรแกรมเมอร์คนอื่นทำการเปลี่ยนแปลง "A" และบันทึกเป็น "C" มีวิธีการรวมสองสาขา "B" และ "C" เข้าด้วยกันจากนั้นยอมรับการเปลี่ยนแปลงเป็นสาขาใหม่โดยพูดว่า "D" หรือไม่? หรือฉันพลาดจุด "รวม"?
132 git  merge  commit 

7
ฉันจะ 'git diff' บนไดเร็กทอรีบางไดเร็กทอรีได้อย่างไร
git diffเรียกใช้งานที่แตกต่างกันในซอร์สโค้ดทั้งหมด ฉันจะทำสิ่งนี้ในไดเร็กทอรีบางไดเร็กทอรีเพื่อให้สามารถดูการแก้ไขไฟล์ที่อยู่ด้านล่างได้อย่างไร
132 git 

1
ฉันจะ git rebase คอมมิตแรกได้อย่างไร
ฉันเคยgit initสร้าง repo ใหม่จากนั้นทำสามคอมมิต ตอนนี้ฉันต้องการ rebase เพื่อกลับไปแก้ไขคอมมิตแรกของฉัน แต่ถ้าฉันทำgit rebase -i HEAD~3มันจะบ่น! ถ้าฉันลองเหมือนกันHEAD~2มันก็ใช้ได้ แต่ให้ฉันจัดเรียงคอมมิตสองครั้งสุดท้ายเท่านั้น ฉันจะอ้างถึง 'การกระทำก่อนที่จะมีการกระทำใด ๆ ' ได้อย่างไรหรือย้อนกลับและแทรกการกระทำที่ว่างเปล่า
132 git  git-rebase 

7
วิธีลบคอมมิตขาออกที่ไม่ได้รับการขัดจังหวะใน Visual Studio
ฉันดันการเปลี่ยนแปลงแบบทีละขั้นในสาขาใหม่ใน Visual Studio 2017 ไปยังที่เก็บในเครื่องของฉันโดยบังเอิญ ไม่ได้ถูกพุชไปยังที่เก็บระยะไกล ฉันต้องการกำจัดมัน แต่หาวิธีทำไม่ได้ ฉันเปลี่ยนจากสาขาหลักในพื้นที่เป็นสาขาใหม่ จากนั้นฉันก็ลบสาขาใหม่ แต่การกระทำที่ส่งออกยังคงแสดงอยู่ จะลบหรือเปลี่ยนกลับได้อย่างไร?

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

4
Git rebase merge ขัดแย้งไม่สามารถดำเนินการต่อได้
ฉันพยายาม rebase 'dev' เพื่อให้ทันกับสาขา 'master' $ git checkout dev $ git rebase master First, rewinding head to replay your work on top of it... Applying: Corrected compilation problems that came from conversion from SVN. Using index info to reconstruct a base tree... M src/com/.... <stdin>:125: trailing whitespace. /** <stdin>:126: trailing …
131 git  git-rebase 

6
ไม่สามารถผลักดันไปยังสาขาหลังจากรีบูต
เราใช้คอมไพล์และมีสาขาหลักและสาขานักพัฒนาซอฟต์แวร์ ฉันต้องเพิ่มฟีเจอร์ใหม่แล้วจึงทำการ rebit to master จากนั้นพุช master ไปที่เซิร์ฟเวอร์ CI ปัญหาคือว่าถ้าฉันมีข้อขัดแย้งระหว่างการรีบูตฉันไม่สามารถผลักดันไปยังสาขานักพัฒนาซอฟต์แวร์ระยะไกลของฉัน (บน Github) หลังจากการรีบูตเสร็จสมบูรณ์จนกว่าฉันจะดึงสาขาระยะไกลของฉัน ทำให้การกระทำที่ซ้ำกัน เมื่อไม่มีความขัดแย้งทำงานตามที่คาดไว้ คำถาม: หลังจากการรีบูตและการแก้ไขข้อขัดแย้งฉันจะซิงค์สาขานักพัฒนาซอฟต์แวร์ในพื้นที่และระยะไกลได้อย่างไรโดยไม่ต้องสร้างการคอมมิทซ้ำ ติดตั้ง: // master branch is the main branch git checkout master git checkout -b myNewFeature // I will work on this at work and at home git push origin myNewFeature // work work …

10
ไม่สามารถส่งไปยัง Heroku ได้เนื่องจากลายนิ้วมือที่สำคัญ
ฉันยังใหม่กับ Rails และฉันพยายามปรับใช้แอพที่เรียบง่ายมากกับ Heroku นี่เป็นแอพที่สองที่ฉันปรับใช้และเป็นแอพแรกที่ฉันทำได้ดี อย่างไรก็ตามฉันมีปัญหาบางอย่างกับสิ่งนี้ เมื่อใดก็ตามที่ฉัน " git push heroku master " ฉันได้รับข้อผิดพลาดนี้: ! รหัสของคุณที่มีลายนิ้วมือ xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx ไม่ได้รับอนุญาตให้> เข้าถึง my_heroku_app ถึงแก่ชีวิต: ปลายรีโมทวางสายโดยไม่คาดคิด ฉันได้พยายามจัดการคีย์ของฉันหลังจากเข้าสู่ระบบ heroku หากฉันพิมพ์ " heroku keys " ในคอนโซลของฉันฉันจะได้รับ: ไม่มีคีย์สำหรับ myemailaddress อย่างไรก็ตามหากฉันเรียกใช้ comand " …
131 git  heroku  ssh  git-push 

7
แยกและซิงโครไนซ์ที่เก็บ Google Code Subversion ลงใน GitHub
ฉันจะแยกและซิงค์กับที่เก็บ Google Code Subversion ที่ฉันไม่มีสิทธิ์เขียนลงในที่เก็บ GitHub ได้อย่างไร ฉันต้องการที่จะพัฒนาคุณลักษณะของตัวเองในที่เก็บ Git ของฉัน แต่ฉันก็ต้องการซิงโครไนซ์กับที่เก็บ Google Code Subversion เพื่อดึงการแก้ไขจากฝั่งโครงการ Google Code ฉันรู้เกี่ยวกับ git-svn และเคยใช้มาก่อนเพื่ออัพและดาวน์สตรีมไปยังที่เก็บการโค่นล้มฉันสามารถควบคุมได้ทั้งหมด แต่ฉันไม่รู้ว่าจะซิงค์กับที่เก็บ Google Code Subversion อย่างไร
131 svn  git  github 

2
จะอ้างอิงการกระทำเริ่มต้นได้อย่างไร?
ฉันมีสคริปต์ที่ต้องอ้างอิงการกระทำเริ่มต้นในที่เก็บ คอมไพล์ที่มีการอ้างอิงพิเศษแต่ไม่ได้มีความสอดคล้องกันHEAD TAILฉันไม่พบสิ่งใดgit help rev-parseที่ดูเหมือนจะช่วยฉันได้ นี่คือสิ่งที่ฉันต้องการทำ: git show TAIL นี่คือทางเลือกหนึ่งที่ฉันมี: git show `git log --reverse | if read a commit ; then echo $commit ; fi` มันค่อนข้างแฮ็คและขึ้นอยู่กับผลลัพธ์ของบันทึก git ที่ไม่เปลี่ยนแปลง ตอนนี้ฉันแค่แท็กคอมมิตเริ่มต้นและใช้มันเป็น refspec ของฉัน อย่างไรก็ตามฉันต้องการเปิดตัวเครื่องมือทั่วไปดังนั้นจึงไม่ใช่ตัวเลือกที่ดี
131 git  git-commit 

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