|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | + <meta charset="utf-8"> |
| 5 | + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| 6 | + <title>git - راهنمای ساده - بدون مزخرفات عمیق!</title> |
| 7 | + <link href='http://fonts.googleapis.com/css?family=Chelsea+Market' rel='stylesheet' type='text/css'> |
| 8 | + <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/0/normalize.min.css" type="text/css"> |
| 9 | + <link rel="stylesheet" href="css/style.css" type="text/css"> |
| 10 | + <link type="text/css" rel="stylesheet" href="https://cdn.rawgit.com/rastikerdar/vazir-font/v15.0.0/dist/font-face.css"> |
| 11 | + <link rel="stylesheet" href="css/style.fa.css" type="text/css"> |
| 12 | + <script type="text/javascript"> |
| 13 | + var _gaq = _gaq || []; |
| 14 | + _gaq.push(['_setAccount', 'UA-652147-13']); |
| 15 | + _gaq.push(['_trackPageview']); |
| 16 | + |
| 17 | + (function() { |
| 18 | + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| 19 | + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| 20 | + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| 21 | + })(); |
| 22 | + |
| 23 | + function recordOutboundLink(link, category, action) { |
| 24 | + _gat._getTrackerByName()._trackEvent(category, action); |
| 25 | + setTimeout('document.location = "' + link.href + '"', 100); |
| 26 | + } |
| 27 | + </script> |
| 28 | +</head> |
| 29 | +<body> |
| 30 | + <div class="scrollblock block-title"> |
| 31 | + <h1>git - راهنمای ساده</h1> |
| 32 | + <p>یک راهنمای ساده برای شروع کار با گیت. بدون مزخرفات عمیق ;)</p> |
| 33 | + <a href="https://twitter.com/share" class="twitter-share-button" data-via="hamed" data-size="large" data-url="http://hameds.github.com/git-guide" data-hashtags="گیت">Tweet</a> |
| 34 | + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> |
| 35 | + <p class="meta"> |
| 36 | + توسط <a href="http://www.twitter.com/rogerdudler">Roger Dudler</a> |
| 37 | + <br />با تشکر از <a href="http://www.twitter.com/tfnico"><span dir="ltr">@tfnico</span></a>، <a href="http://www.twitter.com/fhd" ><span dir="ltr">@fhd</span></a> و <a href="http://www.namics.com">Namics</a><br /> |
| 38 | + ترجمه فارسی توسط <a href="http://www.twitter.com/hamed"><span dir="ltr">@hamed</span></a> |
| 39 | + <br />با تشکر از <a href="http://www.twitter.com/rastikerdar"><span dir="ltr">@rastikerdar</span></a> برای فونت زیبای <a href="http://rastikerdar.github.io/vazir-font/">وزیر</a><br /> |
| 40 | + |
| 41 | + این راهنما به زبان |
| 42 | + <a href="index.de.html">deutsch</a>، |
| 43 | + <a href="index.es.html">español</a>، |
| 44 | + <a href="index.fr.html">français</a>، |
| 45 | + <a href="index.id.html">indonesian</a>، |
| 46 | + <a href="index.it.html">italiano</a>، |
| 47 | + <a href="index.nl.html">nederlands</a>، |
| 48 | + <a href="index.pl.html">polski</a>، |
| 49 | + <a href="index.pt_BR.html">português</a>، |
| 50 | + <a href="index.ru.html">русский</a>، |
| 51 | + <a href="index.tr.html">türkçe</a>، |
| 52 | + <br/> |
| 53 | + <a href="index.my.html">မြန်မာ</a>، |
| 54 | + <a href="index.ja.html">日本語</a>، |
| 55 | + <a href="index.zh.html">中文</a>، |
| 56 | + <a href="index.ko.html">한국어</a>، |
| 57 | + <a href="index.vi.html">Vietnamese</a>، |
| 58 | + <a href="index.fa.html">فارسی</a> |
| 59 | + <br /> |
| 60 | + لطفاً مشکلات ترجمه فارسی را در <a href="https://github.com/hameds/git-guide/issues">گیتهاب</a> گزارش کنید |
| 61 | + </p> |
| 62 | + <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=gitguide" id="_carbonads_js"></script> |
| 63 | + <img src="img/arrow.png" alt="" /> |
| 64 | + </div> |
| 65 | + <!-- setup --> |
| 66 | + <a name="setup"></a> |
| 67 | + <div class="scrollblock block-setup"> |
| 68 | + <h2>نصب</h2> |
| 69 | + <p> |
| 70 | + <a href="http://git-scm.com/download/mac">دانلود گیت برای مک</a> |
| 71 | + </p> |
| 72 | + <p> |
| 73 | + <a href="http://msysgit.github.io/">دانلود گیت برای ویندوز</a> |
| 74 | + </p> |
| 75 | + <p> |
| 76 | + <a href="http://git-scm.com/book/en/Getting-Started-Installing-Git">دانلود گیت برای لینوکس</a> |
| 77 | + </p> |
| 78 | + </div> |
| 79 | + <a name="create"></a> |
| 80 | + <div class="scrollblock block-create"> |
| 81 | + <h2>ساخت مخزن جدید</h2> |
| 82 | + <p> |
| 83 | + یک پوشه جدید بسازید، واردش شوید و دستور <br /> |
| 84 | + <code dir="ltr">git init</code><br /> |
| 85 | + را اجرا کنید تا یک مخزن جدید گیت بسازید. |
| 86 | + </p> |
| 87 | + </div> |
| 88 | + <a name="checkout"></a> |
| 89 | + <div class="scrollblock block-checkout"> |
| 90 | + <h2>تحویل گرفتن یک مخزن</h2> |
| 91 | + <p> |
| 92 | + با اجرای دستور زیر یک کپی از مخزن محلی ایجاد کنید<br /> |
| 93 | + <code dir="ltr">git clone /path/to/repository</code><br /> |
| 94 | + وقتی به یک سرور دیگر وصل میشوید، دستور شما اینطوری خواهد بود<br /> |
| 95 | + <code dir="ltr">git clone username@host:/path/to/repository</code> |
| 96 | + </p> |
| 97 | + </div> |
| 98 | + <a name="trees"></a> |
| 99 | + <div class="scrollblock block-trees"> |
| 100 | + <h2>گردش کار</h2> |
| 101 | + <p> |
| 102 | + مخزن محلی شما از سه «درخت» که توسط git نگهداری میشود تشکیل شده است. |
| 103 | + اولی <code dir="ltr">Working Directory</code> شماست که فایلهای واقعی را نگه میدارد. |
| 104 | + دومی <code dir="ltr">Index</code> است که نقش منطقه شروع عملیات را دارد |
| 105 | + در نهایت <code dir="ltr">HEAD</code> را داریم که به آخرین ارسال (commit) شما اشاره میکند. |
| 106 | + </p> |
| 107 | + <img src="img/trees.png" alt="" /> |
| 108 | + </div> |
| 109 | + <a name="add"></a> |
| 110 | + <div class="scrollblock block-add"> |
| 111 | + <h2>اضافه کردن و کامیت</h2> |
| 112 | + <p> |
| 113 | + میتوانید با دستور زیر تغییرات (افزودن فایلها به <b>index</b>) را مطرح کنید <br /> |
| 114 | + <code dir="ltr">git add <filename></code><br /> |
| 115 | + <code dir="ltr">git add *</code><br /> |
| 116 | + این اولین قدم در گردش کار ساده git است. برای ارسال واقعی این تغییرات از دستور زیر استفاده کنید<br /> |
| 117 | + <code dir="ltr">git commit -m "Commit message"</code><br /> |
| 118 | + حالا فایل برای <b>HEAD</b>، ارسال شده اما هنوز به سرور ریموت شما فرستاده نشده است. |
| 119 | + </p> |
| 120 | + </div> |
| 121 | + <a name="push"></a> |
| 122 | + <div class="scrollblock block-remote"> |
| 123 | + <h2>ارسال تغییرات</h2> |
| 124 | + <p> |
| 125 | + تغییرات شما الان در <b>HEAD</b> مخزن محلی شما هستند. برای ارسال آنها به سرور ریموت دستور زیر را اجرا کنید <br /> |
| 126 | + <code dir="ltr">git push origin master</code><br /> |
| 127 | + عبارت <i>master</i> را با اسم هر شاخه (branch) که میخواهید تغییراتش را ارسال کنید عوض کنید. |
| 128 | + <br /><br /> |
| 129 | + اگر یک مخزن محلی را کپی (clone) نکردید و میخواهید مخزن محلی را خود را به سرور ریموت متصل کنید، باید از دستور زیر استفاده کنید<br /> |
| 130 | + <code dir="ltr">git remote add origin <server></code><br /> |
| 131 | + حالا قادر هستید تغییرات را به سرور ریموت انتخاب شده ارسال کنید<br /> |
| 132 | + |
| 133 | + </p> |
| 134 | + </div> |
| 135 | + <a name="branching"></a> |
| 136 | + <div class="scrollblock block-branching"> |
| 137 | + <h2>شاخهبندی</h2> |
| 138 | + <p> |
| 139 | + شاخهها برای توسعهدادن نرمافزار و افزودن امکانات به صورت مجزا و ایزوله شده از هم، به کار میروند. وقتی یک مخزن میسازید <i>master</i> شاخه «پیش فرض» (default) آن مخزن است. شاخههای دیگر را برای توسعه و کدنویسی استفاده کنید و بعد از تکمیل شدن، آنها را با master ادغام کنید. |
| 140 | + </p> |
| 141 | + <img src="img/branches.png" alt="" /> |
| 142 | + <p> |
| 143 | + با استفاده از دستور زیر یک شاخه به نام "feature_x" بسازید به آن سوئیچ کنید<br /> |
| 144 | + <code dir="ltr">git checkout -b feature_x</code><br /> |
| 145 | + بازگشت به شاخه master<br /> |
| 146 | + <code dir="ltr">git checkout master</code><br /> |
| 147 | + و حذف شاخه<br /> |
| 148 | + <code dir="ltr">git branch -d feature_x</code><br /> |
| 149 | + تا زمانی که یک شاخه را به سرور ارسال (push) نکنید <i>برای دیگران در دسترس نیست</i> <br /> |
| 150 | + <code dir="ltr">git push origin <branch></code> |
| 151 | + </p> |
| 152 | + </div> |
| 153 | + <a name="update"></a> |
| 154 | + <div class="scrollblock block-merging"> |
| 155 | + <h2>بروزرسانی و ادغام</h2> |
| 156 | + <p> |
| 157 | + برای اینکه مخزن محلی خود را با آخرین کامیت بروز کنید، دستور <br /> |
| 158 | + <code dir="ltr">git pull</code><br /> |
| 159 | + را در پوشه محلی اجرا کنید تا تغییرات سرور ریموت، <br><i>دریافت (fetch)</i> و <i>ادغام (merge)</i> شوند.<br /> |
| 160 | + برای ادغام یک شاخه (branch) دیگر بر روی شاخه فعال |
| 161 | + <br> |
| 162 | + (مثلاً master)، از دستور زیر استفاده کنید<br /> |
| 163 | + <code dir="ltr">git merge <branch></code><br /> |
| 164 | + در هر دو حالت، گیت تلاش میکند تا تغییرات را به صورت اتوماتیک ادغام کنید. متاسفانه، ادغام اتوماتیک همیشه ممکن نیست و منجر به <i>تداخل (conflict)</i> میشود. |
| 165 | + شما مسئول ادغام دستی <i>تداخلها</i> |
| 166 | + با ویرایش فایلهای تداخلدار که توسط گیت نشان داده میشوند هستید. بعد از ویرایش، لازم است آنها را با دستور زیر به عنوان «ادغام شده» علامت بزنید<br /> |
| 167 | + <code dir="ltr">git add <filename></code><br /> |
| 168 | + قبل از ادغام تغییرات میتوانید پیشنمایشی از آنها را با دستور زیر ببینید<br /> |
| 169 | + <code dir="ltr">git diff <source_branch> <target_branch></code> |
| 170 | + </p> |
| 171 | + </div> |
| 172 | + <a name="tagging"></a> |
| 173 | + <div class="scrollblock block-tagging"> |
| 174 | + <h2>برچسبگذاری</h2> |
| 175 | + <p> |
| 176 | + ایجاد برچسب، برای عرضه نرمافزار توصیه میشود.<br> این روالی شناخته شده است که در SVN هم وجود دارد. |
| 177 | + <br> |
| 178 | + میتوانید برچسبی به نام <i>1.0.0</i> را با اجرای دستور زیر بسازید<br /> |
| 179 | + <code dir="ltr">git tag 1.0.0 1b2e1d63ff</code><br /> |
| 180 | + عبارت <i>1b2e1d63ff</i> اولین ده کاراکتر شناسه کامیتی است که میخواهید برچسبگذاری کنید. میتوانید شناسه کامیت را با گشتن در لاگها پیدا کنید... <br /> |
| 181 | + </p> |
| 182 | + </div> |
| 183 | + <a name="log"></a> |
| 184 | + <div class="scrollblock block-log"> |
| 185 | + <h2>لاگ</h2> |
| 186 | + <p> |
| 187 | + در سادهترین حالت، تاریخچه مخزن را با دستور زیر میتوانید مطالعه کنید.. |
| 188 | + <code dir="ltr">git log</code><br /> |
| 189 | + میتوانید کلی پارامتر به این دستور اضافه کنید تا شبیه آن چیزی که میخواهید بشود. برای دیدن کامیتهای یک شخص خاص:<br /> |
| 190 | + <code dir="ltr">git log --author=bob</code><br /> |
| 191 | + برای دیدن نسخه فشرده کامیتها که هر کامیت تنها یک خط دارد:<br /> |
| 192 | + <code dir="ltr">git log --pretty=oneline</code><br /> |
| 193 | + یا شاید بخواهید درخت اسکی (ASCII) همه شاخهها را که با نام شاخه و برچسب تزئین شده را ببینید: <br /> |
| 194 | + <code dir="ltr">git log --graph --oneline --decorate --all</code><br /> |
| 195 | + فقط دیدن اینکه چه فایلهایی تغییر کرده: <br /> |
| 196 | + <code dir="ltr">git log --name-status</code><br /> |
| 197 | + اینها فقط بعضی از پارامترهایی هستند که میتوانید استفاده کنید، برای اطلاعات بیشتر این دستور را ببینید |
| 198 | + <code dir="ltr">git log --help</code><br /> |
| 199 | + </p> |
| 200 | + </div> |
| 201 | + <a name="checkout-replace"></a> |
| 202 | + <div class="scrollblock block-checkout-replace"> |
| 203 | + <h2>جایگزینی تغییرات محلی</h2> |
| 204 | + <p> |
| 205 | + اگر کار اشتباهی انجام دادید، که عمراً برای شما اتفاق نمیافتد ;)، میتوانید تغییرات محلی را با دستور زیر جایگزین کنید<br /> |
| 206 | + <code dir="ltr">git checkout -- <filename></code><br /> |
| 207 | + این تغییرات را با آخرین محتوای HEAD جایگزین میکند. تغییراتی که به index فرستاده شدند به همراه فایلهای جدید نگه داشته میشوند. |
| 208 | + </p> |
| 209 | + <p> |
| 210 | + اگر میخواهید همه تغییرات محلی را دور بریزید و بعد کامیت کنید، آخرین تاریخچه را از سرور بگیرید و با دستورات زیر کاری کنید که شاخه master شما به آخرین تغییرات دریافتی از سرور اشاره کنید |
| 211 | + <br /> |
| 212 | + <code dir="ltr">git fetch origin</code><br /> |
| 213 | + <code dir="ltr">git reset --hard origin/master</code> |
| 214 | + </p> |
| 215 | + </div> |
| 216 | + <a name="hints"></a> |
| 217 | + <div class="scrollblock block-hints"> |
| 218 | + <h2>نکات مفید</h2> |
| 219 | + <p> |
| 220 | + رابط کاربری توکار git<br /> |
| 221 | + <code dir="ltr">gitk</code><br /> |
| 222 | + خروجی رنگ git<br /> |
| 223 | + <code dir="ltr">git config color.ui true</code><br /> |
| 224 | + نمایش لاگ در یک خط برای هر کامیت<br /> |
| 225 | + <code dir="ltr">git config format.pretty oneline</code><br /> |
| 226 | + افزودن تعاملی<br /> |
| 227 | + <code dir="ltr">git add -i</code> |
| 228 | + </p> |
| 229 | + </div> |
| 230 | + <a name="resources"></a> |
| 231 | + <div class="scrollblock block-resources"> |
| 232 | + <h2>منابع و پیوندها</h2> |
| 233 | + <h3>کلاینتهای با رابط کاربری</h3> |
| 234 | + <p> |
| 235 | + <ul> |
| 236 | + <li><a href="http://gitx.laullon.com/">GitX (L) (OSX, open source)</a></li> |
| 237 | + <li><a href="http://www.git-tower.com/">Tower (OSX)</a></li> |
| 238 | + <li><a href="http://www.sourcetreeapp.com/">Source Tree (OSX & Windows, free)</a></li> |
| 239 | + <li><a href="http://mac.github.com/">GitHub for Mac (OSX, free)</a></li> |
| 240 | + <li><a href="https://itunes.apple.com/gb/app/gitbox/id403388357?mt=12">GitBox (OSX, App Store)</a></li> |
| 241 | + </ul> |
| 242 | + </p> |
| 243 | + <h3>راهنماها</h3> |
| 244 | + <p> |
| 245 | + <ul> |
| 246 | + <li><a href="http://book.git-scm.com/">Git Community Book</a></li> |
| 247 | + <li><a href="http://progit.org/book/">Pro Git</a></li> |
| 248 | + <li><a href="http://think-like-a-git.net/">Think like a git</a></li> |
| 249 | + <li><a href="http://help.github.com/">GitHub Help</a></li> |
| 250 | + <li><a href="http://marklodato.github.com/visual-git-guide/index-en.html">A Visual Git Guide</a></li> |
| 251 | + </ul> |
| 252 | + </p> |
| 253 | + <h3>دریافت کمک</h3> |
| 254 | + <p> |
| 255 | + <ul> |
| 256 | + <li><a href="http://groups.google.com/group/git-users/">Git User Mailing List</a></li> |
| 257 | + <li><a href="http://jk.gs/git/">#git on irc.freenode.net</a></li> |
| 258 | + </ul> |
| 259 | + </p> |
| 260 | + </div> |
| 261 | + <a name="comments"></a> |
| 262 | + <div class="scrollblock block-comments"> |
| 263 | + <h2>نظرات</h2> |
| 264 | + <div id="disqus_thread"></div> |
| 265 | + <script type="text/javascript"> |
| 266 | + /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ |
| 267 | + var disqus_shortname = 'git-the-simple-guide'; // required: replace example with your forum shortname |
| 268 | + |
| 269 | + /* * * DON'T EDIT BELOW THIS LINE * * */ |
| 270 | + (function() { |
| 271 | + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; |
| 272 | + dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; |
| 273 | + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); |
| 274 | + })(); |
| 275 | + </script> |
| 276 | + <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> |
| 277 | + </div> |
| 278 | + <a href="http://www.git-tower.com/?source=rd" onClick="recordOutboundLink(this, 'Outbound Links', 'git-tower.com');return false;" class="tower"></a> |
| 279 | + <a href="files/git_cheat_sheet.pdf" onClick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a> |
| 280 | +</body> |
| 281 | +</html> |
0 commit comments