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

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

3
จะใช้ Bitbucket และ GitHub พร้อมกันสำหรับโครงการเดียวได้อย่างไร?
ฉันมีที่เก็บหนึ่งที่ฉันต้องการส่งไปยัง Bitbucket และ GitHub เป็นสิ่งสำคัญสำหรับที่เก็บของฉันที่จะโฮสต์โดยทั้งสองอย่าง มีวิธีทำใน Git หรือไม่?
95 git  github  bitbucket 

3
การค้นหารหัสในสาขา GitHub เฉพาะ
ฉันพยายามค้นหาโค้ดบางส่วนในสาขาในที่เก็บ GitHub อย่างไรก็ตามสิ่งนี้บ่งชี้ว่าฉันสามารถค้นหาได้เฉพาะสาขาเริ่มต้นเท่านั้น มีวิธีค้นหาโค้ดในสาขาที่ไม่ใช่ค่าเริ่มต้นในที่เก็บ GitHub ของฉันหรือไม่
95 git  github 

2
วิธีอ่านกราฟบันทึกคอมไพล์
ในหนังสือชุมชนคอมไพล์กล่าวว่า สิ่งที่น่าสนใจอีกอย่างที่คุณสามารถทำได้คือแสดงภาพกราฟการกระทำด้วยตัวเลือก '--graph' ดังนี้: $ git log --pretty=format:'%h : %s' --graph * 2d3acf9 : ignore errors from SIGCHLD on trap * 5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit |\ | * 420eac9 : Added a method for getting the current branch. * | 30e367c : timeout code and tests * …

5
'git merge' มีรายละเอียดอย่างไร
ฉันต้องการทราบอัลกอริทึมที่แน่นอน (หรือใกล้เคียง) ที่อยู่เบื้องหลัง 'git merge' อย่างน้อยคำตอบสำหรับคำถามย่อยเหล่านี้จะเป็นประโยชน์: git ตรวจจับบริบทของการเปลี่ยนแปลงที่ไม่ขัดแย้งโดยเฉพาะได้อย่างไร คอมไพล์พบได้อย่างไรว่ามีความขัดแย้งในบรรทัดที่แน่นอนเหล่านี้? คอมไพล์อัตโนมัติผสานสิ่งใดบ้าง git ทำงานอย่างไรเมื่อไม่มีฐานร่วมสำหรับการรวมสาขา git ทำงานอย่างไรเมื่อมีหลายฐานสำหรับการรวมสาขา จะเกิดอะไรขึ้นเมื่อฉันรวมหลายสาขาพร้อมกัน อะไรคือความแตกต่างระหว่างกลยุทธ์การผสาน? แต่คำอธิบายของอัลกอริทึมทั้งหมดจะดีกว่ามาก
95 git  merge  conflict 

4
git stash เฉพาะสาขาหรือสำหรับที่เก็บทั้งหมด?
ฉันเข้าไปในสาขาและทำงานบางอย่าง ฉันอยากไปสาขาอื่น แต่ไม่อยากผูกมัดฉันก็git stashเลยทำ git checkout <otherbranch>แล้วฉันจะทำ ฉันได้ทำงานที่นั่นและเช่นเดียวกับในสาขาแรกฉันต้องการที่จะเปลี่ยนจากสาขานี้ก่อนที่จะเริ่มทำงาน ฉันก็เลยไปที่git stashนั่นด้วย ฉันเปลี่ยนกลับไปที่สาขาแรกและพยายามที่จะปลดมันออก ( git stash pop) คิดว่ามันจะได้ที่ซ่อนจากสาขานั้น ๆ ฉันรู้สึกประหลาดใจที่มันปลดการซ่อนจาก<otherbranch>(ซ่อนล่าสุด) ฉันรู้สึกว่าที่เก็บเฉพาะสาขา แต่พฤติกรรมนี้บ่งชี้ว่ามีเพียงที่เก็บเดียวสำหรับที่เก็บในเครื่องทั้งหมด เป็นgit stashสาขาที่เฉพาะเจาะจงหรือสำหรับพื้นที่เก็บข้อมูลทั้งหมด? ถ้าเป็นสำหรับที่เก็บทั้งหมดฉันสามารถส่งผ่านตัวเลือกไปยังที่เก็บเพื่อทำให้เฉพาะสาขาได้หรือไม่
95 git  git-stash 

