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

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

4
เลือกเปลี่ยนกลับหรือชำระเงินการเปลี่ยนแปลงไฟล์ใน Git?
มีคำสั่งที่อนุญาตให้คุณเลิกทำการเปลี่ยนแปลงไฟล์บางส่วน (หรือไฟล์) ในไดเร็กทอรีการทำงานหรือไม่ สมมติว่าคุณได้แก้ไขไฟล์เป็นจำนวนมาก แต่คุณทราบดีว่าคุณต้องการเลิกทำการเปลี่ยนแปลงบางอย่างกลับสู่สถานะที่ได้รับการคอมมิต แต่ไม่ใช่การเปลี่ยนแปลงอื่น ๆ ฉันกำลังจินตนาการถึงตัวเลือกgit checkoutที่ใช้งานได้ดีเช่นgit add -pมันผ่านไฟล์ก้อนใหญ่และถามว่าคุณต้องการเก็บไว้หรือไม่
89 git 

4
ลบคอมไพล์คอมมิทเก่า ๆ
ฉันใหม่มากที่จะคอมไพล์และสงสัยว่าจะเป็นไปได้ไหม >git log --pretty=oneline --abbrev-commit 2f05aba Added new feature 3371cec Fixed screw up <-- I want to remove this daed25c Screw up <-- and remove this. e2b2a84 First. So it's like they never happend. เป็นไปได้หรือไม่
89 git 

6
ปัญหาการเข้ารหัสเอาต์พุตบันทึก git ในพรอมต์คำสั่งของ Windows 10
ปัญหา วิธีทำให้git logเอาต์พุตคำสั่งแสดงอย่างถูกต้องบนพรอมต์คำสั่งของ Windows ตัวอย่าง อย่างที่คุณเห็นฉันสามารถพิมพ์อักขระกำกับเสียงได้อย่างถูกต้อง แต่บนgit logเอาต์พุตจะมีการหลีกเลี่ยง ตามUTF-8ตารางการเข้ารหัสรหัสระหว่างวงเล็บเหลี่ยม ( <และ>) จากเอาต์พุตจะสอดคล้องกับgit configพารามิเตอร์ที่พิมพ์ไว้ก่อนหน้านี้ ฉันได้พยายามตั้งค่าLESSCHARSETตัวแปรสภาพแวดล้อมutf-8เป็นคำตอบสำหรับปัญหาที่คล้ายกันแต่ผลลัพธ์ก็อ่านไม่ออก: ฉันรู้ว่า.git/configเข้ารหัสอย่างถูกต้องutf-8ตามที่ได้รับการจัดการตามgitkที่คาดไว้ นี่คือlocaleเอาต์พุตคำสั่งหากจำเป็น LANG= LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_ALL= แก้ไข: ผลลัพธ์จะเหมือนกันในgit-bash : ดังนั้นฉันเชื่อว่าปัญหานั้นไม่ขึ้นกับเชลล์และเกี่ยวข้องกับ Git หรือการกำหนดค่าเอง

4
คำตำหนิที่แสดงว่าไม่มีประวัติ
เมื่อฉันเรียกใช้ git ตำหนิบนไฟล์ (โดยใช้ msysgit) ฉันมักจะได้รับงานพิมพ์ประเภทต่อไปนี้: 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 1) package co 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 2) { 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 3) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 4) impor 00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 …

4
Git แบบไม่กรอไปข้างหน้าถูกปฏิเสธ
ฉันรู้สึกว่ามีการถามคำถามนี้หลายครั้ง แต่โดยทั่วไปแล้ววิธีแก้ปัญหาคือ "ฉันลบไดเรกทอรีและดำเนินการใหม่โดยใช้การชำระเงินใหม่" ฉันได้กระทำและผลักดัน แต่ตระหนักว่าฉันอ้างถึงหมายเลขตั๋วผิดในข้อความคอมมิต ดังนั้นฉันจึงมองหา SO เพื่อหาวิธีแก้ปัญหาอย่างรวดเร็วและลงเอยด้วยการพิมพ์ข้อความต่อไปนี้ในเทอร์มินัล $ git reset --soft HEAD^ $ git commit -m "... correct message ..." ปัญหาเดียวคือฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for …

