Nesen es sašūpoju projektu un piemēroju vairākus labojumus. Pēc tam es izveidoju pull pieprasījumu, kas tika pieņemts.
Pēc dažām dienām cits autors veica vēl vienu izmaiņu. Tāpēc manā forkā šīs izmaiņas nav iekļautas.
Kā es varu iekļaut šo izmaiņu savā dakšiņā? Vai man ir jāizdzēš un no jauna jāizveido sava fork, kad man ir vēl citas izmaiņas, ko es vēlos pievienot? Vai ir kāda atjaunināšanas poga?
Savā lokālajā klonā, kurā atrodas jūsu atdarinātā repozitorija, varat pievienot oriģinālo GitHub repozitoriju kā "attālo" ("Attālinātie" ir kā vietvārdi repozitoriju URL adresēm - piemēram, origin
ir viens no tiem).) Tad jūs varat iegūt visus zarus no šī augšupejošā repozitorija un pārbāzēt savu darbu, lai turpinātu strādāt ar augšupejošo versiju. Komandu izteiksmē tas varētu izskatīties šādi:
# 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
Ja nevēlaties pārrakstīt sava galvenā atzara vēsturi (piemēram, tāpēc, ka to var būt klonējuši citi cilvēki), tad pēdējā komanda jāaizstāj ar git merge upstream/master
. Tomēr, lai veiktu turpmākus pull pieprasījumus, kas ir pēc iespējas tīrāki, iespējams, labāk ir pārbāzēt.
Ja esat pārbāzējis savu atzaru uz upstream/master
, jums var būt nepieciešams piespiedu kārtā veikt push, lai to pārbāztu uz savu atvasināto repozitoriju GitHub. To var izdarīt ar:
git push -f origin master
Jums ir nepieciešams lietot -f
tikai pirmo reizi pēc pārbāzēšanas.
Sākot ar 2014. gada maiju, ir iespējams atjaunināt forku tieši no GitHub. Tas joprojām darbojas no 2017. gada septembra, BET tas novedīs pie netīras izmaiņu vēstures.
Update from original
).Tagad jums ir trīs iespējas, bet katra no tām novedīs pie ne visai tīras nodošanas vēstures.
This branch is X commits ahead, Y commits behind <original fork>
.Tātad, jā, jūs varat pastāvīgi atjaunināt savu repo kopā ar augšupejošo atzarojumu, izmantojot GitHub tīmekļa lietotāja saskarni, taču, to darot, tiks aptraipīta jūsu atzarojumu vēsture. Tā vietā izmantojiet komandrindu - tas ir vienkārši.
Šeit ir GitHub oficiālais dokuments par Syncing a fork:
Syncing a fork
Izkārtošana
Pirms sinhronizēšanas jums ir jāpievieno attālais, kas norāda uz augšupejošo repozitoriju. Iespējams, ka jūs to izdarījāt, kad sākotnēji veicāt sazarošanos.
Priekšlikuma sinhronizēšana atjaunina tikai jūsu lokālo repozitorija kopiju; tā neatjaunina jūsu repozitoriju GitHub..
$ git remote -v
Sarakstiet pašreizējos attālinātos kanālus
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
Iestatiet jaunu tālvadības pulti
$ git remote -v
Pārbaudīt jauno attālo
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)
Sinhronizēšana
Lai sinhronizētu savu repozitoriju ar augšupejošo, ir jāveic divi soļi: vispirms ir jāpaņem no attālinātā, pēc tam vajadzīgais zars jāapvieno savā lokālajā zarā.
Izņemšana
Lejupielādējot no attālinātā repozitorija, tiks ievāktas tā filiāles un to attiecīgie nodevumi. Tie tiek glabāti jūsu lokālajā repozitorijā īpašās filiālēs.
$ git fetch upstream
Paņemiet augšupejošā attālinātā arhīva filiāles
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
Tagad mums augšupejošais's galvenais zars ir saglabāts lokālajā zarā, upstream/master
$ git branch -va
Sarakstīt visus vietējos un attālinātos zarus
* master a422352 My local commit
remotes/origin/HEAD -> origin/master
remotes/origin/master a422352 My local commit
remotes/upstream/master 5fdff0f Some upstream commit
Savienošana
Tagad, kad esam ieguvuši augšupejošo repozitoriju, vēlamies tā izmaiņas apvienot ar mūsu vietējo zaru. Tādējādi šī filiāle tiks sinhronizēta ar augšupejošo, nezaudējot mūsu vietējās izmaiņas.
$ git checkout master
Pārbaudiet mūsu vietējo galveno zaru
Switched to branch 'master'
$ git merge upstream/master
Apvieno augšupejošās galvenās sadaļas galveno sadaļu ar mūsu pašu sadaļu
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
Ja jūsu lokālajā atzarā nav bijis nevienas unikālas kopijas, git tā vietā veiks "fast-forward":
$ git merge upstream/master Atjaunināšana 34e91da..16c56ad Ātrā pāreja uz priekšu README.md | 5 +++-- Izmainīts 1 fails, 3 iestarpinājumi(+), 2 dzēsumi(-)
Tips: Ja vēlaties atjaunināt savu repozitoriju GitHub vietnē, sekojiet norādījumiem šeit.