fatal: 'origin' tampaknya bukan repositori git

97

Saya memiliki repositori moodledi akun Github saya yang saya forkeddari repositori resmi.

Saya kemudian mengkloningnya di komputer lokal saya. Ini bekerja dengan baik. Saya membuat beberapa cabang (di bawah mastercabang). Saya membuat beberapa komitmen dan itu bekerja dengan baik.

Saya tidak tahu bagaimana saya mendapatkan kesalahan berikut ketika saya melakukannya: git push origin master

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Bagaimana cara mengatasi kesalahan tanpa memengaruhi repositori saya di Github?

saya menggunakan Ubuntu 12.10

Isi saya .git/configsetelah melakukan cat $(git rev-parse --show-toplevel)/.git/configmemberi:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[branch "MOODLE_23_STABLE"]
[branch "MOODLE_24_STABLE"]
[remote "upstream"]
    url = git://git.moodle.org/moodle.git
    fetch = +refs/heads/*:refs/remotes/upstream/*
xan
sumber
Silakan cetak konten .git / config dan tambahkan di sini
pmod
@pmod: Silakan lihat pertanyaan saya yang diperbarui.
xan
Folder tempat Anda mengkloning komputer lokal harus berisi folder .git.
pmod
@xancat $(git rev-parse --show-toplevel)/.git/config
bereal
@pmod: Ya, saya menemukannya. Silakan lihat pertanyaan saya yang diperbarui.
xan

Jawaban:

116

$HOME/.gitconfigadalah konfigurasi global Anda untuk git.
Ada tiga tingkat dari file konfigurasi .

 cat $(git rev-parse --show-toplevel)/.git/config

( disebutkan oleh bereal ) adalah konfigurasi lokal Anda , sesuai dengan repo yang telah Anda kloning.

Anda juga dapat mengetik dari dalam repo Anda:

git remote -v

Dan lihat apakah ada remote bernama 'origin' yang terdaftar di dalamnya.

Jika tidak, jika remote itu (yang dibuat secara default saat mengkloning repo) tidak ada, Anda dapat menambahkannya lagi:

git remote add origin url/to/your/fork

OP menyebutkan:

Melakukan git remote -vmemberi:

upstream git://git.moodle.org/moodle.git (fetch) 
upstream git://git.moodle.org/moodle.git (push)

Jadi ' origin' hilang: referensi ke garpu Anda .
Lihat " Apa perbedaan antara origindan upstreamdi github "

masukkan deskripsi gambar di sini

VonC
sumber
Melakukan git remote -vmemberi: upstream git://git.moodle.org/moodle.git (fetch) upstream git://git.moodle.org/moodle.git (push)
xan
@xan 'upstream "adalah repo yang telah Anda fork. Anda kehilangan origin, yang merupakan fork Anda di github. Lihat stackoverflow.com/a/15632224/6309 dan stackoverflow.com/a/9257901/6309
VonC
Bagaimana cara mengubah garpu saya menjadi master?
Wolfpack'08
@ Wolfpack'08 "garpu" berarti repositori (dengan banyak cabang). Perubahan ke cabang adalah operasi lokal yang melibatkan git switch: stackoverflow.com/a/57066202/6309 . Dengan kata-kata Anda sendiri, apa artinya "mengubah garpu menjadi master" bagi Anda? Mengubah cabang lokal Anda di repositori kloning lokal Anda (dari garpu GitHub jarak jauh Anda)?
VonC
1
Jika Anda memiliki GHY repo terpencil, hanya mendorong untuk itu: git push -u ghy master.
VonC
22

Saya menghadapi masalah yang sama ketika mengganti nama repositori saya di GitHub. Saya mencoba untuk mendorong di titik mana saya mendapat kesalahan

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Saya harus mengubah URL menggunakan

git remote set-url origin ssh://[email protected]/username/newRepoName.git

Setelah ini semua perintah mulai bekerja dengan baik. Anda dapat memeriksa perubahan dengan menggunakan

git remote -v

Dalam kasus saya setelah berhasil mengubahnya, itu menunjukkan repo berganti nama yang benar di URL

[aniket@alok Android]$ git remote -v
origin  ssh://[email protected]/aniket91/TicTacToe.git (fetch)
origin  ssh://[email protected]/aniket91/TicTacToe.git (push)
Aniket Thakur
sumber
14

Ada kemungkinan cabang lain yang Anda coba cabut tidak selaras; jadi sebelum menambahkan dan menghapus percobaan jarak jauh (jika Anda mencoba menarik dari master)

git pull origin master

bagi saya panggilan sederhana itu memecahkan pesan kesalahan itu:

  • fatal: 'master' tampaknya bukan repositori git
  • fatal: Tidak dapat membaca dari repositori jarak jauh.
sivi
sumber
3

Usahakan buat remote origin dulu, mungkin hilang karena mengganti nama remote repo

git remote tambahkan URL asal_TO_YOUR_REPO

zdravko zdravkin
sumber
2

Ini tidak menjawab pertanyaan Anda, tetapi saya menghadapi pesan kesalahan serupa tetapi karena alasan yang berbeda. Izinkan saya membuat posting saya demi pengumpulan informasi.

Saya memiliki git repo di drive jaringan. Sebut saja drive jaringan ini RAID. Saya mengkloning repo ini di mesin lokal saya (LOKAL) dan di cluster pengolah nomor saya (CRUNCHER). Untuk kenyamanan saya memasang direktori pengguna akun saya di CRUNCHER di mesin lokal saya. Jadi, saya dapat memanipulasi file di CRUNCHER tanpa perlu melakukan pekerjaan di terminal SSH.

Hari ini, saya memodifikasi file di repo di CRUNCHER melalui mesin lokal saya. Pada titik tertentu saya memutuskan untuk memasukkan file, jadi a melakukan komit. Menambahkan file yang dimodifikasi dan melakukan komit berfungsi seperti yang saya harapkan, tetapi ketika saya menelepon git pushsaya mendapat pesan kesalahan yang mirip dengan yang diposting di pertanyaan.

Alasannya, saya menelepon pushdari dalam repo di CRUNCHER di LOCAL. Jadi, semua jalur di file konfigurasi salah.

Ketika saya menyadari kesalahan saya, saya masuk ke CRUNCHER melalui Terminal dan dapat mendorong komit.

Jangan ragu untuk berkomentar jika penjelasan saya tidak dapat dipahami, atau Anda menganggap posting saya berlebihan.

Dohn Joe
sumber
1

Saya memiliki kesalahan yang sama pada nama cabang asal git pull saat mengatur asal jarak jauh sebagai jalur fs dan bukan ssh di .git / config :

fatal: '/path/to/repo.git' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly

Itu seperti itu (ini hanya berfungsi untuk pengguna di server git yang sama yang memiliki akses ke git):

url = file:///path/to/repo.git/

Perbaiki seperti itu (ini berfungsi pada semua pengguna yang memiliki akses ke git user (ssh authorizes_keys or password)):

url = [email protected]:path/to/repo.git

alasan saya menjadikannya sebagai jalur direktori adalah karena file git berada di server yang sama.

Waqleh
sumber
Memang! The /domain setelah harus :jika menggunakan SSH. Cukup verifikasi dengan git remote -v.
Noam Manos