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

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


4
วิธีการแตกต่างระหว่างการเปลี่ยนแปลงที่ไม่เกิดกับท้องถิ่นและที่มา
สมมติว่าฉันโคลนที่เก็บและเริ่มแก้ไขไฟล์ ฉันรู้ว่าถ้าฉันมีการเปลี่ยนแปลงในท้องถิ่นที่ไม่มีข้อผูกมัดฉันสามารถทำ diff ต่าง ๆ ดังต่อไปนี้git diff test.txtและมันจะแสดงความแตกต่างระหว่าง HEAD ในปัจจุบันกับการเปลี่ยนแปลงที่ไม่มีการดัดแปลงในไฟล์ หากฉันยอมรับการเปลี่ยนแปลงเหล่านั้นฉันสามารถทำให้แตกต่างกับที่เก็บต้นฉบับโดยใช้git diff master origin/master แต่มีวิธีใดบ้างในการกระจายการเปลี่ยนแปลงในพื้นที่ด้วยที่เก็บต้นฉบับบนเซิร์ฟเวอร์ก่อนที่จะส่งข้อมูลภายใน ฉันลองใช้วิธีเรียงสับเปลี่ยนgit diff --cached master origin/masterโดยไม่มีโชค
141 git  git-diff 

12
ทำไมคลังเก็บคอมไพล์ของฉันถึงใหญ่มาก?
145M = .git / วัตถุ / แพ็ค / ฉันเขียนสคริปต์เพื่อเพิ่มขนาดของความแตกต่างของแต่ละการกระทำและการกระทำก่อนที่จะย้อนกลับจากปลายของแต่ละสาขา ฉันได้รับ 129MB ซึ่งไม่มีการบีบอัดและไม่มีบัญชีสำหรับไฟล์เดียวกันข้ามสาขาและประวัติทั่วไประหว่างสาขา Git คำนึงถึงสิ่งเหล่านั้นทั้งหมดดังนั้นฉันจึงคาดหวังที่เก็บข้อมูลที่มีขนาดเล็กกว่ามาก เหตุใด. git จึงใหญ่มาก ฉันเคยทำ: git fsck --full git gc --prune=today --aggressive git repack เพื่อตอบเกี่ยวกับจำนวนไฟล์ / คำสั่งฉันมี 19 สาขาเกี่ยวกับ 40 ไฟล์ในแต่ละไฟล์ 287 คอมมิตพบโดยใช้: git log --oneline --all|wc -l ไม่ควรใช้ 10 เมกะไบต์เพื่อเก็บข้อมูลเกี่ยวกับเรื่องนี้
141 git 

2
การดำเนินการคัดลอกไฟล์บันทึกด้วย Git
เมื่อฉันย้ายไฟล์ใน git โดยใช้ git-mv สถานะแสดงให้เห็นว่าไฟล์นั้นถูกเปลี่ยนชื่อและแม้ว่าฉันจะเปลี่ยนบางส่วนมันก็ยังถือว่าเกือบจะเหมือนกัน (ซึ่งดีเพราะมันทำให้ฉันติดตามประวัติของมัน) . เมื่อฉันคัดลอกไฟล์ไฟล์ต้นฉบับจะมีประวัติฉันต้องการเชื่อมโยงกับสำเนาใหม่ ฉันลองย้ายไฟล์แล้วลองเช็คเอาต์อีกครั้งในตำแหน่งเดิม - เมื่อย้ายคอมไพล์แล้วจะไม่ให้ฉันเช็คเอาต์ตำแหน่งเดิม ฉันลองคัดลอกระบบไฟล์แล้วเพิ่มไฟล์ - git แสดงว่าเป็นไฟล์ใหม่ มีวิธีใดที่จะทำให้คอมไพล์บันทึกการดำเนินการคัดลอกไฟล์ในทำนองเดียวกันกับวิธีบันทึกการเปลี่ยนชื่อ / ย้ายไฟล์โดยที่สามารถติดตามประวัติย้อนกลับไปยังไฟล์ต้นฉบับได้หรือไม่?
141 git  file  copy 

