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

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

12
วิธีที่ดีในการจัดการรายการเปลี่ยนแปลงโดยใช้คอมไพล์?
ฉันใช้ Git มาระยะหนึ่งแล้วและฉันเพิ่งเริ่มใช้เพื่อติดแท็กการเผยแพร่ของฉันเพื่อให้ฉันสามารถติดตามการเปลี่ยนแปลงได้ง่ายขึ้นและสามารถดูว่าลูกค้าของเราแต่ละคนกำลังทำงานอยู่ในเวอร์ชันใด ลูกค้าแต่ละคนมีสำเนาของเว็บไซต์ PHP ของตัวเองฉันเปลี่ยนมัน แต่มันช้าไป) ไม่ว่าในกรณีใดเรากำลังเริ่มสร้างแรงผลักดันบางอย่างฉันคิดว่ามันจะดีจริง ๆ ที่สามารถแสดงให้ผู้คนเห็นว่ามีอะไรเปลี่ยนแปลงไปตั้งแต่เปิดตัวครั้งล่าสุด ปัญหาคือฉันไม่ได้รักษาความเปลี่ยนแปลงเพราะฉันไม่มีความคิดที่ดีว่าจะทำอย่างไร สำหรับเวลานี้ฉันสามารถเรียกใช้ผ่านบันทึกและสร้างด้วยตนเอง แต่มันจะเหนื่อยมาก ฉันลองใช้ googling "git changelog" และ "git Manage changelog" แต่ฉันไม่พบสิ่งใดที่พูดถึงกระบวนการเวิร์กโฟลว์ของการเปลี่ยนแปลงโค้ดอย่างแท้จริงและวิธีการที่สอดคล้องกับการเปลี่ยนแปลงนั้น ขณะนี้เรากำลังติดตามเวิร์กโฟลว์การพัฒนาของ Rein Henrichและฉันจะรักสิ่งที่สอดคล้องกับสิ่งนั้น มีวิธีการมาตรฐานที่ฉันขาดหายไปหรือเป็นพื้นที่ที่ทุกคนทำสิ่งของตัวเอง? ขอบคุณมากสำหรับความเห็น / คำตอบของคุณ!
214 git  github  changelog 

9
จะดาวน์โหลดสาขาที่มีคอมไพล์ได้อย่างไร?
ฉันมีโครงการที่โฮสต์บน GitHub ฉันสร้างสาขาในคอมพิวเตอร์หนึ่งเครื่องจากนั้นผลักการเปลี่ยนแปลงของฉันไปที่ GitHub ด้วย: git push origin branch-name ตอนนี้ฉันอยู่ในคอมพิวเตอร์เครื่องอื่นและฉันต้องการดาวน์โหลดสาขานั้น ดังนั้นฉันจึงพยายาม: git pull origin branch-name ... แต่ทั้งหมดนี้ได้เขียนทับสาขาหลักของฉันด้วยการเปลี่ยนแปลงในสาขาใหม่ของฉัน ฉันต้องทำอย่างไรเพื่อดึงสาขาระยะไกลของฉันอย่างเหมาะสมโดยไม่ต้องเขียนทับสาขาที่มีอยู่
214 git  branch 

11
บันทึก Git เพื่อรับค่าคอมมิชชันสำหรับสาขาเฉพาะเท่านั้น
ฉันต้องการแสดงรายการการกระทำทั้งหมดที่เป็นส่วนหนึ่งของสาขาเฉพาะ ด้วยรายการต่อไปนี้จะแสดงรายการการกระทำทั้งหมดจากสาขา แต่ยังมาจากผู้ปกครอง (หลัก) git log mybranch ตัวเลือกอื่นที่ฉันพบคือยกเว้นข้อผูกพันที่อาจารย์เข้าถึงได้และให้สิ่งที่ฉันต้องการ แต่ฉันต้องการหลีกเลี่ยงความต้องการรู้ชื่อสาขาอื่น ๆ git log mybranch --not master ฉันพยายามใช้git for-each-refแต่ก็มีรายชื่อ mybranch ดังนั้นจริงๆแล้วมันไม่รวมทั้งหมด: git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/) ปรับปรุง: ฉันกำลังทดสอบตัวเลือกใหม่ที่ฉันพบเมื่อไม่นานมานี้และจนถึงตอนนี้ดูเหมือนว่านี่อาจเป็นสิ่งที่ฉันกำลังมองหา: git log --walk-reflogs mybranch อัปเดต (2013-02-13T15: 08): ตัวเลือก --walk-reflogs นั้นดี แต่ฉันตรวจสอบว่ามีการหมดอายุสำหรับ reflogs (ค่าเริ่มต้น 90 วัน, gc.reflogExpire ) ฉันคิดว่าฉันพบคำตอบที่ฉันกำลังมองหา: git log …
214 git 


