-
1. شروع به کار (getting started)
-
2. مقدمات گیت (git basics chapter)
- 2.1 گرفتن یک مخزن گیت (Getting a Git Repository)
- 2.2 ثبت تغییرات در مخزن (Recording Changes to the Repository)
- 2.3 مشاهده تاریخچه کامیتها (Viewing the Commit History)
- 2.4 بازگرداندن تغییرات (Undoing Things)
- 2.5 کار کردن با ریموت ها (Working with Remotes)
- 2.6 تگ کردن (Tagging)
- 2.7 نام مستعار گیت (Git Aliases)
- 2.8 خلاصه (summary)
-
3. انشعابگیری در گیت (Git Branching)
-
4. گیت روی سرور (Git on the server)
- 4.1 پروتکلها (The Protocols)
- 4.2 راهاندازی گیت روی یک سرور (Getting Git on a Server)
- 4.3 ایجاد کلید عمومی SSH شما (Generating Your SSH Public Key)
- 4.4 نصب و راهاندازی سرور (Setting up server)
- 4.5 سرویسدهنده گیت (Git Daemon)
- 4.6 HTTP هوشمند (Smart HTTP)
- 4.7 گیتوب (GitWeb)
- 4.8 گیتلب (GitLab)
- 4.9 گزینههای میزبانی شخص ثالث (Third Party Hosted Options)
- 4.10 خلاصه (Summary)
-
5. گیت توزیعشده (Distributed git)
-
6. GitHub (گیت هاب)
-
7. ابزارهای گیت (Git Tools)
- 7.1 انتخاب بازبینی (Revision Selection)
- 7.2 مرحلهبندی تعاملی (Interactive Staging)
- 7.3 ذخیره موقت و پاکسازی (Stashing and Cleaning)
- 7.4 Signing Your Work (امضای کارهای شما)
- 7.5 جستجو (Searching)
- 7.6 بازنویسی تاریخچه (Rewriting History)
- 7.7 بازنشانی به زبان ساده (Reset Demystified)
- 7.8 ادغام پیشرفته (Advanced Merging)
- 7.9 بازاستفاده خودکار از حل تضادها (Rerere)
- 7.10 اشکالزدایی با گیت (Debugging with Git)
- 7.11 سابماژول ها (Submodules)
- 7.12 بستهبندی (Bundling)
- 7.13 جایگزینی (Replace)
- 7.14 ذخیرهسازی اطلاعات ورود (Credential Storage)
- 7.15 خلاصه (Summary)
-
8. سفارشیسازی Git (Customizing Git)
-
9. گیت و سیستمهای دیگر (Git and Other Systems)
-
10. (Git Internals)
- 10.1 ابزارها و دستورات سطح پایین (Plumbing and Porcelain)
- 10.2 اشیا گیت (Git Objects)
- 10.3 مراجع گیت (Git References)
- 10.4 فایلهای بسته (Packfiles)
- 10.5 نگاشت (The Refspec)
- 10.6 پروتکلهای انتقال (Transfer Protocols)
- 10.7 نگهداری و بازیابی دادهها (Maintenance and Data Recovery)
- 10.8 متغیرهای محیطی (Environment Variables)
- 10.9 (Summary)
-
A1. پیوست A: گیت در محیطهای دیگر (Git in Other Environments)
- A1.1 رابط های گرافیکی (Graphical Interfaces)
- A1.2 Git در ویژوال استودیو (Git in Visual Studio)
- A1.3 Git در Visual Studio Code (Git in Visual Studio Code)
- A1.4 Git در IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine (Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine)
- A1.5 Git در Sublime Text (Git in Sublime Text)
- A1.6 گیت در بش (Git in Bash)
- A1.7 Git در Zsh (Git in Zsh)
- A1.8 Git در PowerShell (Git in PowerShell)
- A1.9 خلاصه (Summary)
-
A2. پیوست B: گنجاندن گیت در برنامههای شما (Embedding Git in your Applications)
-
A3. پیوست C: دستورات گیت (Git Commands)
- A3.1 تنظیم و پیکربندی (Setup and Config)
- A3.2 گرفتن و ایجاد پروژهها (Getting and Creating Projects)
- A3.3 نمونهبرداری پایهای (Basic Snapshotting)
- A3.4 انشعابگیری و ادغام (Branching and Merging)
- A3.5 بهاشتراکگذاری و بهروزرسانی پروژهها (Sharing and Updating Projects)
- A3.6 بازرسی و مقایسه (Inspection and Comparison)
- A3.7 عیبیابی (Debugging)
- A3.8 اعمال تغییرات به صورت پچ (Patching)
- A3.9 ایمیل (Email)
- A3.10 سیستمهای خارجی (External Systems)
- A3.11 مدیریت (Administration)
- A3.12 دستورات سطح پایین گیت (Plumbing Commands)
2.5 مقدمات گیت (git basics chapter) - کار کردن با ریموت ها (Working with Remotes)
کار کردن با ریموت ها (Working with Remotes)
برای اینکه بتوانید در هر پروژه گیت همکاری کنید، باید بدانید که چگونه مخازن از راه دور خود را مدیریت کنید. مخازن از راه دور نسخه هایی از پروژه شما هستند که در اینترنت یا شبکه جایی میزبانی می شوند. شما می توانید چند تا از آنها را داشته باشید، که هر یک از آنها به طور کلی فقط برای خواندن یا خواندن / نوشتن برای شما است. همکاری با دیگران شامل مدیریت این مخازن از راه دور و فشار دادن و کشیدن داده ها به آنها و از آنها زمانی که شما نیاز به به اشتراک گذاشتن کار. مدیریت مخازن از راه دور شامل دانستن چگونگی اضافه کردن مخازن از راه دور، حذف کنترل های از راه دور که دیگر معتبر نیستند، مدیریت شاخه های از راه دور مختلف و تعریف آنها به عنوان ردیابی یا نه و بیشتر است. در این بخش، ما برخی از این مهارت های مدیریت از راه دور را پوشش خواهیم داد.
یادداشت
|
Remote repositories can be on your local machine.
کاملا ممکن است که شما با یک مخزن " `remote ` " کار کنید که در واقع در همان میزبان شما است. کلمه “remote” لزوماً به این معنی نیست که مخزن در جایی دیگر در شبکه یا اینترنت است ، فقط این است که در جای دیگری است. کار با چنین مخزن از راه دور هنوز هم شامل تمام استاندارد فشار، کشیدن و گرفتن عملیات به عنوان با هر از راه دور دیگر. |
نمایش ریموت ها (Showing Your Remotes)
برای دیدن اینکه کدام سرورهای از راه دور را پیکربندی کرده اید، می توانید دستور git remote
را اجرا کنید.
نام های کوتاه هر دستگیره ای که مشخص کرده اید را لیست می کند.
اگر مخزن خود را کلان کرده اید، حداقل باید origin
را ببینید — این نام پیش فرضی است که Git به سرور که از آن کلان کرده اید می دهد:
$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin
شما همچنین می توانید -v
را مشخص کنید، که به شما URL هایی را نشان می دهد که Git برای نام کوتاه ذخیره کرده است که هنگام خواندن و نوشتن به آن از راه دور استفاده می شود:
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
اگر شما بیش از یک ریموت دارید، دستور همه آنها را لیست می کند. به عنوان مثال، یک مخزن با چندین کنترل از راه دور برای کار با چندین همکار ممکن است چیزی شبیه به این باشد.
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
این به این معنی است که ما می توانیم به راحتی از هر یک از این کاربران کمک بگیریم. ما ممکن است علاوه بر این اجازه داشته باشیم که به یکی یا چند مورد از این ها فشار بیاریم، اگرچه نمی توانیم این را اینجا بگوییم.
توجه داشته باشید که این کنترل های از راه دور از پروتکل های مختلفی استفاده می کنند؛ ما بیشتر در مورد این موضوع در راهاندازی گیت روی یک سرور (Getting Git on a Server) صحبت خواهیم کرد.
افزودن مخازن راهدور (Adding Remote Repositories)
ما اشاره کرده ایم و برخی از تظاهرات را نشان داده ایم که چگونه دستور `git clone ` به طور ضمنی ریموت `origin ` را برای شما اضافه می کند. در اینجا نحوه اضافه کردن یک ریموت جدید به طور صریح است. برای اضافه کردن یک مخزن Git از راه دور به عنوان یک نام کوتاه که به راحتی می توانید به آن مراجعه کنید، `git remote add <shortname> <url> ` را اجرا کنید:
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
حالا شما می توانید از رشته pb
در خط فرمان به جای کل URL استفاده کنید.
به عنوان مثال، اگر می خواهید تمام اطلاعاتی را که Paul دارد اما هنوز در مخزن خود ندارید، بدست آورید، می توانید git fetch pb
را اجرا کنید:
$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
شعبه master
پاول در حال حاضر به صورت محلی به عنوان pb/master
قابل دسترسی است — شما می توانید آن را به یکی از شعبه های خود ادغام کنید، یا اگر می خواهید آن را بازرسی کنید می توانید یک شعبه محلی را در آن نقطه بررسی کنید.
ما در انشعابگیری در گیت (Git Branching) درباره شاخه ها و نحوه استفاده از آنها به طور مفصل تر صحبت خواهیم کرد.
فچ و پول کردن از ریموت های شما (Fetching and Pulling from Your Remotes)
همانطور که دیدید، برای دریافت داده ها از پروژه های از راه دور، می توانید دستورات را اجرا کنید.
$ git fetch <remote>
این فرمان به سمت آن پروژه ی از راه دور می رود و تمام داده هایی را که شما هنوز ندارید از آن پروژه ی از راه دور می گیرد. بعد از انجام این کار، شما باید مرجع تمام شاخه ها را از آن ریموت داشته باشید، که می توانید در هر زمان ادغام یا بازرسی کنید.
اگر یک مخزن را کلان کنید، دستور به طور خودکار آن مخزن از راه دور را با نام “origin” اضافه می کند.
بنابراین، git fetch origin
هر کار جدیدی را که از زمانی که کلونش کردید (یا آخرین بار از آن گرفته شده اید) به آن سرور ارسال شده است، می آورد.
مهم است که توجه داشته باشید که دستور git fetch
فقط داده ها را به مخزن محلی شما دانلود می کند — آن را به طور خودکار با هر یک از کارهای شما ادغام نمی کند یا آنچه در حال حاضر روی آن کار می کنید را اصلاح نمی کند.
وقتی آماده شدی باید دست به دست با کارت ادغامش کنی.
اگر شاخه فعلی شما برای ردیابی یک شاخه از راه دور تنظیم شده است (برای اطلاعات بیشتر به بخش بعدی و انشعابگیری در گیت (Git Branching) مراجعه کنید) ، می توانید از دستور git pull
برای گرفتن خودکار و سپس ادغام آن شاخه از راه دور در شاخه فعلی خود استفاده کنید.
این ممکن است یک جریان کار ساده تر یا راحت تر برای شما باشد؛ و به طور پیش فرض، دستور git clone
به طور خودکار شاخه محلی master
شما را برای ردیابی شاخه master
از راه دور (یا هر نام دیگری که شاخه پیش فرض نامیده می شود) در سرور که از آن کلون شده است، تنظیم می کند.
اجرای git pull
به طور کلی داده ها را از سرور که در اصل از آن کلان کرده اید می گیرد و به طور خودکار سعی می کند آن را در کد که در حال حاضر روی آن کار می کنید ادغام کند.
یادداشت
|
از نسخه 2.27 Git به بعد، اگر متغیر اگر می خواهید رفتار پیش فرض گیت را داشته باشید (اگر امکان دارد سریع پیش بروید، در غیر این صورت یک commit ادغام ایجاد کنید):
اگه ميخواي موقع کشيدن بازي کني:
|
Pushing to Your Remotes (پوش کردن به ریموت های شما)
وقتی پروژه تان را در نقطه ای قرار می دهید که می خواهید به اشتراک بگذارید، باید آن را به سمت بالا بکشید.
دستور برای این کار ساده است: git push <remote> <branch> `.
اگر می خواهید شاخه `master
خود را به سرور origin
خود فشار دهید (باز هم، کلون کردن به طور معمول هر دو نام را برای شما به طور خودکار تنظیم می کند) ، پس می توانید این کار را انجام دهید تا هر کاری که انجام داده اید را به سرور برگردانید:
$ git push origin master
این دستور فقط در صورتی کار می کند که شما از یک سرور که به آن دسترسی نوشتن دارید و اگر هیچ کس در این میان فشار نداده است، کلان کنید. اگر شما و شخص دیگری در همان زمان شبیه سازی کنید و آنها به سمت بالا فشار بیاورند و سپس شما به سمت بالا فشار بیاورید، فشار شما به درستی رد خواهد شد. بايد اول کار اونا رو بگيري و اونو به کار خودت اضافه کني تا بتوني فشار بياري برای اطلاعات دقیق تر در مورد نحوه ارسال به سرورهای از راه دور، به انشعابگیری در گیت (Git Branching) مراجعه کنید.
بررسی مخزن راهدور (Inspecting a Remote)
اگر می خواهید اطلاعات بیشتری در مورد یک ریموت خاص مشاهده کنید، می توانید از دستور git remote show <remote>
استفاده کنید.
اگر شما این دستور را با یک نام کوتاه خاص اجرا کنید، مانند origin
، چیزی شبیه به این به دست می آورید:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
این لیست URL برای مخزن از راه دور و همچنین اطلاعات شاخه ردیابی را لیست می کند.
دستور به شما کمک می کند که اگر شما در شاخه master
هستید و git pull
را اجرا کنید، آن را به طور خودکار شاخه master
از راه دور به محلی پس از آن آورده شده است.
همچنین تمام ارجاعات از راه دور را که برداشته است لیست می کند.
این یک مثال ساده است که احتمالا با آن روبرو خواهید شد. با این حال، هنگامی که شما از گیت به شدت استفاده می کنید، ممکن است اطلاعات بیشتری از `git از راه دور نمایش ` مشاهده کنید:
$ git remote show origin
* remote origin
URL: https://github.com/my-org/complex-project
Fetch URL: https://github.com/my-org/complex-project
Push URL: https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-43 new (next fetch will store in remotes/origin)
issue-45 new (next fetch will store in remotes/origin)
refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
dev-branch merges with remote dev-branch
master merges with remote master
Local refs configured for 'git push':
dev-branch pushes to dev-branch (up to date)
markdown-strip pushes to markdown-strip (up to date)
master pushes to master (up to date)
این دستور نشان می دهد که چه شاخه ای به طور خودکار فشار داده می شود زمانی که شما git push
را در حالی که در شاخه های خاص اجرا می کنید.
همچنین به شما نشان می دهد که چه شاخه های از راه دور در سرور شما هنوز وجود ندارد، چه شاخه های از راه دور شما از سرور حذف شده است، و چندین شاخه محلی که قادر به ادغام به طور خودکار با شاخه های ردیابی از راه دور خود را هنگامی که شما اجرا git pull
.
تغییر نام یا حذف ریموت (Renaming and Removing Remotes)
شما می توانید git remote rename
را اجرا کنید تا نام کوتاه یک ریموت را تغییر دهید.
به عنوان مثال، اگر می خواهید نام pb
را به paul
تغییر دهید، می توانید این کار را با git remote rename
انجام دهید:
$ git remote rename pb paul
$ git remote
origin
paul
لازم به ذکر است که این تغییر نام تمام شاخه های ردیابی از راه دور شما را نیز تغییر می دهد.
آنچه که قبلاً در pb/master
به آن اشاره می شد، اکنون در paul/master
است.
اگر می خواهید از راه دور برای برخی از دلایل حذف کنید - شما سرور را جابجا کرده اید یا دیگر از یک آینه خاص استفاده نمی کنید، یا شاید یک مشارکت کننده دیگر مشارکت نمی کند - شما می توانید از `git remote remove ` یا `git remote rm ` استفاده کنید:
$ git remote remove paul
$ git remote
origin
هنگامی که شما ارجاع به یک ریموت را از این طریق حذف می کنید، تمام شاخه های ردیابی از راه دور و تنظیمات پیکربندی مرتبط با آن ریموت نیز حذف می شوند.