SlideShare une entreprise Scribd logo
1  sur  86
Télécharger pour lire hors ligne
‫گیت‬ ‫ورژن‬ ‫کنترل‬ ‫سامانه‬
‫شریف‬ ‫صنعتی‬ ‫دانشگاه‬ – ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
– ‫صدرنژاد‬ ‫سیدمحمدمسعود‬۱‫اردیبهشت‬۱۳۹۵
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
2
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
‫مطالب‬ ‫فهرست‬
۱‫آن‬ ‫انواع‬ ‫و‬ ‫کنترل‬‫ورژن‬ ‫از‬ ‫استفاده‬ ‫دلیل‬ .
۲.‫کنترل‬‫ورژن‬ ‫کردن‬ ‫کار‬‫نحوه‬
۳.Stage‫و‬Branch‫و‬Merge‫و‬Rebase
۴‫کنترل‬‫ورژن‬ ‫از‬ ‫استفاده‬ ‫کارگاهی‬‫آموزش‬ .
3
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
What is version control?
...a system that lets you track
changes in your source code
by “checking in” your code
into the system.
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
4
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
‫گذارد‬‫می‬ ‫اختیار‬ ‫در‬ ‫کنترل‬ ‫ورژن‬ ‫که‬ ‫امکاناتی‬
‫زمان‬ ‫طول‬ ‫در‬ ‫تغییرات‬ ‫ثبت‬
‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫روی‬ ‫گذاشتن‬‫تأثیر‬ ‫بدون‬ ‫آزمایش‬ ‫انجام‬
‫گروهی‬ ‫صورت‬ ‫به‬ ‫ها‬‫پروژه‬ ‫انجام‬ ‫و‬ ‫مدیریت‬ ‫امکان‬
(... ‫و‬ ‫برنچ‬ ،‫)کامنت‬ ‫کد‬ ‫سورس‬ ‫با‬ ‫ارتباط‬ ‫در‬ ‫دیگر‬ ‫کارهای‬‫و‬
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
5
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
‫کنیم‬ ‫استفاده‬ ‫کنترل‬ ‫ورژن‬ ‫از‬ ‫باید‬ ‫چرا‬
‫تغییرات‬ ‫کردن‬ ‫دنبال‬ ‫و‬ ‫سابقه‬ ‫داری‬‫نگه‬
‫اجرا‬ ‫قابل‬ ‫و‬ ‫پایدار‬ ‫کد‬ ‫به‬ ‫سریع‬ ‫بازگشت‬
‫تر‬‫آسان‬ ‫مشارکت‬
‫آسانتر‬ ‫های‬‫آپ‬‫بک‬
Sandboxing
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
6
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
‫ورژن‬ ‫کنترل‬ ‫های‬‫سامانه‬ ‫انواع‬
) ‫متمرکز‬Centeralized(
) ‫شده‬ ‫توزیع‬Distributed(
7
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Centeralized
8
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Centeralized
9
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Centeralized
10
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Distributed
11
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Distributed
12
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Distributed
13
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Available Version Control Systems
Centralized VCS
CVS
Subversion (SVN)
Team Foundation Server (TFS)
Distributed VCS
Git
Mercurial (hg)
Bazaar
14
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Online VCS Hosting
Github
Bitbucket
Gitlab
Codeplex
15
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
16
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
17
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
18
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
19
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
20
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
21
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
22
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
23
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
How They Work
24
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
What is Git
...a distributed version control system
created by Linus Torvalds, creator of Linux
to replace BitKeeper as the VCS used
for maintaining the Linux kernel.
25
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Design Goals for Git
Speed
Simplicity
Strong support for non-linear development
Ability to handle large projects
26
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
What Makes Git Different?
Snapshots, Not Differences
27
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
What Makes Git Different?
28
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
What Makes Git Different?
It's All (Mostly) Local
29
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Three Main Stages
Commited
Staged
Modifed
30
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Installing Git
http://git-scm.com/book/en/Getting-Started-Installing-Git
31
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
Git commits are pointers to the
previous commit
32
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
33
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
34
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
35
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
36
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
37
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
38
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
39
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
40
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
41
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
42
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
43
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
44
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
45
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
46
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merging
47
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
48
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
49
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
50
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches
Long Running Branches Stick Around
Topic Branches Center Around Features,
Bug Fixes, Etc
Merged Back Into a Long Running Branch
Topic Branches Are Usually Deleted
When You're Done With Them
51
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Deleting a Branch
git branch ­D BRANCHNAME
52
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Deleting a Branch
git branch ­D testing
53
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Remote Branches
git push REMOTE BRANCHNAME
54
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Deleting Remote Branches
git push REMOTE :BRANCHNAME
55
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Deleting Remote Branches
git push origin :testing
56
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches (Review)
57
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches (Review)
58
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches (Review)
59
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches (Review)
60
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Branches (Review)
61
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Rebase
62
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Rebase
63
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merged Without Rebase
64
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Merged With Rebase
65
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Rebase
Never Rebase a Public Branch!
66
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
Workshop
Let's See in Action
Open Your Terminal
Initiate Git and It's Files
Working With Changes
# make a new directory and go to project path
> mkdir git_repo
> cd git_repo
# initialize git
> git init
Initialized empty Git repository in /path/to/git/repository/.git/
> ls -a
. .. .git
# let's have a deeper look at .git directory
> ls -a .git/
. .. branches config description HEAD hooks info objects refs
# define your name and email address (this config is per machine)
> git config --global user.name "Masoud Sadrnezhaad"
> git config --global user.email smmsadrnezh@gmail.com
# checkout your git config
> git config --list
user.name=Masoud Sadrnezhaad
user.email=smmsadrnezh@gmail.com
credential.helper=cache
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
# create and open README.md file with your default system editor.
> vi README.md
# let's write a readme file (with or witout markdown syntax)
# go to insert mode by click "I" one time
# and go back to command mode by Esc. save the file by "wq"
# make sure everything ok.
> ls -a
. .. .git README.md
# check modification and it's level (slide 62) you see modifications a
> git status
nothing added to commit but untracked files present (use "git add" to
# level up this file to staged level
> git add README.md
# look at git status. you see changes in staged level.
> git status
# add staged changes to new commit.
# write a meaningful message for your commit.
> git commit -m "added readme file"
[master (root-commit) 021bd57] commit message
0 files changed
create mode 100644 README
# look at git status. there is nothing to commit because changes
# are commited.
> git status
# let's take a look at created commits.
> git log
commit 021bd57955b472d8e6979ba71e4907e9f1e3ab8b
Author: Masoud Sadrnezhaad <smmsadrnezh@gmail.com>
Date: Fri May 1 02:12:46 2015 +0430
commti message
# final notes:
# it's easier to add and commit at once.
> git commit -am "commit message"
# this command add All files in your project directory
> git add -A
Undoing Things
# adding new modification to previous commits.
> git commit --amend
# you see commit message as it's name in first line.
# uncomment changes you want to ammend to that commit
# then save the file and close the editor.
# you see this modification in your last commit
> git log
# do some modification and stage them.
# now imagine that you want to unstage one of added files.
# to undo "git add"
> git reset HEAD README.md
# undo to last working version of that specific file.
> git checkout -- README.md
# undo to last working commit.
# actually this one reset everything not only one file.
> git reset --hard
HEAD is now at 11d075a commit message
Branching
# see list of all availeble branches.
> git branch
* master
# asterix indicates that HEAD is pointing to master branch.
# let's create a new branch and name it dev
> git branch dev
# HEAD is pointing to last commit of master branch likewise before.
> git branch
dev
* master
# change HEAD pointer to dev branch.
> git checkout dev
Switched to branch 'dev'
# do some modification and commit them.
> git commit -am "message"
[master 79635ac] message
1 file changed, 1 insertion(+)
# switch back to master branch.
> git checkout dev
Switched to branch 'dev'
# open recent changed files. changes does not apply becuz
# you are working on master branch and commited to dev branch.
# it's possible to create and switch to new branch at once.
> git checkout -b dev master
# master indicates that new branch is started from master.
# -b used to create it.
# to merge branch dev switch to branch you are going to merge with
> git checkout master
# now merge dev. this remove dev branch automatically
# but it keeps revision history (changelog)
> git merge dev
Remotes
# use .gitignore to indicate which files are not going to pushed
# into remote repository. you can put it everywhere in your project
# we use ! to exclude some files and dirs and * for all of them.
# use this command when you want to have a local copy
# from remote repository. --bare is used
> git clone --bare ~/git-repo/
# to clone from github
> git clone git@github.com:smmsadrnezh/repo-name.git
# to see centeral repository url you fetch from or push into
> git remote -v
origin https://github.com/smmsadrnezh/repo-name.git (fetch)
origin https://github.com/smmsadrnezh/repo-name.git (push)
# to push commits
> git push -u origin master
# typing "-u origin master" is only needed at first time.
# to get commits pushed by other collaborators.
# pull is equivalent to run fetch and merge one by one.
> git pull
# fetch get's commits but do'nt merge it.
# use diff command to see differences.
> git fetch origin
> git diff origin/master
# important note: pull everytime you want to push
# merge conflicts when using three way merge
Rebase
# rebasing branches is not a good idea
> git branch
> gitx
> git rebase master
‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬
۱۳۹۵/۲/۱
67
‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬
‫منابع‬
‫از‬ ‫تصاویر‬Michael Koby
https://mkoby.com
‫پاسخ‬ ‫و‬ ‫پرسش‬‫پاسخ‬ ‫و‬ ‫پرسش‬
‫وسیله‬ ‫به‬ ‫شده‬ ‫طراحی‬
sadrnezhaad.ir/smmsadrnezhaad.ir/smm
‫صدرنژاد‬ ‫سیدمحمدمسعود‬

Contenu connexe

Plus de S. M. Masoud Sadrnezhaad

Plus de S. M. Masoud Sadrnezhaad (18)

آماده‌سازی ذهن برای خلاقیت و ابزار داستان‌سرایی
آماده‌سازی ذهن برای خلاقیت و ابزار داستان‌سراییآماده‌سازی ذهن برای خلاقیت و ابزار داستان‌سرایی
آماده‌سازی ذهن برای خلاقیت و ابزار داستان‌سرایی
 
نمایش اجرای فرایندهای حرفه به کمک ابزارهای پویانمایی و شبیه‌سازی زمان و هزینه...
نمایش اجرای فرایندهای حرفه به کمک ابزارهای پویانمایی و شبیه‌سازی زمان و هزینه...نمایش اجرای فرایندهای حرفه به کمک ابزارهای پویانمایی و شبیه‌سازی زمان و هزینه...
نمایش اجرای فرایندهای حرفه به کمک ابزارهای پویانمایی و شبیه‌سازی زمان و هزینه...
 
چارچوب توصیف منبع برای ذخیره و بازیابی معنا
چارچوب توصیف منبع برای ذخیره و بازیابی معناچارچوب توصیف منبع برای ذخیره و بازیابی معنا
چارچوب توصیف منبع برای ذخیره و بازیابی معنا
 
حوزه‌های پژوهش در زمینهٔ مهندسی نرم‌افزار سامانه‌های خودتطبیق و خودسازمانده
حوزه‌های پژوهش در زمینهٔ مهندسی نرم‌افزار سامانه‌های خودتطبیق و خودسازماندهحوزه‌های پژوهش در زمینهٔ مهندسی نرم‌افزار سامانه‌های خودتطبیق و خودسازمانده
حوزه‌های پژوهش در زمینهٔ مهندسی نرم‌افزار سامانه‌های خودتطبیق و خودسازمانده
 
معرفی و اجرای سناریوی SWIM در چارچوب Rainbow برای شبیه‌سازی معماری نرم‌افزار ...
معرفی و اجرای سناریوی SWIM در چارچوب Rainbow برای شبیه‌سازی معماری نرم‌افزار ...معرفی و اجرای سناریوی SWIM در چارچوب Rainbow برای شبیه‌سازی معماری نرم‌افزار ...
معرفی و اجرای سناریوی SWIM در چارچوب Rainbow برای شبیه‌سازی معماری نرم‌افزار ...
 
معرفی و آموزش نحوهٔ استفاده از نرم‌افزار ERPNext برای برنامه‌ریزی منابع سازمانی
معرفی و آموزش نحوهٔ استفاده از نرم‌افزار ERPNext برای برنامه‌ریزی منابع سازمانیمعرفی و آموزش نحوهٔ استفاده از نرم‌افزار ERPNext برای برنامه‌ریزی منابع سازمانی
معرفی و آموزش نحوهٔ استفاده از نرم‌افزار ERPNext برای برنامه‌ریزی منابع سازمانی
 
بی‌طرفی شبکه و ریشه‌های آن
بی‌طرفی شبکه و ریشه‌های آنبی‌طرفی شبکه و ریشه‌های آن
بی‌طرفی شبکه و ریشه‌های آن
 
Git Version Control System Part 2
 Git Version Control System Part 2 Git Version Control System Part 2
Git Version Control System Part 2
 
Classroom Object Oriented Language (COOL)
Classroom Object Oriented Language (COOL)Classroom Object Oriented Language (COOL)
Classroom Object Oriented Language (COOL)
 
از فرهنگ اجازه تا فرهنگ آزاد یا چگونه رسانه‌ها از تکنولوژی و قانون برای محدود...
از فرهنگ اجازه تا فرهنگ آزاد یا چگونه رسانه‌ها از تکنولوژی و قانون برای محدود...از فرهنگ اجازه تا فرهنگ آزاد یا چگونه رسانه‌ها از تکنولوژی و قانون برای محدود...
از فرهنگ اجازه تا فرهنگ آزاد یا چگونه رسانه‌ها از تکنولوژی و قانون برای محدود...
 
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
طراحی و معماری خدمات ابری زیرساخت آمازون (AWS)
 
معرفی و آموزش سامانهٔ مدیریت محتوا مزانین
معرفی و آموزش سامانهٔ مدیریت محتوا مزانینمعرفی و آموزش سامانهٔ مدیریت محتوا مزانین
معرفی و آموزش سامانهٔ مدیریت محتوا مزانین
 
نقش جامعه و دولت در حمایت از نرم‌افزار آزاد
نقش جامعه و دولت در حمایت از نرم‌افزار آزادنقش جامعه و دولت در حمایت از نرم‌افزار آزاد
نقش جامعه و دولت در حمایت از نرم‌افزار آزاد
 
بزرگ‌داده؛ مقیاسی از دنیای واقعی
بزرگ‌داده؛ مقیاسی از دنیای واقعیبزرگ‌داده؛ مقیاسی از دنیای واقعی
بزرگ‌داده؛ مقیاسی از دنیای واقعی
 
مطالعه آماری دانشگاه‌های برتر جهان
مطالعه آماری دانشگاه‌های برتر جهانمطالعه آماری دانشگاه‌های برتر جهان
مطالعه آماری دانشگاه‌های برتر جهان
 
معرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروهمعرفی نرم‌افزار آزاد و فعالیت‌های گروه
معرفی نرم‌افزار آزاد و فعالیت‌های گروه
 
Hackers & Crackers (+ Software Freedom)
Hackers & Crackers (+ Software Freedom)Hackers & Crackers (+ Software Freedom)
Hackers & Crackers (+ Software Freedom)
 
Social Semantic Web
Social Semantic WebSocial Semantic Web
Social Semantic Web
 

Git Version Control System

  • 1. ‫گیت‬ ‫ورژن‬ ‫کنترل‬ ‫سامانه‬ ‫شریف‬ ‫صنعتی‬ ‫دانشگاه‬ – ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ – ‫صدرنژاد‬ ‫سیدمحمدمسعود‬۱‫اردیبهشت‬۱۳۹۵
  • 2. ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ 2 ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ ‫مطالب‬ ‫فهرست‬ ۱‫آن‬ ‫انواع‬ ‫و‬ ‫کنترل‬‫ورژن‬ ‫از‬ ‫استفاده‬ ‫دلیل‬ . ۲.‫کنترل‬‫ورژن‬ ‫کردن‬ ‫کار‬‫نحوه‬ ۳.Stage‫و‬Branch‫و‬Merge‫و‬Rebase ۴‫کنترل‬‫ورژن‬ ‫از‬ ‫استفاده‬ ‫کارگاهی‬‫آموزش‬ .
  • 3. 3 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ What is version control? ...a system that lets you track changes in your source code by “checking in” your code into the system.
  • 4. ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ 4 ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ ‫گذارد‬‫می‬ ‫اختیار‬ ‫در‬ ‫کنترل‬ ‫ورژن‬ ‫که‬ ‫امکاناتی‬ ‫زمان‬ ‫طول‬ ‫در‬ ‫تغییرات‬ ‫ثبت‬ ‫اجرا‬ ‫حال‬ ‫در‬ ‫برنامه‬ ‫روی‬ ‫گذاشتن‬‫تأثیر‬ ‫بدون‬ ‫آزمایش‬ ‫انجام‬ ‫گروهی‬ ‫صورت‬ ‫به‬ ‫ها‬‫پروژه‬ ‫انجام‬ ‫و‬ ‫مدیریت‬ ‫امکان‬ (... ‫و‬ ‫برنچ‬ ،‫)کامنت‬ ‫کد‬ ‫سورس‬ ‫با‬ ‫ارتباط‬ ‫در‬ ‫دیگر‬ ‫کارهای‬‫و‬
  • 5. ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ 5 ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ ‫کنیم‬ ‫استفاده‬ ‫کنترل‬ ‫ورژن‬ ‫از‬ ‫باید‬ ‫چرا‬ ‫تغییرات‬ ‫کردن‬ ‫دنبال‬ ‫و‬ ‫سابقه‬ ‫داری‬‫نگه‬ ‫اجرا‬ ‫قابل‬ ‫و‬ ‫پایدار‬ ‫کد‬ ‫به‬ ‫سریع‬ ‫بازگشت‬ ‫تر‬‫آسان‬ ‫مشارکت‬ ‫آسانتر‬ ‫های‬‫آپ‬‫بک‬ Sandboxing
  • 6. ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ 6 ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ ‫ورژن‬ ‫کنترل‬ ‫های‬‫سامانه‬ ‫انواع‬ ) ‫متمرکز‬Centeralized( ) ‫شده‬ ‫توزیع‬Distributed(
  • 7. 7 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Centeralized
  • 8. 8 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Centeralized
  • 9. 9 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Centeralized
  • 10. 10 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Distributed
  • 11. 11 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Distributed
  • 12. 12 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Distributed
  • 13. 13 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Available Version Control Systems Centralized VCS CVS Subversion (SVN) Team Foundation Server (TFS) Distributed VCS Git Mercurial (hg) Bazaar
  • 14. 14 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Online VCS Hosting Github Bitbucket Gitlab Codeplex
  • 15. 15 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 16. 16 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 17. 17 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 18. 18 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 19. 19 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 20. 20 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 21. 21 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 22. 22 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 23. 23 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ How They Work
  • 24. 24 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ What is Git ...a distributed version control system created by Linus Torvalds, creator of Linux to replace BitKeeper as the VCS used for maintaining the Linux kernel.
  • 25. 25 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Design Goals for Git Speed Simplicity Strong support for non-linear development Ability to handle large projects
  • 26. 26 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ What Makes Git Different? Snapshots, Not Differences
  • 27. 27 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ What Makes Git Different?
  • 28. 28 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ What Makes Git Different? It's All (Mostly) Local
  • 29. 29 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Three Main Stages Commited Staged Modifed
  • 30. 30 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Installing Git http://git-scm.com/book/en/Getting-Started-Installing-Git
  • 31. 31 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches Git commits are pointers to the previous commit
  • 32. 32 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 33. 33 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 34. 34 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 35. 35 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 36. 36 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 37. 37 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 38. 38 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 39. 39 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 40. 40 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 41. 41 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 42. 42 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 43. 43 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 44. 44 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 45. 45 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 46. 46 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merging
  • 47. 47 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 48. 48 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 49. 49 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches
  • 50. 50 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches Long Running Branches Stick Around Topic Branches Center Around Features, Bug Fixes, Etc Merged Back Into a Long Running Branch Topic Branches Are Usually Deleted When You're Done With Them
  • 51. 51 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Deleting a Branch git branch ­D BRANCHNAME
  • 52. 52 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Deleting a Branch git branch ­D testing
  • 53. 53 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Remote Branches git push REMOTE BRANCHNAME
  • 54. 54 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Deleting Remote Branches git push REMOTE :BRANCHNAME
  • 55. 55 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Deleting Remote Branches git push origin :testing
  • 56. 56 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches (Review)
  • 57. 57 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches (Review)
  • 58. 58 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches (Review)
  • 59. 59 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches (Review)
  • 60. 60 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Branches (Review)
  • 61. 61 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Rebase
  • 62. 62 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Rebase
  • 63. 63 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merged Without Rebase
  • 64. 64 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Merged With Rebase
  • 65. 65 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Rebase Never Rebase a Public Branch!
  • 66. 66 ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ Workshop Let's See in Action Open Your Terminal
  • 67. Initiate Git and It's Files Working With Changes
  • 68. # make a new directory and go to project path > mkdir git_repo > cd git_repo # initialize git > git init Initialized empty Git repository in /path/to/git/repository/.git/ > ls -a . .. .git # let's have a deeper look at .git directory > ls -a .git/ . .. branches config description HEAD hooks info objects refs
  • 69. # define your name and email address (this config is per machine) > git config --global user.name "Masoud Sadrnezhaad" > git config --global user.email smmsadrnezh@gmail.com # checkout your git config > git config --list user.name=Masoud Sadrnezhaad user.email=smmsadrnezh@gmail.com credential.helper=cache core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true
  • 70. # create and open README.md file with your default system editor. > vi README.md # let's write a readme file (with or witout markdown syntax) # go to insert mode by click "I" one time # and go back to command mode by Esc. save the file by "wq" # make sure everything ok. > ls -a . .. .git README.md # check modification and it's level (slide 62) you see modifications a > git status nothing added to commit but untracked files present (use "git add" to
  • 71. # level up this file to staged level > git add README.md # look at git status. you see changes in staged level. > git status # add staged changes to new commit. # write a meaningful message for your commit. > git commit -m "added readme file" [master (root-commit) 021bd57] commit message 0 files changed create mode 100644 README # look at git status. there is nothing to commit because changes # are commited. > git status
  • 72. # let's take a look at created commits. > git log commit 021bd57955b472d8e6979ba71e4907e9f1e3ab8b Author: Masoud Sadrnezhaad <smmsadrnezh@gmail.com> Date: Fri May 1 02:12:46 2015 +0430 commti message # final notes: # it's easier to add and commit at once. > git commit -am "commit message" # this command add All files in your project directory > git add -A
  • 74. # adding new modification to previous commits. > git commit --amend # you see commit message as it's name in first line. # uncomment changes you want to ammend to that commit # then save the file and close the editor. # you see this modification in your last commit > git log
  • 75. # do some modification and stage them. # now imagine that you want to unstage one of added files. # to undo "git add" > git reset HEAD README.md # undo to last working version of that specific file. > git checkout -- README.md # undo to last working commit. # actually this one reset everything not only one file. > git reset --hard HEAD is now at 11d075a commit message
  • 77. # see list of all availeble branches. > git branch * master # asterix indicates that HEAD is pointing to master branch. # let's create a new branch and name it dev > git branch dev # HEAD is pointing to last commit of master branch likewise before. > git branch dev * master # change HEAD pointer to dev branch. > git checkout dev Switched to branch 'dev'
  • 78. # do some modification and commit them. > git commit -am "message" [master 79635ac] message 1 file changed, 1 insertion(+) # switch back to master branch. > git checkout dev Switched to branch 'dev' # open recent changed files. changes does not apply becuz # you are working on master branch and commited to dev branch. # it's possible to create and switch to new branch at once. > git checkout -b dev master # master indicates that new branch is started from master. # -b used to create it.
  • 79. # to merge branch dev switch to branch you are going to merge with > git checkout master # now merge dev. this remove dev branch automatically # but it keeps revision history (changelog) > git merge dev
  • 81. # use .gitignore to indicate which files are not going to pushed # into remote repository. you can put it everywhere in your project # we use ! to exclude some files and dirs and * for all of them. # use this command when you want to have a local copy # from remote repository. --bare is used > git clone --bare ~/git-repo/ # to clone from github > git clone git@github.com:smmsadrnezh/repo-name.git # to see centeral repository url you fetch from or push into > git remote -v origin https://github.com/smmsadrnezh/repo-name.git (fetch) origin https://github.com/smmsadrnezh/repo-name.git (push)
  • 82. # to push commits > git push -u origin master # typing "-u origin master" is only needed at first time. # to get commits pushed by other collaborators. # pull is equivalent to run fetch and merge one by one. > git pull # fetch get's commits but do'nt merge it. # use diff command to see differences. > git fetch origin > git diff origin/master # important note: pull everytime you want to push # merge conflicts when using three way merge
  • 84. # rebasing branches is not a good idea > git branch > gitx > git rebase master
  • 85. ‫جاوا‬ ‫زبان‬ ‫به‬ ‫پیشرفته‬ ‫نویسی‬‫برنامه‬ ۱۳۹۵/۲/۱ 67 ‫صدرنژاد‬ ‫سیدمحمدمسعود‬‫گیت‬‫ورژن‬ ‫کنترل‬‫سامانه‬ ‫کارگاه‬ ‫منابع‬ ‫از‬ ‫تصاویر‬Michael Koby https://mkoby.com
  • 86. ‫پاسخ‬ ‫و‬ ‫پرسش‬‫پاسخ‬ ‫و‬ ‫پرسش‬ ‫وسیله‬ ‫به‬ ‫شده‬ ‫طراحی‬ sadrnezhaad.ir/smmsadrnezhaad.ir/smm ‫صدرنژاد‬ ‫سیدمحمدمسعود‬