6
เปลี่ยน Drive ใน git bash สำหรับ windows
ผมพยายามที่จะนำทางไปยังสถานที่ไดรฟ์ของฉันE:/Study/Codesในgit bashหน้าต่าง ในพร้อมรับคำสั่งเพื่อที่จะเปลี่ยนไดรฟ์ผมใช้ก็จะส่งกลับข้อผิดพลาดในE:git bash bash: ไม่พบคำสั่ง E :: ฉันจะเปลี่ยนตำแหน่งไดเรกทอรีปัจจุบันของฉันจาก/c/usersเป็นE:Study/Codes
141 windows  git  git-bash 

18
gitignore ไม่มีไฟล์ไบนารี
ไฟล์ไบนารีสามารถถูกละเว้นในการgitใช้.gitignoreไฟล์ได้อย่างไร? ตัวอย่าง: $ g++ hello.c -o hello ไฟล์ "hello" เป็นไฟล์ไบนารี สามารถgitละเว้นไฟล์นี้ได้หรือไม่
141 git  gitignore 

6
Git Clone: ​​เพียงแค่ไฟล์โปรด?
ฉันต้องการโคลน repo GIT และไม่ท้ายด้วย.gitไดเรกทอรี ในคำอื่น ๆ ที่ฉันต้องการไฟล์ มีวิธีทำเช่นนี้หรือไม่? git clone --no-checkoutทำตรงข้ามกับสิ่งที่ฉันต้องการ (ให้.gitไดเรกทอรี) ฉันพยายามที่จะทำเช่นนั้นสำหรับrepo ระยะไกลไม่ใช่คนในพื้นที่ซึ่งหมายความว่านี่ไม่ใช่การซ้ำซ้อนของ " วิธีการทำ" ส่งออก git "(เช่น" ส่งออก svn ") " (แม้ว่าโซลูชันอาจจบลงด้วยการเป็น เหมือนกัน).
141 git 

1
Git เก็บ SHA1 ของการกระทำเพื่อ submodule ที่ไหน?
ฉันรู้ว่าเมื่อคุณเพิ่ม submodule ไปยังที่เก็บ git มันจะติดตามการกระทำเฉพาะของ submodule ที่อ้างอิงโดย sha1 ฉันกำลังพยายามหาที่เก็บค่า sha1 นี้ .gitmodulesและ.git/configไฟล์แสดงเฉพาะเส้นทางสำหรับ submodule แต่ไม่ sha1 ของการกระทำ การอ้างอิงgit-submodule (1)พูดถึงgitlinkรายการเท่านั้นและการอ้างอิง gitmodules (5)ไม่ได้พูดอะไรเกี่ยวกับเรื่องนี้เช่นกัน
141 git  git-submodules  sha 

4
สถานะ Git - มีวิธีแสดงการเปลี่ยนแปลงเฉพาะในไดเร็กทอรีเฉพาะหรือไม่?
ฉันต้องการดูรายการไฟล์ที่แก้ไขตั้งแต่การกระทำครั้งสุดท้ายตามที่git statusแสดง แต่ฉันสนใจเฉพาะไฟล์ที่อยู่ในไดเร็กทอรีเดียว มีวิธีทำไหม? ฉันลองgit status <directory>แล้ว แต่ดูเหมือนว่าจะมีบางอย่างที่แตกต่างไปจากเดิมอย่างสิ้นเชิง (แสดงรายการไฟล์ที่เปลี่ยนแปลงทั้งหมดเหมือนอย่างที่ฉันเขียนgit add <directory>ก่อน) เอกสารสำหรับ git-status ไม่ได้บอกอะไรมากนักนอกเหนือจากข้อเท็จจริงที่ว่ายอมรับตัวเลือกเดียวกับที่ git-comm ทำ (แต่จุดประสงค์ของ git-comm ไม่ได้แสดงรายการไฟล์ที่เปลี่ยนแปลง)
141 git  directory  status 

1
การติดตามโมดูลย่อยของคอมไพล์ล่าสุด
เรากำลังย้ายโปรเจ็กต์ (ขนาดใหญ่) ไปยังคอมไพล์และเรากำลังคิดที่จะใช้โมดูลย่อย แผนของเราคือการมีหัวหน้าที่แตกต่างกันสามแบบในโครงการซูเปอร์โปรเจ็กต์: การเปิดตัวเสถียรล่าสุด หัวหน้าโครงการจะจัดการกับสาขาที่ออกและมีเสถียรภาพ พวกเขาจะย้ายโมดูลย่อยตามต้องการ ประเด็นคือหัว "ล่าสุด" เราต้องการให้ส่วนหัว "ล่าสุด" ของ superproject ติดตามสาขาหลักของโมดูลย่อยทั้งหมด (โดยอัตโนมัติ) และจะเป็นการดีเช่นกันหากจะแสดงประวัติของการกระทำทั้งหมดกับโมดูลย่อย ฉันได้ดู gitslave แล้ว แต่มันไม่ใช่สิ่งที่เราต้องการ ข้อเสนอแนะใด ๆ ?