9
คุณจะลบการแก้ไขเฉพาะในประวัติคอมไพล์ได้อย่างไร?
สมมติว่าประวัติคอมไพล์ของคุณเป็นดังนี้: 1 2 3 4 5 1–5 เป็นการแก้ไขแยกต่างหาก คุณต้องลบ 3 ในขณะที่ยังรักษา 1, 2, 4 และ 5 สิ่งนี้จะทำอย่างไร มีวิธีที่มีประสิทธิภาพหรือไม่เมื่อมีการแก้ไขหลายร้อยรายการหลังจากที่ลบไปแล้ว?
213 git 

4
วิธีการตั้งค่าโครงการคอมไพล์เพื่อใช้งาน repo submodule ภายนอก?
ฉันต้องการสร้าง repo ที่ดึงใน repo ระยะไกล ตัวอย่างเช่นสมมติว่า jQuery เป็น submodule: git://github.com/jquery/jquery.git สิ่งที่จะเป็นกระบวนการในการสร้าง repo ด้วย jQuery เป็น submodule และเพิ่ม external ของฉันเองเป็น repo ระยะไกล นอกจากนี้เมื่อมีการตั้งค่าถ้าฉันกด / ดึงที่รีโมทของฉันภายนอกจะยังคงอยู่หรือไม่

5
มีวิธีการ "เซ็นสัญญาอัตโนมัติ" ใน Git ด้วยรหัส GPG หรือไม่?
มีวิธีง่ายๆในการทำให้ Git ลงนามในแต่ละการกระทำหรือแท็กที่สร้างหรือไม่ ฉันลองกับสิ่งที่ชอบ: นามแฝงกระทำ = commit -S แต่นั่นไม่ได้ทำเคล็ดลับ ฉันไม่ต้องการติดตั้งโปรแกรมอื่นเพื่อให้สิ่งนี้เกิดขึ้น มันเป็นไปได้อย่างง่ายดาย? แค่คำถามข้างหนึ่งอาจไม่ควรเซ็นสัญญา แต่มีเพียงแท็กที่ฉันไม่เคยสร้างเพราะฉันส่งคอมมิทเดียวสำหรับโครงการเช่น Homebrew ฯลฯ

2
วิธีการคอมไพล์บันทึกจากทุกสาขาสำหรับผู้เขียนในครั้งเดียว?
ฉันต้องได้รับรายงานทุกข้อผูกพันที่ผู้เขียนทำ จนถึงตอนนี้ฉันมีสคริปต์ที่ล้อมคำสั่งต่อไปนี้: git log --pretty=format:"%ad:%an:%d:%B" --date=short --reverse --all --since=2.months.ago --author=Petr มันใช้งานได้ดี อย่างไรก็ตามจะรายงานเฉพาะการกระทำสำหรับสาขาปัจจุบัน มีตัวเลือกใดบ้างที่จะบันทึกข้อความการส่งข้อความสำหรับผู้แต่งจากทุกสาขาไม่เพียง แต่สร้างฟอร์มปัจจุบันเท่านั้น? กล่าวอีกนัยหนึ่งสามารถคอมไพล์ทำให้กลับเรียงลำดับ (ตามวันที่และเวลา) ของการกระทำทั้งหมดในพื้นที่เก็บข้อมูลและแยกข้อมูลบันทึกจากลำดับที่? แก้ไขแล้ว: (คัดลอกมาจากความคิดเห็นด้านล่างที่ถูกซ่อนไว้เป็นอย่างอื่น) ปัญหาคือฉันมีที่เก็บหนึ่งแห่งและที่เก็บโคลนสองแห่งเพื่อทำงานอย่างมั่นคงในสองสาขา ฉันผลักดันการเปลี่ยนแปลงไปยังที่เก็บต้นทาง แต่ฉันลืมเรียกการเปลี่ยนแปลงไปยังที่เก็บโคลน วิธีนี้ดูเหมือนว่า--allจะไม่ทำงานเมื่อใช้กับที่เก็บโคลน
213 git 

