Geniş bir GitHub deposunu necə yeniləyə bilər?

Bu yaxınlarda layihəni markalı və bir neçə düzəliş tətbiq etmişdim. Daha sonra qəbul edilmiş bir transfer sorğusu yaratdım.

Bir neçə gün sonra başqa bir dəyişiklik digər bir iştirakçı tərəfindən qəbul edildi. Beləliklə, mənim fişim bu dəyişiklik içərisində deyil ... Bu dəyişikliyi mənim fişimdə necə əldə edə bilərəm?

Əlavə dəyişikliklər etmək üçün mənim fişimi aradan qaldırmaq və yenidən yaratmaq lazımdırmı? Və ya yeniləmə düyməsini var?

2522
30 авг. Lea Hayes tərəfindən təyin olunan 30 av. 2011-08-30 16:53 '11 'da 16:53' da 2011-08-30 16:53
@ 15 cavab

Dalılı deponun yerli klonunda orijinal GitHub deposunu "uzaq" kimi əlavə edə bilərsiniz. ("Silinmələr" ehtiyat URL-lər üçün ləqəb kimidir - məsələn, origin ). Daha sonra bu upstream deposundan bütün filialları əldə edə bilərsiniz və upstream versiyasında işə davam etmək üçün işinizi yenidən yükləyə bilərsiniz. Bu kimi görünən əmrlər baxımından:

 # Add the remote, call it "upstream": git remote add upstream https://github.com/whoever/whatever.git # Fetch all the branches of that remote into remote-tracking branches, # such as upstream/master: git fetch upstream # Make sure that you're on your master branch: git checkout master # Rewrite your master branch so that any commits of yours that # aren't already in upstream/master are replayed on top of that # other branch: git rebase upstream/master 

Əsas şöbünüzün tarixini yenidən yazmaq istəmirsinizsə (məsələn, digər insanlar bunu klonlaya bilirlərsə), son git merge upstream/master əmrini git merge upstream/master . Bununla birlikdə, istəklərin mümkün qədər təmiz olmasını təmin etmək üçün, ehtimal ki, yenidən hazırlamaq yaxşı olar.


Əgər upstream/master zərər vurmuş olsanız, onu GitHub-da öz geniş ehtiyatına basmaq üçün məcbur etmək lazımdır. Bunu bunu:

 git push -f origin master 

Yenidən quraşdırıldıqdan sonra -f istifadə -f .

2769
30 авг. Mark Longair tərəfindən verilmiş cavab 30 avqust . 2011-08-30 17:01 '11 'də 17:01' də 2011-08-30 17:01

2014-cü ilin may ayından etibarən pluginizi birbaşa GitHub-dan təkmilləşdirə bilərsiniz. Hələ hələ 2017-ci ilin sentyabrından başlayır, amma çirkli bir fiksasiya tarixinə səbəb olacaq.

  • Gitibinizə açın.
  • Çekin İstekleri'ni basın .
  • Yeni Pull Request basın . Mənim cari olaraq, GitHub orijinal çatalınızla müqayisə edir və heç bir dəyişiklik etmədiyiniz təqdirdə müqayisə etmək üçün heç bir şey olmur.
  • Bu linki görürsəniz bazanı bağlayın . Əks halda, əsas çəngənizi çəngəl və baş çəngənənə yuxarıya doğru əllə buraxın. İndi GitHub pluginizi orijinal ilə müqayisə edəcək və bütün son dəyişiklikləri görməlisiniz. 2019
25 мая '14 в 10:31 2014-05-25 10:31 Cavab lövzik verilir May 25 '14 at 10:31 2014-05-25 10:31

Sync Fork haqqında rəsmi GitHub sənədidir:

Synk fork

Özelleştirme

Sinxronizasiya etməzdən əvvəl, upstream havuzunu göstərən silinmiş bir maddə əlavə etməlisiniz. Yəqin ki, əvvəlcədən dallanmış olduğunuz zaman bunu etmədi.

Şurası Sync fork yeniləmələri yalnız deponun yerli nüsxəsini; github'taki depounuzu güncellemez.

 $ git remote -v # List the current remotes origin https://github.com/user/repo.git (fetch) origin https://github.com/user/repo.git (push) $ git remote add upstream https://github.com/otheruser/repo.git # Set a new remote $ git remote -v # Verify new remote origin https://github.com/user/repo.git (fetch) origin https://github.com/user/repo.git (push) upstream https://github.com/otheruser/repo.git (fetch) upstream https://github.com/otheruser/repo.git (push) 

