Apakah menjalankan git init dua kali menginisialisasi repositori atau menginisialisasi ulang repo yang ada?

164

Apa yang terjadi pada repositori git yang ada saat Anda menerbitkan git initlagi?

Saya membuat repositori dengan git init. Buat file, tambahkan, komit. Periksa status (tidak ada yang berkomitmen). Kemudian buat file lain, periksa statusnya dan aku bisa melihatnya tidak terlacak seperti yang diharapkan.

Kemudian, katakan secara tidak sengaja, saya menjalankan git initlagi dan saya mendapatkan Inisialisasi ulang pesan repositori Git yang ada .

git statusSudah mencoba , tetapi menunjukkan hal yang sama. Jadi apa yang sebenarnya terjadi?

Bisakah menginisialisasi ulang repositori git yang ada dengan cara ini berbahaya atau bermanfaat? Mengapa kita bisa git initberada di dalam repositori yang ada?

Tuan L
sumber
FWIW menggunakan Xcode Saya pertama kali membuat repositori lokal untuk pertama kalinya, kemudian ketika saya pergi ke Github.com untuk membuat repositori jarak jauh baru. Yang saya lakukan, kemudian untuk menghubungkan repositori lokal saya ke remote saya ... Saya mengikuti langkah-langkahnya (disediakan di Github.com), langkah pertamanya adalah git inityang saya lakukan. Agaknya itu adalah yang kedua kalinya setelah Xcode secara otomatis membuatnya
Honey

Jawaban:

209

Dari git docs :

Menjalankan git init di repositori yang ada aman. Itu tidak akan menimpa hal-hal yang sudah ada. Alasan utama untuk rerunning git init adalah untuk mengambil templat yang baru ditambahkan.

intinya
sumber
110

Ini dijelaskan dalam git initdokumentasi:

Menjalankan git init di repositori yang ada aman. Itu tidak akan menimpa hal-hal yang sudah ada. Alasan utama untuk rerunning git init adalah untuk mengambil templat yang baru ditambahkan.

Greg Hewgill
sumber
47

Sejak v1.7.5 ( b57fb80a7 ), git initdalam repo yang ada juga memungkinkan pemindahan .gitdirektori:

Alasan utama untuk menjalankan kembali 'git init' adalah untuk mengambil templat yang baru ditambahkan (atau untuk memindahkan repositori ke tempat lain jika --separate-git-dir diberikan).

'Mengambil templat yang baru ditambahkan' berarti bahwa semua templat yang belum disalin dari direktori templat sekarang akan disalin ke direktori git yang ada.

'Memindahkan repositori ke tempat lain' berarti bahwa, jika --separate-git-dirmenunjuk ke tempat lain, .gitdirektori yang ada akan dipindahkan ke sana dan diganti dengan tautan.

Joe
sumber
-1

itu berarti Anda sudah menginisialisasi git. karena Anda sudah mengunggah file di github dari jalur ini. Anda memeriksa path lalu folder dibuat dengan nama .git. Itu sebabnya Anda tidak memerlukan lagi untuk menginisialisasi git. Anda bisa langsung ke langkah selanjutnya

git add.

Folder git

Khadim Rana
sumber