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

git-svn เป็นสะพานสองทิศทางระหว่าง git และ Subversion ที่อนุญาตให้ใช้ที่เก็บ Subversion ระยะไกลเป็นที่เก็บ Git ในเครื่องในขณะที่ยังสามารถส่งการเปลี่ยนแปลงกลับไปยัง Subversion ได้

30
ฉันจะย้ายที่เก็บ SVN พร้อมประวัติไปยังที่เก็บ Git ใหม่ได้อย่างไร
ฉันอ่านคู่มือ Git, คำถามที่พบบ่อย, Git - SVN crash course ฯลฯ และพวกเขาทั้งหมดอธิบายสิ่งนี้และสิ่งนั้น แต่ไม่มีที่ไหนที่คุณจะพบคำแนะนำง่ายๆเช่น: ที่เก็บ SVN ใน: svn://myserver/path/to/svn/repos ที่เก็บ Git ใน: git://myserver/path/to/git/repos git-do-the-magic-svn-import-with-history \ svn://myserver/path/to/svn/repos \ git://myserver/path/to/git/repos ฉันไม่คาดหวังว่ามันจะง่ายขนาดนั้นและฉันไม่คาดหวังว่ามันจะเป็นคำสั่งเดียว แต่ฉันคาดหวังว่ามันจะไม่พยายามอธิบายอะไร - เพียงแค่บอกว่าขั้นตอนที่ต้องทำในตัวอย่างนี้

12
ไม่มีการขึ้นบรรทัดใหม่ท้ายไฟล์
เมื่อทำgit diffมันบอกว่า"ไม่มีการขึ้นบรรทัดใหม่ที่จุดสิ้นสุดของไฟล์" "ไม่มีการขึ้นบรรทัดใหม่ในตอนท้ายของไฟล์" ตกลงไม่มีบรรทัดใหม่ที่ท้ายไฟล์ เรื่องใหญ่อะไร ข้อความสำคัญอะไรและมันพยายามบอกอะไรเรา
472 git  git-svn 

9
ดูการเปลี่ยนแปลงในไฟล์ที่ระบุโดยใช้ git
ฉันรู้ว่าฉันสามารถใช้git diffคำสั่งเพื่อตรวจสอบการเปลี่ยนแปลง แต่เท่าที่ฉันเข้าใจมันเป็นไดเรกทอรีตาม ซึ่งหมายความว่าจะให้การเปลี่ยนแปลงทั้งหมดของไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน ฉันจะตรวจสอบเฉพาะการเปลี่ยนแปลงในไฟล์เดียวได้อย่างไร ไฟล์พูดว่าฉันมีการเปลี่ยนแปลงfile_1.rb, file_2.rb, ... , แต่ผมสนใจเฉพาะในการเปลี่ยนแปลงในแฟ้มfile_N.rb file_2.rbฉันจะตรวจสอบการเปลี่ยนแปลงเหล่านี้ได้อย่างไร (ก่อนที่จะส่งมอบ)
472 git  git-svn 

17
ผลักดันที่เก็บ Git ที่มีอยู่ไปยัง SVN
ฉันทำงานทั้งหมดของฉันใน Git และผลักดันให้ GitHub ฉันมีความสุขมากกับทั้งซอฟต์แวร์และเว็บไซต์และฉันไม่ต้องการเปลี่ยนวิธีการทำงานของฉันในตอนนี้ อาจารย์ที่ปรึกษาระดับปริญญาเอกของฉันขอให้นักเรียนทุกคนทำงานในที่เก็บ SVN ที่โฮสต์อยู่ที่มหาวิทยาลัย ฉันได้พบเอกสารและแบบฝึกหัดมากมายเกี่ยวกับการดึงที่เก็บ SVN ที่มีอยู่ลงใน Git แต่ไม่มีอะไรเกี่ยวกับการผลักดันที่เก็บ Git ไปยังที่เก็บ SVN ใหม่ ฉันคาดหวังว่าจะต้องมีวิธีในการทำเช่นนี้ด้วยการผสมผสานของ git-svn และสาขาที่สดใหม่และการลดราคาและเงื่อนไขที่ยอดเยี่ยมทั้งหมด แต่ฉันเป็นมือใหม่ Git และไม่รู้สึกมั่นใจกับพวกเขาเลย จากนั้นฉันต้องการเรียกใช้คำสั่งสองสามคำสั่งเพื่อส่งไปยังที่เก็บ SVN เมื่อฉันเลือก ฉันต้องการใช้ Git ต่อไปและเพียงแค่มีที่เก็บ SVN ใน Git ฉันจะเป็นคนเดียวที่เคยยอมรับกับ SVN หากสิ่งนี้สร้างความแตกต่าง
384 svn  git  git-svn 