Sinxronizasiya

Depoları yuxarı axınla sinxronlaşdırmaq üçün iki addım tələb olunur: əvvəlcə konsoldan çıxarmaq lazımdır, onda istədiyiniz filialı yerli şöbəyə birləşdirməlisiniz.

Fetching

Uzaq bir deposundan çıxarma onun şöbələrinə və müvafiq əmrlərinə səbəb olacaq. Onlar yerli filialda xüsusi filiallarda saxlanılır.

 $ git fetch upstream # Grab the upstream remote branches remote: Counting objects: 75, done. remote: Compressing objects: 100% (53/53), done. remote: Total 62 (delta 27), reused 44 (delta 9) Unpacking objects: 100% (62/62), done. From https://github.com/otheruser/repo * [new branch] master -> upstream/master 

İndi yerli şöbədə saxlanılan bir upstream filialı var, yuxarı / aşağı

 $ git branch -va # List all local and remote-tracking branches * master a422352 My local commit remotes/origin/HEAD -> origin/master remotes/origin/master a422352 My local commit remotes/upstream/master 5fdff0f Some upstream commit 

Birləşmə

Artıq upstream depounu seçmiş olduğumuz üçün, dəyişikliklərimizi yerli şöbəyə birləşdirmək istəyirik. Bu, yerli şəffaflığın itirilmədən bu filialın sinxronlaşdırılmasına gətirib çıxaracaq.

 $ git checkout master # Check out our local master branch Switched to branch 'master' $ git merge upstream/master # Merge upstream master into our own Updating a422352..5fdff0f Fast-forward README | 9 ------- README.md | 7 ++++++ 2 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 README create mode 100644 README.md 

Yerli şöbünüzdə heç bir əşya yoxdur, əvəzinə sürətli irəliləyir:

 $ git merge upstream/master Updating 34e91da..16c56ad Fast-forward README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 

Şurası GitHub'taki depolarınızı güncellemek istəyirsinizsə, burada talimatları baxın.

325
22 окт. cümə axşamı cümə günü verilən cavabı . 2013-10-22 02:04 '13 at 2:04 2013-10-22 02:04

Çox cavablar çatalın bir kilidini ana vəsaitdən qabaq hərəkətə gətirir. Bu cavab, çəngəlinizi valideyn kimi eyni fiksasiya etməyə yönəldən burada göstərilən addımları ümumiləşdirir.

  • Yerli deposuna kataloq dəyişdirin.

    • Git git checkout master deyilsinizsə, əsas şöbəyə gedin
  • Üst obyekti əlavə olaraq əlavə edin, git remote add upstream <repo-location>

  • git fetch upstream problem git fetch upstream
  • git rebase upstream/master problemi

    • Bu nöqtədə, git status yazaraq nə birləşdiriləcəkləri düzəltməsini yoxlayın
  • git push origin master problemini həll edin

Bu əmrlər haqqında ətraflı məlumat üçün, 3-cü addına baxın.

68
05 авг. Cavab Sahar Rabinoviz 05 avqustda verilir. 2015-08-05 17:59 '15 'da 17:59' de

2013-cü ilin noyabr ayından etibarən, GitHub-dan qeyri-rəsmi bir xüsusiyyət tələbi açılmışdır ki, yerli fiş upstream ilə sinxronlaşdırmaq üçün çox sadə və intuitiv üsul əlavə etmələrini xahiş etmək üçün:

https://github.com/isaacs/github/issues/121

Qeyd Bədii istək qeyri-rəsmi olduğundan, tətbiq olunacaq kimi bir xüsusiyyətə dəstək vermək üçün support@github.com müraciət support@github.com . Yuxarıda göstərilən qeyri-rəsmi xüsusiyyət tələbi bu prosesin nə qədər maraqlı olduğuna dair sübut kimi istifadə edilə bilər.

32
21 февр. Cavab verildi 21 fevral. 2016-02-21 13:42 '16 saat 13:42 'da 2016-02-21 13:42

