git clone
- git clone
gerçekleştirmek zorunda kalmadan yerel dosya değişikliklerini yok sayan bir git pull
yapmanın bir yolu var mı?Git Yerel Değişiklikleri Göz ardı ederken Çekin?
cevap
Eğer çalışma ağaç temiz olsaydı, iyi, çalışma ağacı temizlemek olarak çekme birleştirme yaparak, yerel değişiklikleri üzerine yazmak istiyor kastediyorsan: izlenmeyen yerel dosyalar varsa
git reset --hard
git pull
kullanabilirdin Bunları kaldırmak için git clean
. Programlanmamış dosyaları kaldırmak için git clean -f
kullanın, untracked dosyaları ve dizinleri kaldırmak için -df
ve untracked veya ignored dosyaları veya dizinleri kaldırmak için -xdf
kullanın. Bir şekilde yerel değişiklikler tutmak istiyorum diğer yandan ise
, uzakta çekerek önce bunları gizlemek için zulası kullanmayı tercih ediyorum, sonra sonra bunları yeniden başvurun:
git stash
git pull
git stash pop
Ben herhangi yapar sanmıyorum Kelimenin tam anlamıyla anlamı, değişikliklerini göz ardı etse de, çekmenin yarısı birleştirme işlemidir ve içeriğin taahhüt edilen sürümlerini getirilen sürümlerle birleştirmesi gerekir.
Git yeniden ayarladıktan sonra dosyalarınız hala uzaktan kumandadan farklıysa, http://stackoverflow.com/questions/1257592/removing-files-saying-old-mode-100755-new-mode-100644-from-unstaged- adresini okuyabilirsiniz. –
Git'te yapılan değişiklikler, şimdiye kadarki en garip şeydir. Git sıfırla - sıfır. Sonra git durumu: Şubeniz 2 taahhütle devam ediyor. – shailenTJ
@shailenTJ "Yerel değişiklikler" burada yerel taahhütler değil, değiştirilmemiş değişiklikler anlamına gelir. 'sıfırla - sıfır 'eskiyi değil, eskiyi etkiler. Uzaktan kumandayı tam olarak sıfırlamak istiyorsanız, 'git reset --hard menşei/
Tüm yerel değişikliklerinizi bir "stash dosyası" içine koymak ve son işleme geri dönmek için git stash numaralı bağlantıya bakın. Bu noktada, saklanmış değişikliklerinizi uygulayabilir veya iptal edebilirsiniz.
Linux üzerinde ise:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
yerel repo değiştirilen tüm izlenen dosyaları siler döngü, böylece git pull
sorunsuz çalışacaktır.
Bunun en güzel yanı repodaki dosyalar tarafından sadece izlenen dosyaların üzerine yazılacak olmasıdır, diğer tüm dosyalar el değmeden bırakılacaktır.
Sanırım tam olarak ihtiyacım olan "izlenen dosyaları" kastediyorsunuz. – Ali
numaralı komut her zaman çalışmaz. Sadece yaparsanız: vb
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard
HEAD is now at b05f611 Here the commit message bla, bla
$ git pull
Auto-merging thefile1.c
CONFLICT (content): Merge conflict in thefile1.c
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
ve ...
için gerçekten thebranch indirme ve tüm yerel değişiklikleri üzerine yazarak baştan başlamak, sadece yapın:
$ git checkout thebranch
$ git reset --hard origin/thebranch
Bu, çok iyi çalışacaktır.
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard origin/thebranch
HEAD is now at 7639058 Here commit message again...
$ git status
# On branch thebranch
nothing to commit (working directory clean)
$ git checkout thebranch
Already on 'thebranch'
EVET. Nihai bir şey için ihtiyacım olan şey budur. Teşekkürler. :) – Adambean
Benim için çalıştı aşağıdaki:
(1) Her şeyden önce değişiklikleri getir:
$ git fetch --all
(2) Ardından ana sıfırlama:
$ git reset --hard origin/master
(3) Çek/güncelleştir:
$ git pull
Bu akım dalı alıp usta hızlı ileri bir yapmaya çalışacaktır: "yok sayar" ile
git fetch && git merge --ff-only origin/master
git fetch --all && git reset --hard origin/master
siz "üzerine yazar" demek? – Cascabel