Go etmək üçün necə yerli faylları ləğv etmək olar?

git pull yerli faylları necə zorla yazmaq olar?

Ssenarisi aşağıdakı kimidir:

  • Komanda üzvləri biz işləyən sayt üçün şablonları dəyişir
  • Şəkil kataloquna bəzi şəkillər əlavə edirlər (ancaq onları mənbə kodunun nəzarəti altında əlavə etmək üçün unutma)
  • Onlar şəkilləri poçtla, sonra mənə göndərirlər
  • Mən mənbə kodunun nəzarəti altında şəkillər əlavə edirəm və digər dəyişikliklərlə birlikdə onları GitHub üzərinə qoyuram.
  • Git-dən yeniləmələri ala bilmirlər, çünki Git fayllarının üzərində yazmaq istəmir.

Aldığım səhvdir:

səhv: untracked iş ağacı faylının 'public / images / icon.gif' birləşməsi ilə əvəz olunacaq

Git'i necə yazmaq olar? Bu şəxs dizaynerdir. Mən adətən bütün münaqişələri əllə həll edirəm, buna görə də son versiya serverdə quraşdırılır və onlar yalnız kompüterlərində yeniləməlidirlər.

5705
14 июля '09 в 17:58 2009-07-14 17:58 İyulun 14-də saat 17: 56-da Jakub Troszokdan soruşduqda 2009-07-14 17:58
@ 39 cavab
  • 1
  • 2

Vacib: hər hansı bir yerli dəyişiklik varsa, onlar itirilmiş olacaq. - --hard seçimi ilə və ya olmasaydı, --hard bütün yerli --hard bilər. [*]

Git tərəfindən izlənməmiş fayllarınız varsa (məsələn, yüklənmiş istifadəçi məzmunu), bu fayllar təsirlənməyəcəkdir.


Hesab edirəm ki, bu doğru yol:

 git fetch --all 

Sonra iki variantınız var:

 git reset --hard origin/master 

Yoxsa başqa bir şöbədə olsanız:

 git reset --hard origin/<branch_name> 

Şərhlər:

git fetch bir şey birləşdirməyə və ya hərəkət etməyə cəhd etmədən uzaq bir kompüterdən son məlumatları yükləyin.

Sonra git reset əsas şöbəni yeni qəbul etdiyinizə qaytarır. Seçim - --hard origin/master fayllarına görə iş ağacınızdakı bütün faylları dəyişir


Mövcud yerli vəzifələri qoruyun

[*] : Xatırladaq ki, mövcud olan yerli əmrləri masterdan filiala master üçün bir filial yaratmaqla saxlaya bilərsiniz:

 git checkout master git branch new-branch-to-save-current-commits git fetch --all git reset --hard origin/master 

Bundan sonra bütün köhnə əmrlər new-branch-to-save-current-commits saxlanacaq.

Dəyişikliklər gözləyir

Ancaq dəyişməz dəyişikliklər (hətta mərhələli) itəcək. Gizlətdiyiniz və lazım olan hər şeyi ötürdüyünüzə əmin olun. Bunu etmək üçün aşağıdakıları yerinə yetirə bilərsiniz:

 git stash 

Və sonra bu uncomputed dəyişikliklər yenidən:

 git stash pop 
7980
17 янв. Cavab RNT 17 yanvar verilir . 2012-01-17 03:02 '12 at 3:02 2012-01-17 03:02

Aşağıdakıları cəhd edin:

 git reset --hard HEAD git pull 
border=0

İstədiyiniz şeyi etməlidir.

798
09 мая '10 в 22:45 2010-05-09 22:45 Travis Reeder'e 09 may 2010-cu ildə 10: 45-də cavab verib 2010-05-09 22:45

DİQQƏT: git clean bütün untraceable faylları / rehberler aradan qaldırır və geri alınamaz.


Bəzən yalnız clean -f kömək etmir. Hər hansı bir izlənilən qovluğunuz yoxdursa, -d variantına da ehtiyac var:

 # WARNING: this can't be undone! git reset --hard HEAD git clean -f -d git pull 

DİQQƏT: git clean bütün untraceable faylları / rehberler aradan qaldırır və geri alınamaz.

-n istifadə edin -n ( --dry-run ). Bu, əslində heç bir şeyi silmədən nə çıxarılacağını göstərəcəkdir:

 git clean -n -f -d 

Nümunə çıxışı:

 Would remove untracked-file-1.txt Would remove untracked-file-2.txt Would remove untracked/folder ... 