4
.gitignore ไม่รวมไฟล์เฉพาะ
ฉันพยายามใช้.gitignoreไฟล์เพื่อแยกที่templates.jsอยู่ในpublic/app/โฟลเดอร์ .gitignoreไฟล์ของฉันมีลักษณะดังนี้: /vendor /node_modules composer.phar composer.lock .DS_Store templates.js แต่เมื่อฉันตรวจสอบใน Git Gui templates.jsไฟล์ยังคงแสดงอยู่ ฉันจะยกเว้นไฟล์โดยเฉพาะได้.gitignoreอย่างไร?
95 git  gitignore 

4
การบังคับที่เก็บ Git จาก GitHub เป็น GitLab
สมมติว่าฉันต้องการแก้ไขโครงการของคนอื่น โครงการนั้นอยู่บน GitHub ฉันสามารถสร้างทางแยกบน GitHub และดำเนินการแก้ไขได้ อย่างไรก็ตามฉันต้องการสร้างทางแยกบน GitLab แทนที่จะเป็น GitHub เป็นไปได้หรือไม่ อย่างไร? ฉันได้อ่านบทความนี้แล้ว: https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/ อย่างไรก็ตามฉันไม่แน่ใจว่าควรทำอย่างไรในกรณีของฉัน ฉันควรสร้างทางแยกบน GitLab ของโครงการจาก GitHub หรือไม่? หรือฉันควรสร้างมิเรอร์บน GitLab ของโครงการจาก GitHub? หรือฉันควรสร้างมิเรอร์บน GitLab แล้วแยกมิเรอร์? หรือฉันควรทำอะไรที่แตกต่างไปจากเดิมอย่างสิ้นเชิง? แนวทางที่ถูกต้องคืออะไร. ขอบคุณ. อัปเดต การมิเรอร์พื้นที่เก็บข้อมูลบน GitLab อาจไม่สมเหตุสมผล ฉันสามารถสร้างมิเรอร์ของที่เก็บ GitHub ของฉันบน GitLab ได้ แต่ฉันไม่สามารถสร้างมิเรอร์ของที่เก็บของคนอื่นได้ https://docs.gitlab.com/ee/workflow/repository_mirroring.html นี่คือสิ่งที่ฉันได้ทำไปแล้ว: ฉันได้โคลนโครงการ GitHub ดั้งเดิมไปยังเครื่องในพื้นที่ของฉันแล้ว ฉันได้ดำเนินการแก้ไขไปยังสาขาใหม่ในที่เก็บในเครื่องของฉัน ฉันได้สร้างโปรเจ็กต์เปล่าบน GitLab ฉันได้กำหนดจุดเริ่มต้นในที่เก็บในเครื่องของฉันเป็นโปรเจ็กต์ว่างบน GitLab …
95 git  github  gitlab  git-fork 

4
git branch -d ให้คำเตือน
แค่ต้องการทำความเข้าใจข้อความเตือนให้ดีขึ้นหลังจากที่ฉันลบสาขาในพื้นที่ คำเตือน: การลบสาขา'old_branch'ที่ได้รับรวม แต่ยังไม่ได้รวม'refs/remotes/origin/old_branch'HEAD
95 git 

6
ไม่สามารถเข้าถึง "git / attributes"
คำเตือนremote: warning: unable to access '/root/.config/git/attributes': Permission deniedหมายถึงอะไรและมีผลกระทบอะไรบ้าง? $git clone git://git.eclipse.org/gitroot/egit/egit.git Cloning into 'egit'... remote: warning: unable to access '/root/.config/git/attributes': Permission denied remote: Counting objects: 57926, done. remote: Compressing objects: 100% (11872/11872), done. remote: Total 57926 (delta 30734), reused 56308 (delta 29136) Receiving objects: 100% (57926/57926), 32.29 MiB | 1021 …
95 git 