Önsöz: Sizin pluginiz "qaynaq "dır və siz dalslı olduğunuz depo" yuxarıdır ".

Aşağıdakı əmrdən istifadə edərək, artıq sizin kompüterinizə klonlandığınızı bildirin:

 git clone git@github.com:your_name/project_name.git cd project_name 

Bu göstərildiyi təqdirdə, aşağıdakı qaydada davam etməliyik:

  • Klonlanmış depoyunuza ("mənşə") "upstream" əlavə edin:

     git remote add upstream git@github.com:original_author/project_name.git 
  • Upstream-dən əmrləri (və filialları) çıxarın:

     git fetch upstream 
  • Çatalın "aparıcı" filialına keçmək ("mənşə"):

     git checkout master 
  • "Master" şöbünüzə dəyişiklikləri qeyd edin:

     git stash 
  • Dəyişiklikləri "aparıcı" filialdan "upstream" dən "mənşəyinizin" "əsas" filialına birləşdirin:

     git merge upstream/master 
  • Birləşmə münaqişələrini aradan qaldırın, əgər varsa və birləşdirsəniz

     git commit -am "Merged from upstream" 
  • Değişikliklerinizi fişinizə daxil edin

     git push 
  • Gizli dəyişikliklərinizi (varsa) qaytarın

     git stash pop 
  • Sən başa düşdün! Təbrik edirik!

GitHub da bu mövzu üçün təlimatlar verir: Sync Fork

21
16 марта '16 в 15:24 2016-03-16 15:24 Cavab Benny Neugebauer tərəfindən 16 Mart '16 'da 15:24 2016-03-16 15:24' də verilir

Bu cavabın tarixindən bəri, GitHub ( və ya demək deyiləmmi? ) Veb arayüzündeki funksiya yoxdur. Bununla yanaşı, səsinizi əlavə support@github.com müraciət edə bilərsiniz.

Eyni zamanda, GitHub bardiharborow istifadəçisi bunun üçün bir vasitə yaratdı: https://upriver.github.io/

Mənbə burada: https://github.com/upriver/upriver.github.io

17
14 сент. cavab Lucero 14 sep tərəfindən verilir . 2016-09-14 17:22 '16 'da saat 17: 30' da 2016-09-14 17:22

Əgər mənim kimi, sən həqiqətən usta ilə heç bir şeyi heç bir şey etməsən , aşağıdakıları edə bilərsiniz.

Çatalınızın yerli bir klonundan, uplink konsolunuzu yaradın. Yalnız bir dəfə bunu etmək lazımdır:

 git remote add upstream https://github.com/whoever/whatever.git 

Sonra, əsas depo havuzunun şöbəsini tutmaq istədiyiniz zaman:

 git checkout master git pull upstream master 

Evinizdə heç bir şey etməmiş olduğunuzu düşünürsən, artıq bunu etməlisiniz. İndi uzaq GitHub pluginizdeki yerli sihirbazı tıklaya bilərsiniz. İnkişaf şöbəsini müasir yerli ev sahibinizə də bərpa edə bilərsiniz.

Belə ki, ilk qurulmadan və əsas testdən əvvəl, bütün lazım olanları lideri upstream ilə sinxronizasiya etmək üçün aşağıdakı əmri çalıştırın: git upstream master çəkin .

10
03 янв. cavab Slion 03 jan verilir . 2017-01-03 19:59 '17 də 7:59 'da 2017-01-03 19:59

Windows üçün GitHub istifadə edirsinizsə, onda indi forkları yeniləmək üçün bir klik funksiyası var:

  • İstifadəçi interfeysində repo seçin.
  • Üst tərəfdən "İstifadəçi / filialdan yeniləmə" düyməsini basın.
6
01 апр. Cavab verilir: ShitalShah 01 Apr. 2016-04-01 00:45 '16 'da 0:45' də 2016-04-01 00:45

Aşağıdakı addımları yerinə yetirin. Mən onları sınamışam və bu mənə kömək etdi.

Şöbünüzdə satın alın

Sintaksis: git şöbünüzDevelopmentBranch
Misal: git checkout sihirbazı

Ən son kodu almaq üçün qaynaq deposunun şəffaflığını dayandırın.

