วิธีแปลงไดเร็กทอรีที่ไม่ว่างเปล่าไปเป็นไดเร็กทอรีการทำงาน Git และส่งไฟล์ไปยังที่เก็บแบบรีโมต


644
  1. ฉันมีไดเรกทอรีที่ไม่ว่างเปล่า (เช่น / etc / something) พร้อมไฟล์ที่ไม่สามารถเปลี่ยนชื่อย้ายหรือลบได้

  2. ฉันต้องการตรวจสอบไดเรกทอรีนี้เป็น git ในสถานที่

  3. ฉันต้องการที่จะสามารถผลักดันสถานะของพื้นที่เก็บข้อมูลนี้ไปยังพื้นที่เก็บข้อมูลระยะไกล (บนเครื่องอื่น) โดยใช้ "git push" หรือสิ่งที่คล้ายกัน

นี่เป็นเรื่องเล็กน้อยโดยใช้การโค่นล้ม (ปัจจุบันเราใช้การโค่นล้ม) โดยใช้:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

อะไรคือ git ที่เทียบเท่ากัน?

ฉันสามารถ "git clone" ไปยังไดเรกทอรีว่างได้หรือไม่และย้ายไดเรกทอรี. git และทำงานทุกอย่างได้หรือไม่


5
บางทีฉันอาจไม่ได้รับ แต่คุณไม่สามารถเรียกใช้git initภายในไดเรกทอรีท้องถิ่นได้หรือไม่
ฟิลิปป์

คุณหมายถึงว่าคุณมี repo อยู่ที่อื่นและคุณต้องการเพิ่มใน repo เนื้อหาทั้งหมดของไดเรกทอรีอื่นที่ไม่ใช่ repo หรือคุณแค่พยายามสร้าง repo ใหม่ในไดเรกทอรีนั้น
Cascabel

คำตอบจำนวนหนึ่งพูดถึง GitHub แต่คำถามนั้นเกี่ยวกับ Git GitHub ไม่ได้คอมไพล์และมันไม่ได้เป็นศูนย์กลางของจักรวาลคอมไพล์
vfclists

คำตอบ:


1056

ให้คุณตั้งค่า git daemon on <url>และ repository ว่าง:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
คำแนะนำของ abyxทำงานได้ดี ตอนนี้ฉันจะเรียกใช้: git config branch.master.remote originและgit config branch.master.merge refs/heads/master สิ่งที่ฉันจะจบลงด้วยจะเหมือนกับว่าฉันโคลนที่เก็บระยะไกล? เช่นgit pullและgit pushจะทำงานเพียง ?
HMW

34
สิ่งนี้ได้ผลกับฉันด้วย ฉันต้องสร้างโครงการAppNameใน GitHub ก่อน มันก็ไม่ได้ชัดเจนกับผม WAHT ว่า<url>หมายถึง ดังนั้นสำหรับผู้ที่คำถามเดียวกันที่เราใช้งานง่าย GitHub.com เราไม่ได้ทำงาน repo ของเราแล้ว<url>ที่ใช้ในบรรทัดที่ 5 มองอะไรเช่นนี้https://github.com/CompanyName/AppName
บาร์ต

12
หากคุณกำลังตั้งค่าที่เก็บที่ไม่ได้อยู่ใน GitHub อย่าลืมใช้ 'git --bare init' เพื่อตั้งค่าที่เก็บระยะไกลที่ว่างเปล่าและไม่ใช่ 'git init' (เหมือนที่ฉันทำ) มิเช่นนั้นการกดจะล้มเหลว
jdusbabek

3
แค่อยากจะเพิ่มที่ฉันไม่สามารถผลักจนกว่าฉันจะได้: git pull --rebase
Artemix

6
หาก git ปฏิเสธเนื่องจากรีโมตมีการเปลี่ยนแปลงเล็กน้อย (.README, .gitignore ฯลฯ ) ให้ลองgit pull origin master --allow-unrelated-historiesทำการผสาน
karlisup

80

นี่คือวิธีที่ฉันทำ ฉันได้เพิ่มคำอธิบายเพื่อทำความเข้าใจกับสิ่งที่เกิดขึ้น

เตรียมใช้งาน Local Repository

  • เริ่มต้นด้วย Git ด้วย

    git init

  • เพิ่มไฟล์ทั้งหมดสำหรับการควบคุมเวอร์ชันด้วย

    คอมไพล์เพิ่ม

  • สร้างการส่งข้อความที่คุณเลือก

    git คอมมิต -m 'กำลังเพิ่ม BaseCode'

เริ่มต้นพื้นที่เก็บข้อมูลระยะไกล

  • สร้างโครงการบน GitHub และคัดลอก URL ของโครงการของคุณ ที่แสดงด้านล่าง:

    ป้อนคำอธิบายรูปภาพที่นี่

เชื่อมโยง repo ระยะไกลกับ repo ท้องถิ่น

  • ตอนนี้ใช้ URL ที่คัดลอกแล้วเพื่อเชื่อมโยง repo ในพื้นที่ของคุณกับ repo GitHub ระยะไกล เมื่อคุณโคลนที่เก็บด้วย git clone มันจะสร้างการเชื่อมต่อระยะไกลโดยอัตโนมัติที่เรียกว่าจุดเริ่มต้นที่ชี้ไปที่ที่เก็บโคลน คำสั่งรีโมตใช้เพื่อจัดการชุดของที่เก็บที่ถูกติดตาม

    คอมไพล์รีโมทเพิ่มต้นกำเนิดhttps://github.com/hiteshsahu/Hmium-Word.git

