Bagaimana mengkonversi direktori non-kosong yang ada menjadi direktori kerja Git dan mendorong file ke repositori jarak jauh

644
  1. Saya memiliki direktori tidak kosong (mis. / Etc / something) dengan file yang tidak dapat diubah namanya, dipindahkan, atau dihapus.

  2. Saya ingin memeriksa direktori ini menjadi git di tempatnya.

  3. Saya ingin dapat mendorong status repositori ini ke repositori jarak jauh (di komputer lain) menggunakan "git push" atau yang serupa.

Ini sepele menggunakan Subversion (saat ini kami melakukannya menggunakan Subversion) menggunakan:

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

Apa itu setara dengan git?

Bisakah saya "git klon" ke direktori kosong dan cukup pindahkan direktori .git dan semuanya berfungsi?

HMW
sumber
5
Mungkin saya tidak mengerti, tetapi tidak bisakah Anda menjalankannya git initdi dalam direktori lokal?
Philipp
Maksud Anda, Anda memiliki repo di tempat lain, dan Anda ingin menambahkan repo itu semua isi direktori lain ini yang bukan repo? Atau Anda hanya mencoba membuat repo baru di direktori itu?
Cascabel
Sejumlah jawaban menyebutkan github, tetapi pertanyaannya sendiri tentang git. github bukan git, dan itu bukan pusat dari alam semesta git.
vfclists

Jawaban:

1056

Mengingat Anda telah menyiapkan daemon git <url>dan repositori kosong:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master
abyx
sumber
12
Instruksi abyx tampaknya bekerja. Apakah saya sekarang menjalankan: git config branch.master.remote origindan git config branch.master.merge refs/heads/master apa yang akan saya hasilkan akan persis sama seperti jika saya mengkloning repositori jarak jauh? yaitu git pulldan hanyagit push akan bekerja ?
HMW
35
Ini juga bekerja untuk saya. Saya pertama kali harus membuat proyek AppNamedi GitHub. Bagi saya tidak jelas apa persisnya <url>sarana itu. Jadi bagi mereka yang memiliki pertanyaan yang sama, kami menggunakan GitHub.com, kami tidak menjalankan repo kami, dan kemudian <url>seperti yang digunakan pada baris ke-5 terlihat seperti ini:https://github.com/CompanyName/AppName
Bart
12
Jika Anda sedang menyiapkan repositori yang tidak ada di GitHub, pastikan untuk menggunakan 'git --bare init' untuk mengatur repositori jarak jauh yang kosong , dan bukan 'git init' (seperti yang saya lakukan) atau push akan gagal.
jdusbabek
3
Hanya ingin menambahkan, bahwa saya tidak bisa mendorong sampai saya melakukan: git pull --rebase
Artemix
6
Jika git menolak karena remote mengandung beberapa perubahan kecil (.README, .gitignore, dll.), Coba git pull origin master --allow-unrelated-historieslakukan penggabungan.
karlisup
80

Inilah yang saya lakukan. Saya telah menambahkan penjelasan untuk memahami apa yang sedang terjadi.

Inisialisasi Repositori Lokal

  • pertama inisialisasi Git dengan

    git init

  • Tambahkan semua File untuk kontrol versi dengan

    git add.

  • Buat komit dengan pesan pilihan Anda

    git commit -m 'AddingBaseCode'

Inisialisasi Repositori Jarak Jauh

  • Buat proyek di GitHub dan salin URL proyek Anda. seperti yang ditunjukkan di bawah ini:

    masukkan deskripsi gambar di sini

Tautkan repo jarak jauh dengan repo lokal

  • Sekarang gunakan URL yang disalin untuk menautkan repo lokal Anda dengan repo GitHub jarak jauh. Ketika Anda mengkloning repositori dengan git clone, secara otomatis membuat koneksi jarak jauh yang disebut asal menunjuk kembali ke repositori yang dikloning. Remote perintah digunakan untuk mengatur kumpulan repositori terlacak.

    git remote tambahkan asal https://github.com/hiteshsahu/Hassium-Word.git

