git pull
Herhangi bir yerel dosya değişiklikleri dizini havaya uçurmadan ve bir yapmak zorunda yok sayar yapmak için bir yolu var mı git clone
?
rm -rf local_repo && git clone remote_url
.
git pull
Herhangi bir yerel dosya değişiklikleri dizini havaya uçurmadan ve bir yapmak zorunda yok sayar yapmak için bir yolu var mı git clone
?
rm -rf local_repo && git clone remote_url
.
Yanıtlar:
Çekme işleminin yerel değişikliklerin üzerine yazmasını, birleştirme işlemini çalışan ağaç temizmiş gibi yapmak istiyorsanız, çalışma ağacını temizleyin:
git reset --hard
git pull
İzlenmemiş yerel dosyalar varsa, git clean
bunları kaldırmak için kullanabilirsiniz . Kullanım git clean -f
, izlenmeyen dosyaları kaldırmak -df
izlenmeyen dosyaları ve dizinleri kaldırmak ve -xdf
izlenmeyen veya göz ardı dosyaları veya dizinleri kaldırın.
Öte yandan yerel değişiklikleri bir şekilde saklamak istiyorsanız, çekmeden önce saklamak için saklamak, ardından daha sonra tekrar uygulamak için:
git stash
git pull
git stash pop
Değişiklikleri tam anlamıyla görmezden gelmenin bir anlamı olduğunu düşünmüyorum - çekmenin yarısı birleştirildi ve içeriğin taahhütlü sürümlerini getirdiği sürümlerle birleştirmesi gerekiyor.
git reset
dosyalarınızın hâlâ uzak, salt farklı stackoverflow.com/questions/1257592/...
git reset --hard
ikincisini değil ikincisini etkiler. Uzaktan kumandanın durumuna tamamen sıfırlamak istiyorsanız, git reset --hard origin/<branch>
ancak sıklıkla ve bu durumda, menşei ilerisinde olduğunuz bu iki taahhüt atmak istediğiniz bir şey değil, yaptığınız iştir.
Benim için aşağıdakiler işe yaradı:
(1) Önce tüm değişiklikleri getir:
$ git fetch --all
(2) Ardından master'ı sıfırlayın:
$ git reset --hard origin/master
(3) Çekme / güncelleme:
$ git pull
Sadece tam olarak aynı sonucu veren bir komut istiyorsun rm -rf local_repo && git clone remote_url
, değil mi? Ben de bu özelliği istiyorum. Git neden böyle bir komut ( git reclone
veya gibi git sync
) sağlamadığını merak ediyorum , ne svn böyle bir komut ( svn recheckout
veya gibi svn sync
) sağlamaz .
Aşağıdaki komutu deneyin:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
dosyaları .gitignore
da kaldırır .
Körük komutu her zaman çalışmaz . Sadece yaparsanız:
$ 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 bunun gibi...
İçin gerçekten tüm yerel değişiklikleri thebranch indirme ve üzerine yazarak baştan başlamak, sadece yapın:
$ git checkout thebranch
$ git reset --hard origin/thebranch
Bu işe yarayacak.
$ 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'
Tüm yerel değişikliklerinizi bir "stash dosyasına" koymak ve son işleme geri dönmek için git stash'a bakın . Bu noktada, saklanan değişikliklerinizi uygulayabilir veya atabilirsiniz.
Linux'taysanız:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
For döngüsü, yerel depoda değiştirilen tüm izlenen dosyaları silecektir, bu nedenle git pull
sorunsuz çalışacaktır.
Bununla ilgili en güzel şey, sadece izlenen dosyaların üzerine repodaki dosyalar tarafından yazılması, diğer tüm dosyaların dokunulmadan bırakılmasıdır.
bu benim için çalıştı
git fetch --all
git reset --hard origin/master
git pull origin master
kabul edilen cevapla çakışma hataları alıyorum
Genellikle yaparım:
git checkout .
git pull
Projenin kök klasöründe.
.gitignore
".Gitignore'a istenmeyen dosyalar eklemek, onları başlangıçta herhangi bir şubeye işlemediğiniz sürece çalışır."
Ayrıca şunları da çalıştırabilirsiniz:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html