ประสาน

  • ตอนนี้เราต้องรวมรหัสท้องถิ่นด้วยรหัสระยะไกล ขั้นตอนนี้มีความสำคัญมิฉะนั้นเราจะไม่สามารถกดรหัสบน GitHub ได้ คุณต้องเรียก 'git pull' ก่อนกดรหัส

    ต้นแบบต้นกำเนิด git pull - ไม่เกี่ยวข้องกับประวัติ

มอบรหัสของคุณ

  • ในที่สุดก็ผลักดันการเปลี่ยนแปลงทั้งหมดใน GitHub

    git push -u origin master


1
ฉันเรียกใช้งาน "git pull" ตามที่อธิบายในโพสต์นี้และได้รับข้อผิดพลาด ฉันดำเนินการต่อด้วย "git push" ที่ได้รับการยอมรับและเมื่อฉันไปที่ Bonobo Git Server ตอนนี้ฉันสามารถเห็นการเปลี่ยนแปลง ขอบคุณสำหรับบทความนี้ที่มีคำอธิบายที่ชัดเจนเกี่ยวกับคำสั่ง GIT
schlebe

สิ่งนี้หมายความว่า: "และคัดลอก URL ของโครงการของคุณและคัดลอก URL ของโครงการ" นี่เป็นข้อผิดพลาดในการพิมพ์หรือคุณพยายามพูดถึง URL ที่แตกต่างกันสองรายการหรือ
gwideman

เป็นความผิดพลาดทางวิชาการพิมพ์เพียงคัดลอก URL ของโครงการตามที่แสดงในภาพหน้าจอ
Hitesh Sahu

2
นี่คือคำตอบที่ถูกต้องและควรเป็นคำตอบที่ยอมรับได้ คำตอบที่ยอมรับไม่มีขั้นตอน "ซิงโครไนซ์" ของคุณ
Ilan

28

นี่คือทางออกของฉัน:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

ทางออกที่ดีเมื่อคุณติดตั้ง repo ระยะไกลด้วย.gitignore&README.dm
Hattori Hanzō

12

ในกรณีที่ที่เก็บรีโมตไม่ว่างเปล่า (เป็นกรณีนี้หากคุณใช้ IBM DevOps บน hub.jazz.net) ดังนั้นคุณต้องใช้ลำดับต่อไปนี้:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

แก้ไข 30 มกราคม 17: โปรดดูความคิดเห็นด้านล่างให้แน่ใจว่าคุณอยู่ใน repo ที่ถูกต้อง!


คำสั่งข้างต้นเช็ดออกงานสร้างที่มีอยู่ทั้งหมดของฉัน :( โปรดใช้ความระมัดระวังก่อนทำตามขั้นตอนข้างต้น
Selenium Framework

7

เมื่อใดที่ที่เก็บ github ไม่ว่างเปล่าเช่น. gitignore และใบอนุญาต

ใช้การดึง - ไม่เกี่ยวข้องกับประวัติและ push --force-with-lease

ใช้คำสั่ง

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
ฉันจำเป็นต้องแก้ไขคำสั่งสุดท้ายที่จะเป็นเหมือนมากขึ้นgit push -u origin master --force-with-lease
cfont

2

วิธีที่ง่ายที่สุดในการทำสิ่งนี้ซึ่งฉันพบว่ามีประโยชน์คือด้านล่าง

นี่อาจไม่ใช่วิธีที่เป็นทางการ แต่ใช้งานได้ดี

สมมติว่าคุณมีโครงการชื่อ " XYZ" ในพีซีของคุณ ตอนนี้คุณต้องการทำ repit คอมไพล์ของโครงการนี้ใน gitHub และใช้ฟังก์ชั่นของมัน

ขั้นตอนที่ 1 : ไปที่ " www.github.com"

ขั้นตอนที่ 2 : สร้างที่เก็บพร้อมREADME.mdไฟล์ "" (ตั้งชื่อตามที่คุณต้องการ)

ขั้นตอนที่ 3 : โคลนที่เก็บไปยังพีซีของคุณ

ขั้นตอนที่ 4 : ในโฟลเดอร์โคลนคุณจะได้รับสองสิ่ง: " .git" โฟลเดอร์และREADME.mdไฟล์ "" คัดลอกสองรายการนี้ในโฟลเดอร์โครงการ " XYZ"

ขั้นตอนที่ 5 : ลบ repo ที่ลอกแบบมา

ขั้นตอนที่ 6 : เพิ่มกระทำและส่งไฟล์และโฟลเดอร์ทั้งหมดในโครงการของคุณ

ตอนนี้คุณสามารถใช้โครงการของคุณXYZเป็นที่เก็บคอมไพล์ได้ ""


0

ฉันมีปัญหาที่คล้ายกัน ฉันสร้างพื้นที่เก็บข้อมูลใหม่NOT IN ไดเรกทอรีที่ผมอยากจะทำพื้นที่เก็บข้อมูล ฉันคัดลอกไฟล์ที่สร้างไปยังไดเรกทอรีที่ฉันต้องการสร้างที่เก็บ จากนั้นเปิดที่เก็บข้อมูลที่มีอยู่โดยใช้ไดเรกทอรีที่ฉันเพิ่งคัดลอกไฟล์ไป

หมายเหตุ:ฉันใช้เดสก์ท็อป Github เพื่อสร้างและเปิดพื้นที่เก็บข้อมูลออก


0

นี่คือโซลูชันของฉันหากคุณสร้างที่เก็บด้วยค่าเริ่มต้นreadme fileหรือlicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.