Sinkronkan

  • Sekarang kita perlu menggabungkan kode lokal dengan kode jarak jauh. Langkah ini sangat penting jika tidak kita tidak akan bisa mendorong kode di GitHub. Anda harus memanggil 'git pull' sebelum mendorong kode Anda.

    git pull origin master --allow-unrelated-histories

Komit kode Anda

  • Akhirnya dorong semua perubahan pada GitHub

    git push -u master asal

Hitesh Sahu
sumber
1
Saya telah menjalankan "git pull" seperti yang dijelaskan dalam posting ini dan mendapatkan kesalahan. Saya telah melanjutkan dengan "git push" yang telah diterima dan ketika saya pergi ke Bonobo Git Server, sekarang saya dapat melihat perubahannya. Terima kasih untuk posting ini dengan penjelasan yang jelas tentang perintah GIT.
schlebe
Apa artinya ini: "dan salin URL proyek Anda dan salin URL proyek." Apakah ini kesalahan pengetikan, atau apakah Anda mencoba berbicara tentang dua URL yang berbeda, atau?
gwideman
Itu kesalahan tipografi, cukup salin url proyek seperti yang ditunjukkan dalam cuplikan layar
Hitesh Sahu
2
Ini adalah jawaban yang benar dan harus diterima. Jawaban yang diterima tidak memiliki langkah "Sinkronisasi" Anda.
Ilan
28

Inilah solusi saya:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
csomakk
sumber
Solusi bagus ketika Anda mengatur repo jarak jauh dengan .gitignore&README.dm
Hattori Hanzo
12

Dalam hal repositori jarak jauh tidak kosong (ini adalah kasus jika Anda menggunakan IBM DevOps di hub.jazz.net) maka Anda perlu menggunakan urutan berikut:

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

EDIT 30 Januari 17: Silakan lihat komentar di bawah, pastikan Anda berada di repo yang benar!

Romeo Kienzler
sumber
Perintah-perintah di atas menghapus semua build saya yang ada :( Harap berhati-hati sebelum melakukan langkah
Selenium Framework
7

Kapan repositori github tidak kosong, seperti .gitignore dan lisensi

Gunakan pull --allow-unrelated-histories dan dorong --force-with-leasing

Gunakan perintah

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
Sebastian Oscar Lopez
sumber
1
Saya perlu mengubah pernyataan terakhir agar lebih sepertigit push -u origin master --force-with-lease
cfont
2

Cara paling sederhana untuk melakukan ini yang menurut saya berguna adalah di bawah ini.

Ini mungkin bukan cara resmi tetapi berfungsi dengan baik.

Misalkan Anda memiliki proyek bernama " XYZ" di PC Anda. Sekarang Anda ingin membuat repo git dari proyek ini di github dan menggunakan fungsinya.

Langkah 1 : pergi ke " www.github.com"

Langkah 2 : buat repositori dengan README.mdfile " " (beri nama sesuka Anda)

Langkah 3 : tirukan repositori ke PC Anda.

Langkah 4 : Di folder yang dikloning Anda akan mendapatkan dua hal: " .git" folder dan README.mdfile " ". Salin keduanya di folder proyek Anda " XYZ".

Langkah 5 : Hapus repo yang dikloning.

Langkah 6 : tambahkan, komit, dan dorong semua file dan folder proyek Anda.

Sekarang, Anda bisa menggunakan " XYZ" proyek Anda sebagai repositori git.

Jenius
sumber
0

Saya punya masalah serupa. Saya membuat repositori baru, BUKAN DI DIREKTORI YANG SAYA INGIN MEMBUAT REPOSITORI . Saya kemudian menyalin file yang dibuat ke direktori saya ingin membuat repositori. Kemudian buka repositori yang sudah ada menggunakan direktori yang baru saja saya salin file.

CATATAN: Saya memang menggunakan desktop github untuk membuat dan membuka repositori yang sudah ada.

tpage
sumber
0

Inilah solusi saya jika Anda membuat repositori dengan beberapa default readme fileataulicense

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> 
Harish Karthick
sumber