3
วิธีการ git-svn โคลน n แก้ไขครั้งล่าสุดจากพื้นที่เก็บข้อมูลการโค่นล้ม?
ปัญหา คุณจะสร้างสำเนาตื้น ๆ ด้วย git-svn จากแหล่งเก็บข้อมูลการโค่นล้มได้อย่างไรเช่นคุณจะดึงเฉพาะการแก้ไขสามครั้งล่าสุดได้อย่างไร git cloneคำสั่งจะได้รับการแก้ไข n ที่ผ่านมาจากที่เก็บ Git ถ้าคุณใช้ตัวเลือก--depthคือคุณได้รับสำเนาตื้นของพื้นที่เก็บข้อมูล ตัวอย่าง: git clone --depth 3 git://some/repo myshallowcopyrepo มีตัวเลือกที่คล้ายกันสำหรับ git-svn? การค้นพบของฉันจนถึงตอนนี้ จนถึงตอนนี้ฉันเพิ่งพบ-rNตัวเลือกที่Nจะแก้ไขการดึง ตัวอย่าง: git svn clone -rN svn://some/repo -r$REVNUMBER:HEADตามเอกสารที่มีความเป็นไปได้ที่จะใช้ ฉันลองทำสิ่งต่อไปนี้เพื่อรับการแก้ไข 3 ครั้งล่าสุดซึ่งส่งคืนข้อความแสดงข้อผิดพลาด $ git svn clone --prefix=svn/ -s -rHEAD~3:HEAD http://some/svn/repo . revision argument: HEAD~3:HEAD not understood by git-svn ดังนั้นฉันจึงแทนที่HEAD~3ด้วยจำนวนจริงของการแก้ไขครั้งที่สาม …

2
วิธีลบต้นกำเนิดออกจากที่เก็บ git
คำถามพื้นฐาน: ฉันจะยกเลิกการเชื่อมโยง repo git จากแหล่งที่มาที่ถูกโคลนได้อย่างไร git branch -a แสดงให้เห็นว่า: * master remotes/origin/HEAD -> origin/master และฉันต้องการลบความรู้เกี่ยวกับแหล่งกำเนิดและการแก้ไขที่เกี่ยวข้องทั้งหมด คำถามอีกต่อไป: ฉันต้องการใช้ repo การโค่นล้มที่มีอยู่และสร้าง repos git จำนวนน้อยจากนั้น repos git ใหม่แต่ละอันควรมีประวัติเต็มของสาขาที่เกี่ยวข้องเท่านั้น ฉันสามารถตัด repo เป็นทรีย่อยที่ต้องการโดยใช้: git filter-branch --subdirectory-filter path/to/subtree HEAD แต่ธุรกรรมซื้อคืนที่เกิดขึ้นยังคงมีการแก้ไขทรีย่อยที่ถูกทิ้งไปทั้งหมดภายใต้สาขาต้นทาง / ต้นแบบ ฉันรู้ว่าฉันสามารถใช้แฟล็ก -T เพื่อ git-svn เพื่อโคลนทรีย่อยที่เกี่ยวข้องของ repo การโค่นล้มในตอนแรก ฉันไม่แน่ใจว่ามันจะมีประสิทธิภาพมากกว่าในภายหลังเมื่อใช้หลายอินสแตนซ์ของgit filter-branch --subdirectory-filterสำเนา git repo แต่ไม่ว่าในกรณีใดฉันก็ยังอยากจะทำลายลิงค์กับต้นกำเนิด
279 git  git-svn 

3
git-svn: ฉันจะสร้างสาขา svn ใหม่ผ่าน git ได้อย่างไร
ฉันมีที่เก็บ git ซึ่งติดตามที่เก็บ svn --stdlayoutผมโคลนโดยใช้ ฉันสร้างสาขาท้องถิ่นใหม่ผ่าน git checkout -b foobar ตอนนี้ฉันต้องการให้สาขานี้สิ้นสุด…/branches/foobarในที่เก็บ svn ฉันจะทำอย่างไรเกี่ยวกับเรื่องนั้น? (snipped ข้อความสืบสวนจำนวนมากดูประวัติคำถามหากคุณสนใจ)