406
19 марта '11 в 12:10 2011-03-19 12:10 Cavab David Avsajanishvili tərəfindən 19 Mart '12 'də saat 12:10' də verildi. 2011-03-19 12:10

Kirpi kimi, mən cavabları dəhşətli hesab edirəm. Lakin Hedgehog cavab daha yaxşı ola bilər baxmayaraq, mən ola bilər kimi zərif olduğunu düşünmürəm. Mən tapdım ki, müəyyən bir strategiya ilə "nümunə" və "birləşmə" dan istifadə etməkdir. Bu, yerli dəyişikliklərin yazılmağa çalışdığınız fayllardan birinə qədər saxlandığından əmin olmalıdır.

Əvvəlcə dəyişikliklər edilməlidir.

  git add * git commit -a -m "local file server commit message" 

Çatışmalar varsa, dəyişiklikləri geri al və yenidən yaz.

  git fetch origin master git merge -s recursive -X theirs origin/master 

"- X" variantın adıdır və "onların" bu seçim üçün dəyərdir. Çatışmalar varsa, "sizin" dəyişikliklərinizi "sizin" dəyişikliklərinizdən istifadə etməyi üstün edirsiniz.

347
11 апр. Richard Kersey tərəfindən verilmiş cavab 11 aprel 2012-04-11 23:13 '12 at 11:13 PM 2012-04-11 23:13

Bunun əvəzinə:

 git fetch --all git reset --hard origin/master 

Aşağıdakıları məsləhət görərdim:

 git fetch origin master git reset --hard origin/master 

Doğrudan mənşə / magistral şöbəsinə sıfırlamağa gedirsinizsə, bütün konsollar və filialları götürməyin?

248
26 апр. Johanneke 26 Aprel tarixində göndərdi 2013-04-26 16:48 '13 'da 16:48 2013-04-26 16:48

Bunu etmək üçün ən yaxşı şey budur:

 git clean 

İstifadə edilməmiş bütün faylları aradan qaldırmaq və normal git pull davam etmək ...

125
14 июля '09 в 18:16 2009-07-14 18:16 Cavab Jakub Troszok tərəfindən 14 İyul 2009 'da saat 06:16' da verildi. 2009-07-14 18:16

Diqqət, bu sizin gitignore dosyanızda hər hansı bir / bir kataloq girişiniz varsa, bu faylları daimi olaraq siləcəkdir.

Bəzi cavablar dəhşətli görünür. David Avsadjişişvilinin təklifindən sonra @ Lauri ilə nə baş verdiyini anlamırdı.

Əksinə (git> v1.7.6):

 git stash --include-untracked git pull 

Daha sonra tarixin önbelleğini təmizləyə bilərsiniz.

Əllə, bir-bir:

 $ git stash list stash@{0}: WIP on <branch>: ... stash@{1}: WIP on <branch>: ... $ git stash drop stash@{0} $ git stash drop stash@{1} 

Qəddar, hamısı birbaşa:

 $ git stash clear 

Əlbəttə, gizlətdiyinizə geri dönmək istəyirsən:

 $ git stash list ... $ git stash apply stash@{5} 
102
12 февр. Cavab 12 fevral tarixində Hedgehog tərəfindən verilir. 2012-02-12 02:00 '12 saat 02:00 'da 2012-02-12 02:00' də

Yerli dəyişiklikləri silmək üçün bu komandanı faydalı ola bilərsiniz:

 git checkout <your-branch> -f 

Və sonra təmizləmə (xammal faylları iş ağacından silinir):

 git clean -f 

İzinsiz fayllara əlavə olaraq lazımsız dizinləri silmək istəsəniz:

 git clean -fd 
88
05 авг. Cavab Vishal 05 aug tərəfindən verilir . 2010-08-05 21:06 '10 at 21:06 2010-08-05 21:06

git pull birləşmək yerinə bu cəhd edin:

git fetch --all

izlədi:

git reset --hard origin/master .

81
22 нояб. Cavab Lloyd Moore tərəfindən 22 noyabrda verilir. 2012-11-22 13:56 '12 at 13:56 pm 2012-11-22 13:56

Mənim üçün işləyən yeganə şey:

 git reset --hard HEAD~5 

Bu sizə beş əmr verəcəkdir

 git pull 

Mən birləşmənin necə birləşdirilməsinə baxaraq gördüm.

54
06 мая '11 в 0:53 2011-05-06 00:53 cavab 06 may 2011-ci il tarixdə 0:53 2011-05-06 00:53 tarixində Chris Byllante tərəfindən verilmişdir