8
ที่เก็บ git ละเว้น. dlls ทั้งหมด
Title บอกทุกอย่าง ฉันกำลังพยายามเพิ่มแพ็คเกจ NuGet ของฉันไปยังที่เก็บ ทุกอย่างยกเว้นไฟล์. dll กำลังถูกตรวจพบ ไฟล์ gitignore ไม่มีการอ้างอิงถึง * .dll ไฟล์. dll ไม่ได้รับการยอมรับเมื่ออยู่ที่ใดก็ได้ในที่เก็บทั้งหมด ข้อมูล / ไม่รวมยังว่างเปล่า ฉันยังโคลนที่เก็บ (ระบบไฟล์ไปยังระบบไฟล์ซึ่งต่างจากรีโมตไปเป็นไฟล์ซิสเท็ม) โดยไม่มีโชค ปัญหานี้ยังเกิดขึ้นกับคอมพิวเตอร์สองเครื่องที่แตกต่างกัน ฉันสามารถเพิ่มไฟล์. dll ได้ด้วยตนเอง แต่ควรติดตาม ทำไมพวกเขาถึงไม่ถูกติดตาม?
88 git  gitignore 

12
เหตุใดฉันจึงไม่สามารถพุชทรีย่อย Git ที่เป็นปัจจุบันนี้ได้
ฉันใช้ทรีย่อย Git กับโปรเจ็กต์สองสามโปรเจ็กต์ที่ฉันกำลังทำอยู่เพื่อแชร์โค้ดพื้นฐานระหว่างกัน รหัสฐานได้รับการอัปเดตบ่อยครั้งและการอัปเกรดสามารถเกิดขึ้นได้ในทุกโครงการโดยทั้งหมดจะได้รับการอัปเดตในที่สุด ฉันพบปัญหาที่คอมไพล์รายงานว่าทรีย่อยของฉันเป็นเวอร์ชันล่าสุด แต่ดันถูกปฏิเสธ ตัวอย่างเช่น: #! git subtree pull --prefix=public/shared project-shared master From github.com:**** * branch master -> FETCH_HEAD Already up-to-date. ถ้าฉันดันฉันควรจะได้รับข้อความว่าไม่มีอะไรให้ผลักดัน ... ใช่ไหม? ขวา? :( #! git subtree push --prefix=public/shared project-shared master git push using: project-shared master To git@github.com:*** ! [rejected] 72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward) error: failed …
88 git  git-subtree 

2
เป็นไปได้ไหมที่จะ git-checkout บรรทัดเดียวแทนที่จะเป็นทั้งไฟล์
หากฉันแก้ไขไฟล์เวอร์ชันหลายบรรทัดเป็นไปได้ไหมที่จะเลิกทำการเปลี่ยนแปลงของบรรทัดตามบรรทัดคำสั่ง เช่นเดียวกับที่ฉันทำกับทั้งไฟล์ด้วย: git checkout /path/to/file.extension แต่ทำอะไรบางอย่างเช่นพูด git checkout /path/to/file.extension --line 10 เป็นไปได้ไหม
88 git  git-checkout 

4
Git pruning คืออะไร?
ฉันได้ตัดกิ่งที่ห่างไกลออกไปโดยไม่ได้ตั้งใจและฉันไม่รู้จริงๆว่าผลของสิ่งนี้คืออะไร (ฉันคลิกปุ่ม "พรุนกิ่งระยะไกล" ในส่วนขยาย Git โดยคิดว่ามันจะลบสาขาระยะไกล) เอกสารอย่างเป็นทางการระบุว่า "git-prune - ตัดวัตถุที่ไม่สามารถเข้าถึงได้ทั้งหมดออกจากฐานข้อมูลวัตถุ" ฉันไม่เข้าใจจริงๆว่านี่หมายถึงอะไร ฉันเดาว่านี่อาจจะลบสาขาที่ผสานออกไปแล้ว แต่ฉันไม่แน่ใจจริงๆ

3
ฉันจะกู้คืน / ซิงโครไนซ์ใหม่ได้อย่างไรหลังจากที่มีคนดัน rebase หรือรีเซ็ตไปยังสาขาที่เผยแพร่แล้ว
เราได้ยินว่าหนึ่งไม่ควรตีพิมพ์ rebase ทำงานว่ามันเป็นอันตราย ฯลฯ แต่ฉันไม่ได้เห็นสูตรใด ๆ ที่โพสต์สำหรับวิธีการจัดการกับสถานการณ์ที่เกิดขึ้นในกรณีที่ rebase ถูกตีพิมพ์ ตอนนี้โปรดทราบว่าสิ่งนี้เป็นไปได้จริง ๆ หากที่เก็บนั้นถูกโคลนโดยกลุ่มคนที่รู้จัก (และควรมีขนาดเล็ก) เท่านั้นดังนั้นใครก็ตามที่ผลักดันการปรับฐานหรือรีเซ็ตสามารถแจ้งให้ทุกคนทราบว่าพวกเขาจะต้องให้ความสนใจในครั้งต่อไป ดึง (!) วิธีแก้ปัญหาที่ชัดเจนวิธีหนึ่งที่ฉันได้เห็นจะใช้ได้ผลหากคุณไม่มีข้อผูกมัดในท้องถิ่นfooและได้รับการปรับใหม่: git fetch git checkout foo git reset --hard origin/foo สิ่งนี้จะทิ้งสถานะท้องถิ่นที่fooสนับสนุนประวัติศาสตร์ของมันตามที่เก็บระยะไกล แต่จะจัดการกับสถานการณ์ได้อย่างไรหากมีการเปลี่ยนแปลงในท้องถิ่นอย่างมากในสาขานั้น

