مشخصات مقاله
-
315
-
0.0
-
2103
-
0
-
0
Pull در GitHub
Pull در GitHub
Pull کردن برای به روز رسانی با تغییرات
اگر یک تیم هم زمان بر پروژه ای بر GitHub کار کنند، به روز رسانی کد برای بقیه اعضا تیم بسیار اهمیت دارد.
اعضا تیم باید همواره، در نسخه محلی خود، به آخرین نسخه برنامه دسترسی داشته باشند.
در Git، این عملیات با استفاده از Pull انجام میشود.
- fetch
- merge
بیایید نگاه عمیق تری به طرز کار fetch، merge و pull بیندازیم.
Git Fetch
fetch تاریخچه تمامی branch/repo های tracked شده را دریافت میکند.
پس میتوانید در local Git خود، به روز رسانی ها را fetch کرده و تغییرات ایجاد شده بر GitHub را مشاهده کنید:
git fetch origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 733 bytes | 3.00 KiB/s, done.
From https://github.com/w3schools-test/hello-world
e0b6038..d29d69f master -> origin/master
حالا که تغییرات (changes) ایجاد شده اخیر را مشاهده کردیم، میتوانیم status خود را بررسی کنیم:
git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
حالا یک commit با origin/master فاصله داریم. که آن هم احتمالا به روز رسانی README.md است، اما برای اطمینان log را بررسی میکنیم:
git log origin/master
commit d29d69ffe2ee9e6df6fa0d313bb0592b50f3b853 (origin/master)
Author: w3schools-test <77673807+w3schools-test@users.noreply.github.com>
Date: Fri Mar 26 14:59:14 2021 +0100
Updated README.md with a line about GitHub
commit e0b6038b1345e50aca8885d8fd322fc0e5765c3b (HEAD -> master)
Merge: dfa79db 1f1584e
Author: w3schools-test Date: Fri Mar 26 12:42:56 2021 +0100 merged with hello-world-images after fixing conflicts ... ...
همه چیز درست به نظر میرسد، اما میتوانیم با مشاهده تفاوت های master محلی مان و origin/master نیز به این نتیجه برسیم:
git diff origin/master
diff --git a/README.md b/README.md
index 23a0122..a980c39 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,4 @@
Hello World repository for Git tutorial
This is an example repository for the Git tutoial on https://www.w3schools.com
-This repository is built step by step in the tutorial.
-
-It now includes steps for GitHub
+This repository is built step by step in the tutorial.
\ No newline at end of file
کاملا درست به نظر میرسد! حالا میتوانیم با خیال راحت merge را انجام دهیم.
Git Merge
عملیات merge، branch موجود را با یک branch مشخص ترکیب میکند.
حالا که از درست بودن update ها اطمینان حاصل کرده ایم، میتوانیم branch حال حاض مان(master) را با origin/master ادغام کنیم:
git merge origin/master
Updating e0b6038..d29d69f
Fast-forward
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
دوباره status خود را بررسی میکنیم تا از به روز بودن خود اطمینان حاصل کنیم:
git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
تمام! حالا local git مان update شده است!
Git Pull
اما چگونه میتوانیم، بدون نیاز به تمامی این گام ها، local repository خود را به روز رسانی کنیم؟
Pull، ترکیبی از fetch و merge است تا تمامی تغییرات را از remote repository گرفته و به branch ای که بر آن کار میکنید، منتقل کند
تغییر دیگری در فایل Readme.md موجود در GitHub ایجاد کنید.

با استفاده از pull، local Git خود را به روز رسانی کنید:
git pull origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 794 bytes | 1024 bytes/s, done.
From https://github.com/w3schools-test/hello-world
a7cdd4b..ab6b4ed master -> origin/master
Updating a7cdd4b..ab6b4ed
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)
به این شکل میتوانید local Git خود را از یک remote repository به روز رسانی کنید.
در مقالات بعد، نگاه عمیق تری به عملکرد Push در GitHub خواهیم داشت.