Bütün bu həllər ilə problem, ya çox mürəkkəb və ya daha da ciddi problemdir ki, istəməyən web serverdən bütün xam faylları silməkdir, çünki həmişə serverdə olan konfiqurasiya faylları həmişə tələb olunur və git qovluğunda deyil.

Burada istifadə etdiyimiz ən təmiz həlldir:

51
06 нояб. Strahinja Kustudic tərəfindən verilmiş cavab 06 noyabr 2012-11-06 02:32 '12 at 2:32 2012-11-06 02:32

Eyni problemim var. Heç kim mənə bu həllini vermədi, amma mənim üçün çalışdı.

Buna qərar verdim:

  1. Bütün faylları silin. Yalnız .git kataloqunu tərk edin.
  2. git reset --hard HEAD
  3. git pull
  4. git push

İndi işləyir.

38
13 янв. Cavab 13 yanvarda John John Pichler tərəfindən verildi 2011-01-13 02:58 '11 at 2:58 2011-01-13 02:58

Birincisi, standart yolu sınayın:

 git reset HEAD --hard # To remove all not committed changes! git clean -fd # To remove all untracked (non-git) files and folders! 

Xəbərdarlıq : yuxarıda göstərilən əmrlər məlumatların / faylların itirilməsinə gətirib çıxara bilər, ancaq onlar sabit deyil! Əgər əmin deyilsinizsə, əvvəlcə bütün deposu qovluğunuzu saxlaya bilərsiniz.

Sonra yenidən çəkin.

Yuxarıdakılar kömək etmirsə və icazəsiz fayllarınıza / dizinlerinizə ehtiyac duymuyorsanız (yalnız əvvəlcədən bir ehtiyat nüsxəsini çıxarın) aşağıdakı sadə addımları göstərin:

 cd your_git_repo # where 'your_git_repo' is your git repository folder rm -rfv * # WARNING: only run inside your git repository! git pull # pull the sources again 

Bu, bütün git dosyalarını (bütün .git/ olduğu yerdən .git/ dir istisna olmaqla) .git/ .


Niyə git reset HEAD --hard ? - git reset HEAD --hard bəzi hallarda işləməyəcəkmi?

  1. .gitattributes file istifadəçi qaydaları

    Gigatitributlardaki eol eol=lf lf qayda varlığı, faylın bəzi dəyişikliklərini dəyişdirmək, bəzi mətn fayllarında CRLF xətlərinin sonlarını konvertasiya etməyə səbəb ola bilər.

    Əgər belədirsə, bu CRLF / LF dəyişikliklərini ( git config core.autcrlf false git status ) git config core.autcrlf false və ya: git config core.autcrlf false müvəqqəti olaraq git config core.autcrlf false .

  2. Fayl sisteminin uyğunsuzluğu

    İzləmə xüsusiyyətlərini dəstəkləməyən bir fayl sistemini istifadə etdikdə. Məsələn, Linux / Mac ( ext3 / hfs+ ) üçün bir və FAT32 / NTFS əsaslı fayl sistemləri üçün iki ehtiyatınız vardır.

    Gördüyünüz kimi, iki müxtəlif fayl sistemi mövcuddur, beləliklə, Unix icazələrini dəstəkləməyən əsasən belə icazələrin dəstəklənməmiş bir sistemindəki faylların icazələrini sıfırlaya bilmir, buna görə də nə qədər --hard etsəniz, git həmişə bəzi "dəyişikliklər" algılar.

33
26 окт. Cavab 26 oktun kenorbasına verilir . 2012-10-26 12:17 '12 at 12:17 2012-10-26 12:17

Bonus:

Əvvəlki cavablarda çəkmək / qəbul etmək / birləşdirməkdən danışarkən maraqlı və məhsuldar bir oyun paylaşmaq istərdim:

git pull --rebase

Bu komanda çox vaxt xilas olan Git'imdə həyatımda ən faydalı qrupdur.

Serverinizə yeni tövsiyə göndərməzdən əvvəl, bu əmri cəhd edin və ən son server dəyişikliklərini (gətirməklə + birləşdirməklə) avtomatik olaraq sinxronizasiya edəcək və Git jurnalının üstünə qoyun. Əl istehsalı və birləşməsi barədə narahatlığa ehtiyac yoxdur.

Nə "git pull - rebase" in hissələrini tapın ? ,

31
23 дек. Cavab 23 dekabrda Sazzad Hissain Khan tərəfindən verilir. 2015-12-23 18:41 '15 saat 18:41 'de, 2015-12-23 18:41