6
ฉันจะใช้ git rebase โดยไม่ต้องกดบังคับได้อย่างไร
ในความพยายามที่จะบรรลุมรรคผลนิพพานฉันใช้เวลาทั้งวันในการเรียนรู้วิธีใช้ประโยชน์จาก rebase สำหรับสถานการณ์ที่ฉันรวมอยู่ในปัจจุบัน เมื่อเรียกใช้สิ่งที่ฉันคิดว่าเป็นขั้นตอน git 101 (ซึ่งฉันสะกดไว้ด้านล่าง) ฉันต้องทำpush --forceเมื่อผลักการเปลี่ยนแปลงกลับไปที่จุดเริ่มต้น ฉันไม่ใช่คนเดียว - ฉันรู้ว่าสิ่งนี้ถูกปกคลุมไปด้วยพื้น (ดู1 , 2 , 3 , 4 , 5 ) และฉันเข้าใจเหตุผลทางเทคนิคว่าทำไมต้องมีกองกำลัง ปัญหาของฉันคือ - มีรายการบล็อกจำนวนมาก (หลายรายการ) ที่ร้องเพลงสรรเสริญ rebase และการเปลี่ยนแปลงชีวิตของพวกเขา (ดู1 , 2 , 3 , 4เพื่อแสดงรายการบางส่วน) แต่ไม่มีรายการใดที่กล่าวถึงซึ่งpush --forceเป็นส่วนหนึ่งของ กระแสของพวกเขา อย่างไรก็ตามเกือบทุกคำตอบสำหรับคำถาม stackoverflow ที่มีอยู่จะบอกว่า "ใช่ถ้าคุณจะปรับฐานใหม่ก็ต้องใช้push --force" ได้รับหมายเลขและศาสนาประชาสัมพันธ์ rebase ที่ฉันต้องเชื่อว่าการใช้ 'ดัน --force' …
94 git  git-rebase 

3
รูปแบบเชิงลบทำงานอย่างไรใน. gitignore
ฉันกำลังพยายามใช้ไฟล์. gitignore ที่มีรูปแบบเชิงลบ (บรรทัดที่ขึ้นต้นด้วย!) แต่มันไม่ได้ผลตามที่ฉันคาดหวัง เป็นตัวอย่างเล็กน้อยฉันมีโครงสร้างไดเร็กทอรีต่อไปนี้: C:/gittest -- .gitignore -- aaa/ -- bbb/ -- file.txt -- ccc/ -- otherfile.txt และในไฟล์ gitignore ของฉันฉันมีสิ่งนี้: aaa/ !aaa/ccc/ ความเข้าใจของฉัน (ตามหน้าเอกสารนี้ ) คือไม่ควรละเลยไฟล์ aaa / ccc / otherfile.txt แต่ในความเป็นจริง git คือการละเว้นทุกอย่างภายใต้ aaa ฉันเข้าใจผิดประโยคนี้: "คำนำหน้าไม่บังคับ! ซึ่งลบล้างรูปแบบไฟล์ที่ตรงกันใด ๆ ที่ถูกยกเว้นโดยรูปแบบก่อนหน้านี้จะถูกรวมไว้อีกครั้ง"? BTW นี่คือบน Windows ที่มี msysgit 1.7.0.2
94 git  gitignore 

4
ฉันจะยกเลิกการคอมมิตสุดท้ายในที่เก็บ git bare ได้อย่างไร
โดยคำนึงว่ามีคำสั่ง git หลายคำสั่งที่ไม่สมเหตุสมผลในที่เก็บเปล่า (เนื่องจากที่เก็บเปล่าไม่ใช้ดัชนีและไม่มีไดเร็กทอรีการทำงาน) git reset --hard HEAD^ ไม่ใช่วิธีแก้ปัญหาในการยกเลิกการสั่งการเปลี่ยนแปลงล่าสุดในที่เก็บดังกล่าว ค้นหาผ่านอินเทอร์เน็ตทั้งหมดที่ฉันสามารถพบที่เกี่ยวข้องกับหัวข้อนี้คือสิ่งนี้ซึ่งฉันนำเสนอสามวิธีในการดำเนินการนี้: 1. "อัปเดตการอ้างอิงด้วยตนเอง 2. " git push -fจากที่เก็บที่ไม่เปลือย"; 3. " git branch -f this $that". วิธีแก้ปัญหาใดที่คุณคิดว่าเหมาะสมกว่าหรือมีวิธีใดอีกบ้างในการดำเนินการนี้ น่าเสียดายที่เอกสารที่ฉันพบเกี่ยวกับ git bare repository นั้นค่อนข้างแย่