3
ฉันจะใช้ Bash บน Ubuntu บน Windows (WSL) สำหรับ VS Code Terminal ได้อย่างไร
ในขณะที่คำถามอื่น ๆ เกี่ยวกับวิธีใช้สิ่งต่างๆเช่น git-bash การให้ WSL ใหม่หมุนเนื่องจากเทอร์มินัลสำหรับ VS Code ไม่เหมือนกัน: ช่วยให้คุณเข้าถึง bash ที่ทำงานบนระบบย่อย Ubuntu Linux จริงแทน git- bash terminal ทำงานบนระบบย่อยของ Windows ดังนั้นเราจะทำให้มันทำงานเป็นเทอร์มินัล VS Code ได้อย่างไรและโดยเฉพาะอย่างยิ่งเราจะทำให้มันทำงานเป็นเทอร์มินัลสภาพแวดล้อม dev ที่ใช้งานได้อย่างไร ซึ่งแตกต่างจาก git-bash แต่น่าเสียดายที่ไม่ง่ายอย่างที่คิดเนื่องจากการกำหนดค่า Ubuntu Linux ใน WSL สามารถให้ gotchas บางอย่างเช่น NPM พยายาม (และล้มเหลว) เพื่อเรียกใช้จากไดเร็กทอรี Windows Program Files ของคุณเนื่องจากการโต้ตอบระหว่าง WSL และ Windows ใน เงื่อนไขของการกำหนดเส้นทางและบางแพ็กเกจเช่น …


3
ฉันจะตรวจสอบเวอร์ชันหนึ่งของไฟล์ใน Git ได้อย่างไร
ฉันจะตรวจสอบเวอร์ชันหนึ่งของไฟล์ใน git ได้อย่างไร ฉันพบเมลนี้ในรายชื่อส่งเมลซึ่งระบุว่า: $ git checkout HEAD~43 Makefile $ git reset Makefile แต่ฉันไม่เข้าใจวิธีค้นหา 'HEAD ~ 43' ถ้าฉันทำ a ฉันจะgit log aFileรู้ได้อย่างไรว่า 'HEAD ~ 43' ใดที่ฉันควรใช้ แล้วทำไมต้องเรียกใช้git resetไฟล์นั้น มันทำอะไร?
88 git 

9
การตั้งค่าในการกำหนดค่า Git ของฉันมาจากไหน
ฉันสังเกตเห็นว่าฉันมีสองรายชื่อcore.autocrlfเมื่อฉันเรียกใช้git config -l $ git config -l core.symlinks=false core.autocrlf=false color.diff=auto color.status=auto color.branch=auto color.interactive=true pack.packsizelimit=2g help.format=html http.sslcainfo=/bin/curl-ca-bundle.crt sendemail.smtpserver=/bin/msmtp.exe diff.astextplain.textconv=astextplain rebase.autosquash=true user.name=name user.email=email@example.com core.autocrlf=true สามคนสุดท้าย (จาก user.name down) เป็นคนเดียวในC:\users\username\.gitconfigไฟล์ของฉัน คนอื่น ๆ มาจากไหน? เหตุใด core.autocrlf จึงปรากฏสองครั้ง นี่คือ MSysGit 1.8.3 และฉันติดตั้ง Sourcetree ด้วย (Windows 7) ใน Sourcetree ฉันได้ยกเลิกการเลือก "Allow Sourcetree to modified global Git …

5
ดูประวัติของไฟล์ใน Magit?
ดูประวัติการเปลี่ยนแปลงของไฟล์โดยใช้การกำหนดเวอร์ชัน Gitพูดถึงวิธีอื่น ๆ ในการดูประวัติการเข้าชมไฟล์ใน Git สามารถทำได้ใน Emacs Magit หรือไม่?
88 git  emacs  magit 

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