11
อะไร - ปฏิบัติจริง - ความแตกต่างระหว่างพื้นที่เก็บข้อมูลเปลือยและที่ไม่ใช่เปลือย?
ฉันได้อ่านเกี่ยวกับ repositores ที่เป็นค่าเริ่มต้นและไม่เปลือยใน Git แล้ว ฉันไม่สามารถเข้าใจได้ค่อนข้างดี (ในทางทฤษฎี) เกี่ยวกับความแตกต่างระหว่างพวกเขาและทำไมฉันควร "ดัน" ไปยังที่เก็บเปลือย นี่คือข้อตกลง: ขณะนี้ฉันเป็นคนเดียวที่ทำงานในโครงการบนคอมพิวเตอร์ 3 เครื่องที่แตกต่างกัน แต่จะมีคนเข้ามาเกี่ยวข้องมากกว่านี้ในภายหลังดังนั้นฉันจึงใช้ Git สำหรับการควบคุมเวอร์ชัน ฉันโคลน repo ที่เปลือยบนคอมพิวเตอร์ทุกเครื่องและเมื่อฉันเสร็จสิ้นการแก้ไขหนึ่งในนั้นฉันยอมรับและผลักดันการเปลี่ยนแปลงไปยัง repo ที่เปลือยเปล่า จากสิ่งที่ฉันได้อ่านพื้นที่เก็บข้อมูลเปลือยไม่มี "ต้นไม้ทำงาน" ดังนั้นหากฉันลอกแบบ repo เปล่าฉันจะไม่มี "ต้นไม้ทำงาน" ฉันเดาว่าต้นไม้ทำงานเก็บข้อมูลการกระทำสาขา ฯลฯ จากโครงการ ที่จะไม่ปรากฏใน repo เปลือย ดังนั้นจึงเป็นการดีกว่าสำหรับฉันที่จะ "ผลักดัน" ความมุ่งมั่นที่จะซื้อคืนต้นไม้ทำงาน จากนั้นทำไมฉันจึงควรใช้ที่เก็บเปลือยและทำไมไม่ ความแตกต่างในทางปฏิบัติคืออะไร นั่นจะไม่เป็นประโยชน์กับคนที่ทำงานในโครงการฉันคิดว่า คุณมีวิธีการอย่างไรสำหรับงานประเภทนี้? ข้อเสนอแนะ?
213 git  repository  git-bare 

5
. gitignore คืออะไร
ฉันเพิ่งสร้างที่เก็บ Github และสงสัยว่า.gitignoreไฟล์นี้มีไว้เพื่ออะไร ฉันเริ่มต้นด้วยการไม่สร้างหนึ่ง แต่เพิ่มที่หนึ่งเนื่องจากที่เก็บส่วนใหญ่มีหนึ่งแห่ง ฉันจำเป็นต้องมีหรือไม่ ฉันสามารถ / ไม่สนใจมันหรือใช้มันได้หรือไม่? ฉันค้นคว้าบางเรื่อง แต่ไม่สามารถหาคำอธิบายที่เป็นรูปธรรมได้
212 git  github  gitignore 

5
* โดยทั่วไปแล้ว * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
หากคุณกำลังจะสร้างโครงสร้างไดเรกทอรีที่ชื่อไดเรกทอรีสำหรับคอมมิชชันในที่เก็บ Git และคุณต้องการให้มันสั้นพอที่จะทำให้ดวงตาของคุณไม่ตก แต่นานพอที่โอกาสที่มันจะชนกัน จะน้อยมากจำเป็นต้องใช้สตริงย่อยของ SHA เป็นจำนวนเท่าใด สมมติว่าฉันต้องการระบุการเปลี่ยนแปลงนี้โดยไม่ซ้ำกัน: https://github.com/wycats/handlebars.js/commit/e62999f9ece7d9218b9768a908f8df9c11d7e920 ฉันสามารถใช้อักขระสี่ตัวแรกได้น้อย: https://github.com/wycats/handlebars.js/commit/e629 แต่ฉันรู้สึกว่าจะมีความเสี่ยง แต่ ssuming codebase ที่อาจใช้เวลาสองสามปี - กล่าวว่า - การเปลี่ยนแปลง 30k มีโอกาสที่จะเกิดการชนกันอย่างไรถ้าฉันใช้ตัวอักษร 8 ตัว? 12? มีจำนวนที่ถือว่าโดยทั่วไปยอมรับได้สำหรับสิ่งนี้หรือไม่?
212 git  github  sha 