9
ฉันจะบอก git-svn เกี่ยวกับสาขาระยะไกลที่สร้างขึ้นหลังจากดึง repo ได้อย่างไร
ฉันใช้git-svnเพื่อทำงานกับพื้นที่เก็บข้อมูลส่วนกลางของ บริษัท ของฉัน เราเพิ่งสร้างสาขาฟีเจอร์ใหม่ใน repo ส่วนกลาง ฉันจะบอก Git เกี่ยวกับมันได้อย่างไร เมื่อฉันวิ่งgit branch -rฉันจะเห็นเฉพาะกิ่งไม้ที่มีอยู่เมื่อฉันวิ่งแข่งfetchกับ Subversion repo เพื่อเริ่มต้น Git repo ของฉัน?
193 git  git-svn 


5
ละเว้นไฟล์ที่แก้ไขแล้ว (แต่ไม่ได้คอมมิชชัน) ใน git หรือ
ฉันสามารถบอกให้คอมไพล์ละเว้นไฟล์ที่ถูกแก้ไข (ถูกลบ) แต่ไม่ควรคอมมิท? สถานการณ์คือฉันมีไดเรกทอรีย่อยใน repo ซึ่งมีเนื้อหาที่ฉันไม่สนใจเลยดังนั้นฉันจึงลบมันเพื่อป้องกันไม่ให้มันปรากฏขึ้นในการเติมเต็มอัตโนมัติและสิ่งที่ชอบ (ใน IDE) แต่ตอนนี้ถ้าฉันเพิ่มโฟลเดอร์นั้นลงใน. gitignore ไม่มีอะไรเปลี่ยนแปลงเลยทุกสิ่งที่แสดงนั้นถูกลบโดยสถานะ git มีวิธีทำให้คอมไพล์ละเว้นมันด้วยวิธีใด? (หรืออีกทางหนึ่งในขณะที่ฉันใช้ git-svn ฉันสามารถคอมมิชชันการเปลี่ยนแปลงในคอมไพล์ท้องถิ่นและตรวจสอบให้แน่ใจว่าไม่ได้ถูกส่งต่อไปยัง svn repo?)
182 git  git-svn  ignore 

6
เป็นไปได้หรือไม่ที่จะมีที่เก็บ Subversion เป็น God submodule
มีวิธีในการเพิ่มพื้นที่เก็บข้อมูล Subversion เป็น God submodule ในพื้นที่เก็บข้อมูล Git ของฉันหรือไม่? สิ่งที่ต้องการ: git-svn submodule add https://svn.foo.com/svn/proj --stdlayout svn-project ในกรณีที่https://svn.foo.com/svn/projชี้ไปยังพื้นที่เก็บข้อมูลการโค่นล้ม ฉันรู้ว่ามีgit-svnที่อนุญาตให้หนึ่งโต้ตอบกับพื้นที่เก็บข้อมูลการโค่นล้ม ดังนั้นฉันคิดว่าอาจมีวิธีการชำระเงินที่เก็บ Subversion ด้วยgit-svnแล้วใช้เป็น submodule
154 svn  git  git-svn 

7
วิธีการลบคีย์ ssh
ขณะนี้ฉันมีคีย์ SSH เก่าที่อัปโหลดบนเซิร์ฟเวอร์ ปัญหาคือฉันสูญเสีย~/.sshไดเรกทอรีของฉัน(พร้อมต้นฉบับid_rsaและid_rsa.pubไฟล์ไฟล์) ดังนั้นฉันต้องการลบคีย์ SSH เก่าบนเซิร์ฟเวอร์โดยตรงและอัปโหลดใหม่ ฉันลองคำสั่งต่อไปนี้โดยไม่ประสบความสำเร็จ: $> ssh-add -D มีวิธีลบคีย์ SSH อย่างสมบูรณ์หรือไม่?