Sintaksis: git https://github.com/tastejs/awesome-app-ideas master çəkin
Məsələn: git https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO gedin BRANCH_NAME

6
15 янв. Cavab Venkat.R Jan 15 tərəfindən verilir 2016-01-15 15:31 '16 saat 15:31 'də 2016-01-15 15:31

Əslində brauzerinizdə hər hansı bir upstream fiksasiya ilə çəngəl bir filial yarada bilərsiniz:

2019

18 янв. Cavab verilir max630 Jan 18 2017-01-18 09:41 '17 da 9:41 'də 2017-01-18 09:41' də

Darmadağın depolarımı bir satırla yeniləyirəm:

 git pull https://github.com/forkuser/forkedrepo.git branch 

Burada yerləşdirilən digər həllər kimi, layihəinizə uzaq bir son nöqtə əlavə etmək istəməsəniz istifadə edin.

1
08 сент. Cavab R.Bravo 08 sep tərəfindən verilir . 2017-09-08 05:00 '17 də 5:00 'də 2017-09-08 05:00

Bu cavaba əlavə olaraq, klonlanan reponun bütün uzaqdan izləmə filiallarını bir anda yuxarı axından yeniləmək üçün bir yol axtarırdıq. Bunu necə etdi.

upstream qaynağında upstream in uzaq bir göstəricisini artıq quraşdırdıq və gedin upstream ilə senkronize etdiyiniz ehtimal olunur.

Run:

 for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done 

Bu komandanın birinci hissəsi upstream məsafədən repo üzrə bütün fəsilləri siyahıya salır və SHA-1 prefiksini və /refs/heads/ .

Sonra bu filialların hər biri üçün uzaq filialın ( refs/remotes/upstream/<branch> ) birbaşa uzaq şöbəyə origin ( refs/heads/<branch> ) yerli nüsxəsini çıxaracaqdır.

Bu filialların sinxronizasiya əmrlərindən hər hansı biri iki səbəbdən birini tamamlaya bilər: ya upstream filial yenidən yazılmışdır, ya da çubuqda bu filiala düzəliş etmişsiniz. Birinci halda, çəngənizə filan qoymadığınız zaman sərt keçmək təhlükəsizdir ( git push -f ). Başqa bir vəziyyətdə fork şöbəsi diverging olduğunda normaldır və əmrlərinizi upstream birləşdirilmədikcə sinxronlaşdırma qrupunun işləməsini gözləməyəcəksiniz.

1
12 июня '17 в 23:17 2017-06-12 23:17 Thomas Guyot-Sionnest tərəfindən 12 İyun '17 'də 11:17 2017-06-12 23:17' də cavab verildi

Bu köşkünüzün ölçüsündən və necə dallanmış olduğunuzdan asılıdır.

Bu olduqca böyük bir deposu varsa, onu xüsusi bir şəkildə idarə etmək istəyə bilərsiniz (məsələn, tarixin yenidən yazılması). Əsasən, cari və artan versiyaların arasındakı fərqləri əldə edə bilərsiniz, onları düzəltməlisiniz və daha sonra albəyə sürükləyin.

Bunu oxumaq cəhd edin. Böyük Git depolarını və ən son dəyişikliklər ilə necə keçəcəyini necə izah edir.

0
23 апр. cavab s0nicYouth 23 apr verilir . 2017-04-23 15:47 '17 saat 15:47 2017-04-23 15:47

Android Studio artıq github fork depoları ilə necə işlədiyini öyrəndi (hətta konsol əmri ilə "upstream" uzaq bir deposu əlavə etmək lazım deyil)

VCS → git menyusunu açın

və son 2 popup menyusuna diqqət yetirin:

  • Mənim github plug təmir

  • Stretch tələbi yaradın

Onları sınayın. Birincisini uğurla istifadə edirəm. Hər halda, dallaşdırılmış olduğunuz uzaq dükandan gələn yuxarı şöbələrdən sonra, Android Studio'da mövcud olacaq və asanlıqla onlarla işləyə bilərsiniz.

("Go integration" və "github" plugins ilə Android Studio 3.0 istifadə edirəm)

2019

13 нояб. Alexshr tərəfindən verilmişdir cavab Nov 13 2017-11-13 23:03 '17 də 11:03 PM 2017-11-13 23:03

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