5
patch ใน git version control คืออะไร?
ฉันยังใหม่กับทั้ง git และการควบคุมเวอร์ชันดังนั้นฉันจึงพยายามหาว่าแพทช์คืออะไรและแตกต่างจากกิจกรรมอื่น ๆ ที่ฉันทำในคอมไพล์อย่างไร ฉันจะใช้แพทช์เมื่อใด เกิดขึ้นทุกครั้งที่กระทำหรือไม่?

8
ฉันสามารถทำให้ git รู้จักไฟล์ UTF-16 เป็นข้อความได้หรือไม่?
ฉันกำลังติดตามไฟล์เครื่องเสมือนพีซีเสมือน (* .vmc) ในคอมไพล์และหลังจากทำการเปลี่ยนแปลงคอมไพล์ระบุว่าไฟล์เป็นไบนารีและจะไม่แตกต่างกันสำหรับฉัน ฉันค้นพบว่าไฟล์ถูกเข้ารหัสใน UTF-16 สามารถสอนให้คอมไพล์ยอมรับว่าไฟล์นี้เป็นข้อความและจัดการได้อย่างเหมาะสมหรือไม่? ฉันใช้คอมไพล์ภายใต้ Cygwin โดยมี core.autocrlf ตั้งค่าเป็นเท็จ ฉันสามารถใช้ mSysGit หรือ git ภายใต้ UNIX หากจำเป็น

5
ฉันจะฟอร์แมตปะกับสิ่งที่ฉันซ่อนอยู่ได้อย่างไร
ในคอมไพล์ฉันซ่อนการเปลี่ยนแปลงของฉัน เป็นไปได้หรือไม่ที่ฉันจะสร้างแพตช์ด้วยสิ่งที่ฉันซ่อนเร้น? แล้วใช้ชุดข้อมูลแก้ไขนั้นในที่เก็บอื่น (เพื่อนร่วมงานของฉัน) บ้างไหม? ฉันรู้git format-patch -1แต่ฉันคิดว่ามันเป็นสิ่งที่ฉันมุ่งมั่น แต่ฉันกำลังมองหาสิ่งเดียวกันสำหรับการเปลี่ยนแปลงที่ฉันเก็บไว้ และฉันจะใช้โปรแกรมแก้ไขในที่เก็บอื่นได้อย่างไร
140 git  git-stash  git-patch 

18
ใช้. gignignore เพื่อละเว้นทุกสิ่งยกเว้นไดเรกทอรีเฉพาะ
ปัญหาของฉันคือฉันมีเว็บไซต์ WordPress มากมายใน repo คอมไพล์ของฉันซึ่งฉันต้องการเลือกเฉพาะเนื้อหาของฉัน themesโฟลเดอร์เท่านั้นโดยไม่สนใจไฟล์ที่เหลือที่เหลือใน WordPress ฉันเคยใช้ไฟล์. gignignore เพื่อเพิกเฉยต่อชนิดไฟล์ก่อนหน้านี้ แต่สามารถใช้วิธีอื่น ๆ ได้ไหมนั่นคือการข้ามทุกสิ่ง root (git repo) - / wordpress - - / (WordPress Site 1) / wp-content / themes - - / (WordPress Site 2) / wp-content / ธีม - - / (WordPress Site 3) / wp-content / ธีม Thanks- …
140 git  gitignore  glob 

2
ทำอย่างไรถึงจะได้ผู้ปกครองของการรวมกันคอมไพล์?
คำสั่ง git บางคำรับพาเรนต์เป็นการแก้ไข อื่น ๆ (เช่นgit revert) เป็นหมายเลขพาเรนต์ วิธีรับผู้ปกครองทั้งสองกรณี ฉันไม่ต้องการใช้คำสั่งบันทึกแบบกราฟิกเพราะมักจะต้องเลื่อนต้นไม้ลงเพื่อค้นหาพาเรนต์ที่สอง
140 git  merge 

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