12
เป็นไปได้หรือไม่ที่ git-merge จะเพิกเฉยต่อความแตกต่างของการสิ้นสุดบรรทัด
เป็นไปได้หรือgit mergeไม่ที่จะละเว้นความแตกต่างของการสิ้นสุดบรรทัด บางทีฉันอาจจะถามคำถามผิด ... แต่: ฉันพยายาม uisng config.crlf inputแต่สิ่งที่มียุ่งบิตและออกจากการควบคุมเป็นพิเศษเมื่อฉันใช้มันตามความเป็นจริง สำหรับสิ่งหนึ่งที่ใช้การกำหนดค่านี้หลังจากข้อเท็จจริงดูเหมือนว่าจะไม่ส่งผลกระทบต่อไฟล์ที่มุ่งมั่นกับที่เก็บก่อนที่จะใช้ตัวเลือกนี้ อีกสิ่งหนึ่งคือทันใดนั้นการกระทำทั้งหมดส่งผลให้มีข้อความเตือนที่น่ารำคาญมากมายเกี่ยวกับ CRLF ที่ถูกแปลงเป็น LF พูดตามตรงฉันไม่สนใจจริงๆว่าจะใช้การเขียนแบบบรรทัดหรือไม่ฉันชอบสไตล์ของ Unix \nแต่ไม่ว่าอะไรก็ตาม สิ่งที่ฉันสนใจคือเพื่อgit mergeให้มีความฉลาดขึ้นและเพิกเฉยต่อความแตกต่างในการวางสาย บางครั้งฉันมีไฟล์ที่เหมือนกันสองไฟล์ แต่คอมไพล์จะทำเครื่องหมายว่าพวกเขาอยู่ในความขัดแย้ง (และความขัดแย้งคือไฟล์ทั้งหมด ) เพียงเพราะพวกเขาใช้อักขระสิ้นสุดบรรทัดที่แตกต่างกัน ปรับปรุง: ฉันพบว่าgit diffยอมรับ--ignore-space-at-eolตัวเลือกเป็นไปได้ไหมที่จะอนุญาตให้git mergeใช้ตัวเลือกนี้ด้วย?
150 git  merge  git-svn  line-endings  eol 

6
git selective ยกเลิกการเปลี่ยนแปลงในเครื่องจากไฟล์
ใน repo git ของฉันซึ่งติดตาม repo svn ฉันได้ทำการแก้ไขเป็นไฟล์เดียว ตอนนี้ฉันต้องการย้อนกลับการเปลี่ยนแปลงเหล่านั้น (เช่น svn revert) แต่มีเพียงบางส่วนของไฟล์ ฉันต้องการดูความแตกต่างของไฟล์ละทิ้ง (ย้อนกลับ) การเปลี่ยนแปลงที่ฉันไม่ต้องการและเก็บการเปลี่ยนแปลงที่ฉันต้องการ git add -i ดูเหมือนว่าคำสั่งจะมีตัวเลือกให้ทำเช่นนั้น แต่ฉันยังไม่ต้องการทำขั้นตอนนี้

6
git-svn dcommit หลังจากรวมเข้ากับ git เป็นอันตรายหรือไม่?
แรงจูงใจของฉันในการลองใช้ git-svn คือการผสานและการแตกแขนงได้อย่างง่ายดาย จากนั้นฉันสังเกตเห็นว่า man git-svn (1) พูดว่า: ไม่แนะนำให้ใช้ git-merge หรือ git-pull ในสาขาที่คุณวางแผนจะ dcommit การโค่นล้มไม่ได้แสดงถึงการรวมเข้าด้วยกันในรูปแบบที่สมเหตุสมผลหรือเป็นประโยชน์ ดังนั้นผู้ใช้ที่ใช้ Subversion จะไม่เห็นการผสานใด ๆ ที่คุณทำ นอกจากนี้หากคุณรวมหรือดึงจาก git branch ที่เป็นมิเรอร์ของสาขา SVN dcommit อาจส่งไปยังสาขาที่ไม่ถูกต้อง หมายความว่าฉันไม่สามารถสร้างสาขาในพื้นที่จาก svn / trunk (หรือสาขา) แฮ็คออกไปรวมกลับเป็น svn / trunk แล้ว dcommit หรือไม่ ฉันเข้าใจว่าผู้ใช้ svn จะเห็นความยุ่งเหยิงแบบเดียวกับที่รวมใน svn ก่อน 1.5.x มาโดยตลอด แต่มีข้อเสียอื่น ๆ หรือไม่? ประโยคสุดท้ายนั้นทำให้ฉันกังวลเช่นกัน …
135 svn  git  merge  branch  git-svn 

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