3
Eclipse / EGit รับรู้ข้อมูลพื้นที่เก็บข้อมูลที่มีอยู่หลังจากการปรับปรุงได้อย่างไร
หลังจากอัปเกรด Eclipse จาก Helios เป็น Indigo ด้วยปลั๊กอิน EGit 1.0.0 โครงการของฉันทั้งหมดดูเหมือนจะสูญเสียข้อมูลเมตาของพวกเขาเกี่ยวกับที่เก็บ git ตามลำดับ ใน Helios ทุกโครงการ Eclipse เป็นที่เก็บ git ด้วยตัวมันเอง เมื่ออัปเดตเป็นอินดิโกฉันหวังว่าฉันจะสามารถใช้พื้นที่ทำงานจาก Helios ต่อไป หลังจากการอัพเดตโครงการทั้งหมดจะยังคงปรากฏในเวิร์กสเปซ และในแต่ละไดเรกทอรีโครงการยังคงมี.gitไดเรกทอรีย่อย แต่ Eclipse ดูเหมือนว่าจะปฏิบัติต่อแต่ละโครงการราวกับว่ามันไม่ใช่ที่เก็บ git ดังนั้นยังคงมีข้อมูลเมตา git ทั้งหมดในโฟลเดอร์โครงการ แต่ eclipse ไม่รู้จักพวกเขา มีวิธีการ "เปิดใช้" ฟังก์ชั่นคอมไพล์อีกหรือไม่
211 git  eclipse 

9
ฉันจะใช้ git-worktree เพื่ออะไร
ผมอ่านโพสต์บน Github Git-worktree พวกเขาเขียน: สมมติว่าคุณกำลังทำงานในพื้นที่เก็บข้อมูล Git ในสาขาที่เรียกว่าfeatureเมื่อผู้ใช้รายงานข้อบกพร่องเร่งด่วนสูงmasterมา ขั้นแรกให้คุณสร้างแผนผังการทำงานที่เชื่อมโยงกับสาขาใหม่hotfixเช็คเอาท์สัมพันธ์กับต้นแบบ […] คุณสามารถแก้ไขข้อบกพร่องผลักโปรแกรมแก้ไขด่วนและสร้างคำขอดึง เมื่อฉันทำงานในสาขาที่เรียกว่าฟีเจอร์และรายงานข้อผิดพลาดเร่งด่วนระดับสูงในต้นแบบฉันมักจะซ่อนสิ่งที่ฉันทำงานและสร้างสาขาใหม่ เมื่อฉันทำเสร็จฉันสามารถทำงานต่อได้ นี่เป็นแบบจำลองที่ง่ายมากฉันทำงานแบบนั้นมาหลายปีแล้ว ในทางกลับกันการใช้ git-worktree มีข้อ จำกัด ของตัวเอง: ตัวอย่างเช่นไม่อนุญาตให้มีการตรวจสอบสาขาเดียวกันในแผนผังการทำงานที่เชื่อมโยงสองอันในเวลาเดียวกันเพราะจะทำให้การเปลี่ยนแปลงที่กระทำในแผนผังการทำงานหนึ่งทำให้การเชื่อมต่ออื่นไม่ตรงกัน ทำไมฉันถึงต้องเลือกขั้นตอนการทำงานที่ซับซ้อนมากขึ้นสำหรับปัญหาที่ได้รับการแก้ไขแล้ว? มีอะไรที่เกี่ยวกับสิ่งgit-worktreeที่ไม่สามารถทำได้ล่วงหน้าและนั่นเป็นเหตุผลที่ทำให้คุณสมบัติใหม่ที่ซับซ้อนนี้ทั้งหมดใช่หรือไม่
211 git  git-worktree 

11
ฉันจะใช้ Notepad ++ (หรืออื่น ๆ ) กับ msysgit ได้อย่างไร
ฉันจะใช้ Notepad ++ (หรือตัวแก้ไขอื่น ๆ นอกจาก vim) กับ msysgit ได้อย่างไร ฉันพยายามต่อไปนี้ทั้งหมดโดยไม่มีประโยชน์: git config --global core.editor C:\Program Files\Notepad++\notepad++.exe git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe" git config --global core.editor C:/Program Files/Notepad++/notepad++.exe git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe

6
. gitignore หลังจากส่งมอบ
ฉันมีที่เก็บข้อมูลคอมไพล์โฮสต์บน Github หลังจากก่อไฟล์จำนวนมากฉันรู้ว่าฉันต้องสร้าง.gitignoreและยกเว้น.exe,.objไฟล์ อย่างไรก็ตามมันจะลบไฟล์ที่ได้รับมอบหมายเหล่านี้ออกจากพื้นที่เก็บข้อมูลโดยอัตโนมัติหรือไม่? มีวิธีการบังคับใด ๆ
210 git  github  gitignore 

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