14 Temmuz 2020 Salı

git pull seçeneği - Remote Repository'deki Değişiklikler Bizim Repository'imize Merge Edilir

Giriş
İmzası şöyle
git pull [<options>] [<repository> [<refspec>…​]]
Bu komut ile remote repository'deki değişiklikler bizim repository'imize merge edilir.

Bu komut aslında iki komutun birleşimidir. Açıklaması şöyle
git pull = git fetch + git merge
Şeklen şöyle


git fetch Nedir?
git fetch tek başına merge işlemi yapmaz. Açıklaması şöyle
git fetch will download new data from a remote repository but it will not integrate any of this new data into your working files.
Öyleyse git pull Nedir?
Açıklaması şöyle. Yani aslında remote repository'deki değişiklikleri kendi branch'imize getirir.
- git pull origin master fetches commits from the master branch of the origin remote (into the local origin/master branch), and then it merges origin/master into the branch you currently have checked out.
- git pull only works if the branch you have checked out is tracking an upstream branch. For example, if the branch you have checked out tracks origin/master, git pull is equivalent to git pull origin master
Bir başka açıklama şöyle
The git pull command is used to fetch and download content from a remote repository and immediately update the local repository to match that content. The git pull command is a combination of git fetch and git mergegit merge will download the content from the remote repository. Once the content is downloaded, git merge will merge the content to your local repository. A new merge commit will be created and HEAD updated to point at the new commit.

Now that we know what git pull does, when we do  git pull origin master, it simply fetches a copy of the master branch from the original repository, and merges it with the current branch that you have checked out.
Conflict Varsa
"git pull origin master" komutu çalışınca conflict görebiliriz. Bunlar çözmek gerekir.

Eğer değişiklikleri beğenmez ve eski haline getirmek istersek
git reset --hard HEAD komutunu çalıştırmak lazım.

--allow-unrelated-histories seçeneği
"fatal: refusing to merge unrelated histories" hatası varsa kullanılır. Açıklaması şöyle
The command makes it possible to merge unrelated branches. It works seamlessly unless there are file conflicts. If conflicts are discovered, there is no other choice but to use the longer solution.

Örnek
Şöyle yaparız
git pull origin master --allow-unrelated-histories
Push Yaparsak
Commit sırası olarak şunu görürüz Kendi yaptığımız f1, f2 değişiklikleri commitlenir, daha sonra bir başkası tarafından yapılan m4,m5 değişiklikleri commitlenir
m1 -> m2 -> m2 -> f1 -> f2 -> m4 -> m5 -> merged with master
-u seçeneği
Şöyle yaparız
git pull -u origin master



Hiç yorum yok:

Yorum Gönder