Kion signifas fetch merge kaj pull en Git?

Multfoje kunlaborantoj havas demandojn pri la malsameco inter fetch (eo: prenu), merge (eo: kunigi) kaj pull (eo: tiru) en GIT. Mi penas klarigi ĝin ĉi tie.

Unue, iom da fonkono. Kiam vi unue entajpas git init git kreas .git dosierujon por trakti la novan git deponejon, almenaŭ komence ĝi nur enhavas informon pri via loka deponejo. Kiam vi unue git push al malloka deponejo git kopios la lokan deponejon al la nova loko, kaj ĝi ankaŭ konservas lokan kopion de la malloko stato. Plue kiam vi faras git clone git kopias mallokan deponejon kaj denove kreas lokan deponejon kaj lokan kopion de la malloka deponejo.

Nun ni povas paroli pri la tri komandoj. Prenu ĝisdatigas la lokan kopion de la mallokan deponejon. De tie se vi volas ĝisdatigi vian lokan deponejon vi povas kunigi la ŝanĝojn ekzemple (git merge mastro github/mastro). Tio kunigas la ŝangojn de la kopio de la malloka deponejo github/mastro al la loka deponejo mastro. Kaj finfine prenu unue tiras kaj tiam kunigas la branĉojn por vi per unu komando.

Resume (kun la anglaj komandoj):

`fetch` - por ĝisdatigi vian lokan kopion de malloka deponejo
`merge` - por kunigi du branĉojn aŭ lokajn branĉojn aŭ kopiojn de
          mallokaj branĉoj aŭ kombino de la du
`pull` - `fetch` tiam `merge`

Ankaŭ estas du manieroj por kunigi du branĉojn, kiun mi priverkos poste. Ankaŭ pro la mallokeco de Git vi ankaŭ povas trakti multajn mallokajn deponejojn kiun mi ankaŭ preverkos poste.