12
เน้นเส้นที่เปลี่ยนแปลงและไบต์ที่เปลี่ยนแปลงในแต่ละบรรทัดที่เปลี่ยนแปลง
โครงการโอเพ่นซอร์สTracมีปากกาเน้นข้อความที่แตกต่างกัน - ไฮไลต์เส้นที่เปลี่ยนไปและไบต์ที่เปลี่ยนไปในแต่ละบรรทัดที่เปลี่ยนไป! ดูที่นี่หรือที่นี่สำหรับตัวอย่าง มีวิธีใช้ไฮไลต์สีเดียวกัน (เช่นเปลี่ยนเส้นและเปลี่ยนไบต์ด้วย ) ใน bash terminal gitหรือvim สำหรับ diff output (patch-file)?
94 git  vim  diff  highlight  word-diff 

3
ใช้คีย์การปรับใช้เดียวกันสำหรับโครงการ github หลายโครงการ
Github ไม่อนุญาตให้ใช้คีย์การปรับใช้ ssh เดียวกันสำหรับมากกว่าหนึ่งโปรเจ็กต์ซึ่งจะมีประโยชน์มากในบางกรณี (เช่นเซิร์ฟเวอร์ CI ที่จัดการกับโปรเจ็กต์ที่มีโมดูลย่อยส่วนตัว) ฉันเคยเห็นหัวข้อต่างๆที่ดูเหมือนจะบอกว่าข้อ จำกัด นี้มีไว้เพื่อ 'เหตุผลด้านความปลอดภัย' แต่ฉันยังไม่เห็นคำอธิบายที่น่าเชื่อถือเกี่ยวกับความเสี่ยงที่จะเพิ่มขึ้น โปรดทราบว่าข้อเท็จจริงที่ว่า Github ไม่อนุญาตให้นำคีย์ระดับบัญชีกลับมาใช้ก็สมเหตุสมผลแล้ว (ผู้ใช้สองคนไม่ควรแชร์คีย์) เป็นเพียงข้อ จำกัด ของDeploy Keysที่ฉันกำลังตั้งคำถาม และเพื่อความชัดเจนฉันไม่ได้มองหาวิธีแก้ปัญหา (สร้างผู้ใช้หลอกใช้หลายคีย์ ... ) แต่สำหรับคำอธิบายที่เป็นไปได้สำหรับข้อ จำกัด ของ Deploy Keys นี้เท่านั้น หัวข้อที่เกี่ยวข้อง: หนึ่งแสดงวิธีแก้ปัญหา คนหนึ่งคุยกันเรื่องนี้แต่ไม่ไปไหนจริงๆ
94 git  github  ssh 

3
คุณเพิกเฉยต่อโมดูลย่อย git ใน. gitignore ของคุณหรือผูกมัดกับ repo ของคุณหรือไม่?
ฉันได้เพิ่ม submodule กับโครงการของฉันในproject_dir/vendor/submodule_oneตอนนี้ทุกครั้งที่ผมทำงานที่ฉันได้รับgit statusmodified: vendor/submodule_one (new commits) คำถามของฉันคือวิธีที่ดีที่สุดในการจัดการกับปัญหานี้คืออะไร? ฉันเพิ่มvendor/submodule_one-folder .gitignoreเป็นโปรเจ็กต์หลักของฉันไม่จำเป็นต้องรู้เกี่ยวกับข้อมูลจำเพาะของโมดูลย่อยของฉันหรือไม่ หรือเมื่อฉันเปลี่ยนและยอมรับการเปลี่ยนแปลงโมดูลย่อยของฉันฉันจำเป็นต้องทำการคอมมิตในโปรเจ็กต์หลักของฉันด้วยหรือไม่ เพิ่งเริ่มต้นใช้งานโมดูลย่อยและดูเหมือนจะไม่พบข้อมูลมากไปกว่าการตั้งค่า
94 git 

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