Digər cavabları ümumiləşdirdim. git pull çəkinmədən səhvsiz çıxış edə bilərsiniz:

 git fetch --all git reset --hard origin/master git reset --hard HEAD git clean -f -d git pull 

Xəbərdarlıq Bu skript çox güclüdür, belə ki dəyişikliklərinizi itirəcəksiniz.

27
07 авг. Cavab Robert Moon 07 avqustda verilir. 2015-08-07 06:03 '15 'də saat 06:03' da

Bənzər bir problemim var idi. Bunu etmək məcburiyyətindəyəm:

 git reset --hard HEAD git clean -f git pull 
27
14 янв. Cavab Ryan tərəfindən verilir 2011-01-14 18:18 '11 'də 18:18' də 2011-01-14 18:18

Bu cür təcrübələrimə əsaslanaraq, Strahinja Kustudiçin təklif etdiyi həll ən yaxşısıdır. Başqalarının qeyd etdiyinə görə, sadəcə sıfırlama yerinə yetirmək bütün konfiqurasiya faylları kimi silmək istəməyən bir çox şeyi ehtiva edə biləcək bütün sınanmamış faylları aradan qaldıracaq. Daha təhlükəsiz olaraq, yalnız əlavə edilməli olan faylları silmək lazımdır və bunun üçün, yenə də yenilənməli olan yerli olaraq dəyişdirilmiş faylları yoxlamaq istərdiniz.

Buna görə Kustudic scriptini yeniləmişəm. Mən də yazı tipini (orijinal əskik) itirdim.

26
27 февр. Rolf Kaiserin 27 Fevralda verdiyi cavabı 2013-02-27 17:43 '13 at 17:43 2013-02-27 17:43

Hesab edirəm ki, ayrı-ayrılıqda həll olunmalı münaqişənin iki mümkün səbəbi var və mən deyə bilərik ki, yuxarıda göstərilən cavabların heç biri ikisi ilə əlaqədardır:

  • İzlənməmiş yerli fayllar əl ilə (daha təhlükəsiz) və ya digər cavablarda təklif olunduğu kimi git clean -f -d

  • Uzaq filialda olmayan yerli əməliyyatlar da silinməlidir. IMO bu nail olmaq üçün ən asan yoludur: git reset --hard origin/master (işlədiyiniz hər hansı bir şöbəsi ilə "master" ə əvəz edin və ilk növbədə git fetch origin idarə edin)

23
12 дек. Cavab tiho 12 dekabr verilir. 2011-12-12 22:54 '11 at 10:54 pm 2011-12-12 22:54

Daha asan bir yol:

 git checkout --theirs /path/to/file.extension git pull origin master 

Bu, yerli git faylını qüvvədə saxlayacaq.

20
05 мая '15 в 11:03 2015-05-05 11:03 cavab maximus verilir 69 05 May '15 at 11:03 2015-05-05 11:03

Buradakı cavabların əksəriyyəti master şöbəyə yönəlmiş görünür; Ancaq bəzən iki fərqli yerdəki funksiyaların eyni filialında işləyərkən hallar var və bunlardan biri birinin içərisində birinə, əksinə, çox sayda çarxlar olmadan əks etdirməsini istəyirəm.

RNT-nin cavabınıcavab torkun bənzər bir sualın birləşməsinə əsaslanaraq, əla işlə məşğul oldum:

 git fetch git reset --hard @{u} 

Filialdan atın və yalnız yerli şöbəni upstream versiyasına sıfırlayın.

Bu asanlıqla git ( git forcepull ) git forcepull yerləşdirilə bilər:

git config alias.forcepull "!git fetch ; git reset --hard @{u}"

Və ya .gitconfig faylında:

 [alias] forcepull = "!git fetch ; git reset --hard @{u}" 

Enjoy!

19
25 февр. Cavab 25 Fevralda JacobEvelyn tərəfindən verilir. 2014-02-25 20:19 '14 saat 20:19 2014-02-25 20:19

Mənim də eyni problemim var idi və nədənsə hətta git clean -f -d gedə bilmirdim. Buna görə: Nəzərə alsaq ki, faylınız Git tərəfindən nəzərə alınmırsa (.gitignore girişi vasitəsilə, mənim fikrimcə), yenə də onu yazmaqdan və onu ayırmaqdan narahatdır, amma şəbəkə siz əlavə etməyincə -x .

19
03 авг. Cavab Tierlieb 03 aug. 2011-08-03 12:23 '11 'da 12:23' de 2011-08-03 12:23

Mən yalnız özümə qərar verdim:

18
03 дек. Simon B. tərəfindən verilmiş cavab 03 dekabr. 2010-12-03 18:00 '10 saat 18:00 'da 2010-12-03 18:00' də

Qəribə bir vəziyyətim var ki, nə git clean nə də işə git reset . Müqavimət faylını git index hər bir untracked fayl üçün aşağıdakı scriptdən istifadə etmək lazımdır:

 git rm [file] 

Sonra yaxşı çəkə bilərəm.

17
19 сент. Sep 19-də Chen Zhang tərəfindən verilmiş cavab 2011-09-19 17:18 '11 'də 17:18' də 2011-09-19 17:18

Mən daha sadə və daha az ağrılı bir üsul bilirəm:

 $ git branch -m [branch_to_force_pull] tmp $ git fetch $ git checkout [branch_to_force_pull] $ git branch -D tmp 

Odur!

16
05 сент. cavab ddmytrenko 05 sep verilir . 2015-09-05 21:23 '15 at 21:23 2015-09-05 21:23

Bu dörd komanda mənim üçün çalışır.

 git reset --hard HEAD git checkout origin/master git branch -D master git checkout -b master 

Bu əmrləri yerinə yetirdikdən sonra yoxlamaq / çıxarmaq

 git pull origin master 

Çox çalışdım, amma nəhayət bu komandalarda uğur qazandım.

13
20 марта '14 в 7:24 2014-03-20 07:24 cavab cümə axşamı günü 20 mart '14, 7:24 'də veriləcək 2014-03-20 07:24

Orijinal suallara baxmayaraq, üst cavablar oxşar problemləri olan insanlar üçün problem yarada bilər, lakin yerli fayllarını itirmək istəmirlər. Məsələn, Əl-Punk və crizCraig tərəfindən şərh.

Növbəti versiya yerli şöbədə yerli dəyişikliklərinizi ( tmp ) düzəldir, mənbənin şöbəsini yoxlayır (mən hesab edirəm ki, master ) və yeniləmələri birləşdirir. Bunu stash ilə edə bilərsiniz, amma mən filialı / birləşmə yanaşmasını istifadə etmək üçün adətən daha asan tapdım.

 git checkout -b tmp git add *; git commit -am "my temporary files" git checkout master git fetch origin master git merge -s recursive -X theirs origin master 

başqa bir origin master olduğunu düşünürük.

12
22 окт. Snowcrash -ə 22 oktyabr cavab verildi 2014-10-22 20:31 '14 da 20:31 2014-10-22 20:31

Yalnız bunu

 git fetch origin branchname git checkout -f origin/branchname // This will overwrite ONLY new included files git checkout branchname git merge origin/branchname 

Beləliklə, saxlamaq istədiyiniz faylları və ya dizinləri silmək və s. Kimi istənməyən yan təsirlərin qarşısını alırsınız.

12
19 окт. istifadəçi tərəfindən cavab verildi2696128 19 oktyabr 2015-10-19 12:54 '15 at 12:54 2015-10-19 12:54

Göstərici və başı origin/master , lakin iş ağacını sıfırlamayın:

 git reset origin/master 
11
15 февр. Cavab 15 fevralda user811773 tərəfindən verilir. 2013-02-15 16:41 '13 saat 16:41 'da 2013-02-15 16:41

Tələblər:

  • Yerli dəyişiklikləri izləyin, onda heç kim onları itirmə.
  • Yerli depoları uzaq mənbə ehtiyatına uyğunlaşdırın.

Həll:

  • Yerli dəyişiklikləri gizlət .
  • Təmiz fayllarla alın .gitignoreköklü sıfırlama .

     git stash --include-untracked git fetch --all git clean -fdx git reset --hard origin/master 
9
02 сент. cavab verzenzen 02 Sentyabr 2015-09-02 02:00 '15 'də 2:00' də 2015-09-02 02:00 'də

Bütün cavabları oxudum, amma bunun üçün bir əmr axtarırdım. Mən bunu etdiyəm. Gitconfig üçün git alias əlavə edildi

 [alias] fp = "!f(){ git fetch ${1} ${2}  git reset --hard ${1}/${2};};f" 

Komandanı çalıştırın

 git fp origin master 

bərabərdir

 git fetch origin master git reset --hard origin/master 
9
08 июля '16 в 16:11 2016-07-08 16:11 Cavab Venkat Kotra tərəfindən verilir 08 iyul '16 16:11 2016-07-08 16:11
  • 1
  • 2

tags ilə bağlı digər suallar və ya bir sual