Doğrudan yerel Linux Git'ten Github veri havuzundaki bir dizin adı değiştirilsin mi?


10

Bu benim Git depom:

https://github.com/benqzq/ulcwe

Bu adında bir dir vardır localve ben (den, diyelim ki başka bir ad adını değiştirmek istediğiniz localiçin xyz).

GitHub GUI ile manuel olarak değiştirmek, her dosya için dizin adını ayrı ayrı değiştirmek zorunda olduğum için bir kabus.

Git'i yükledikten sonra şu komutu denedim:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

GitHub şifrem için herhangi bir istem alamadım, ancak bu hatayı aldım:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Git'teki tüm mesele, bir proje indirmek, değiştirmek, test etmek ve ardından barındırma sağlayıcısına (bu durumda GitHub) itmek olduğunu biliyorum, ancak sadece bir dizini değiştirmek için doğrudan bir işlem yapmak istiyorum. Git ile bile mümkün mü?

Belki başka bir program kullanmalı mıyım?


2
Hayır, Git'te doğrudan uzaktan işlemler mümkün değildir. Projeyi kopyalamanız (indirmeniz), değiştirmeniz ve ardından barındırma sağlayıcısına geri göndermeniz gerekir. Ama projeyi bilgisayarınızda olmadan Github'u nasıl kullanıyorsunuz? Tüm değişiklikleri Github web kullanıcı arayüzü üzerinden yapıyor musunuz - bu çok kullanışlı veya verimli görünmüyor.
user253751

UI kullanarak bu özel durumda genellikle benim için oldukça uygun ve verimli, özlediğim ana şey doğrudan dir isim değişikliği ...
user9303970

Yanıtlar:


28

Önemli hata mesajı git deponuzun klonu olmayan bir yerden çalıştığınızı gösterir. Önce git deposunu klonlayarak başlayalım:

git clone https://github.com/benqzq/ulcwe.git

Sonra girin:

cd ulcwe

ve dizini yeniden adlandırın:

git mv local xyz

Değişikliğin paylaşılabilir olması için bunu taahhüt etmeniz gerekir:

git commit -m "Rename local to xyz"

Şimdi uzak git deponuza itebilirsiniz:

git push

ve değişikliği GitHub arayüzünde göreceksiniz.


14
Başka bir deyişle, tıpkı Git deponuzdaki dosyalar üzerindeki diğer işlemler gibi.
Orbit'te Hafiflik Yarışları

2
@LightnessRacesinOrbit, asker şu ana kadar tüm değişiklikleri için web kullanıcı arayüzünü kullanıyor gibi görünüyor.
user253751

5

Hayır, git'in yapılandırılma biçimi nedeniyle bunu doğrudan bir işlem olarak yapmanın bir yolu yoktur.

Git'in çalışma şekli, tüm tarih de dahil olmak üzere tüm deponun bir kopyasını her bir konumda depolamasıdır.

Github, veya Bitbucket veya başka herhangi bir barındırma sağlayıcısı, aslında git veri havuzunuzun başka bir kopyasıdır, üstte güzel bir web arayüzü vardır, bu da çoğu iş akışında merkezi bir gerçek kaynağı olarak kabul edilir, ancak git yardımcı programı bunu bilmez.

Değişiklikler taahhüt olarak izlenir. Tahmin ediyorum ki direct operation, bir taahhüt oluşturmadan klasörün adını değiştirmenin bir yolunu kastediyorsunuz. Bu, geçmişi yeniden yazarak mümkün olsa da, özellikle git repo kopyalarına sahip birden fazla kişi / makine varsa, tavsiye etmem, çünkü bu tutarsızlıklara yol açabilir.

Git deposunda bir klasörü yeniden adlandırmanın en kolay yolu yerel olarak klonlamaktır

git clone [url]
cd [git-folder]

Reponun yerel bir kopyası zaten varsa, uzak repo ile güncel olduğunuzdan emin olmak için çekin

git pull

Yerel olarak yapmanız gereken değişiklikleri yapın

git mv local xyz

Hangi otomatik olarak github tarafından evreleme alanına eklenmelidir. O zaman bu değişiklikleri yapmalı ve zorlamalısınız.

git commit -m 'Renamed local to xyz'
git push

Bu, yerel deponuzda değişikliği gerçekleştirecek ve daha sonra bu değişiklikleri deponun uzak kopyasına, bu durumda Github'a gönderecektir.


8
Hayır, tarih taahhütler arasında değişiklik olarak saklanmaz , her taahhüt kendi kendini destekler. Taahhütler arasındaki değişiklikler, her ihtiyaç duyulduğunda istek üzerine yeniden hesaplanır.
Stephen Kitt

3
"tüm geçmiş her bir konuma indirilir" - ile değilgit clone --depth
user11153

2
Bunun için geçmişin yeniden yazılması gerekmeyecek - GitHub bunu yapmak için bir taahhüt oluşturabilir. (Dosyaları doğrudan web sitesinde düzenlerken olduğu gibi.)
user1686

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.