diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2012-02-03 11:56:24 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-03-08 12:07:49 -0800 |
commit | deddea16d2c0f86bdf7906efb4560be81b537949 (patch) | |
tree | 87e878945febc283601792e71f0f478481f0fbb9 /documentation | |
parent | babc066860bc936f5254dedc5d002d00ca7c2882 (diff) | |
download | poky-deddea16d2c0f86bdf7906efb4560be81b537949.tar.gz |
documentation/dev-manual/dev-manual-newbie.xml: Git section updated
I split the Git section into a couple sub-sections. One talks
about concepts and the other is the section on simple commands.
Hopefully the concepts section now addresses the confusion
people are having over branches, tags, etc.
Also changed the definition of the term "Yocto Project Files"
based on some input by Joshua Lock.
(From yocto-docs rev: d76a9942dd12e6bd3ccba5331039477b26c02379)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation')
-rw-r--r-- | documentation/dev-manual/dev-manual-newbie.xml | 402 |
1 files changed, 282 insertions, 120 deletions
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml index 2ff66a4b06..a15452de8b 100644 --- a/documentation/dev-manual/dev-manual-newbie.xml +++ b/documentation/dev-manual/dev-manual-newbie.xml | |||
@@ -205,36 +205,56 @@ | |||
205 | by the maintainer of the source code. | 205 | by the maintainer of the source code. |
206 | For example, in order for a developer to work on a particular piece of code, they need to | 206 | For example, in order for a developer to work on a particular piece of code, they need to |
207 | first get a copy of it from an "upstream" source.</para></listitem> | 207 | first get a copy of it from an "upstream" source.</para></listitem> |
208 | <listitem><para id='yocto-project-files'><emphasis>Yocto Project Files:</emphasis> | 208 | <listitem> |
209 | This term refers to the directory structure created as a result of either downloading | 209 | <para id='yocto-project-files'><emphasis>Yocto Project Files:</emphasis> |
210 | and unpacking a Yocto Project release tarball or setting up a Git repository | 210 | This term refers to the directory structure created as a result of either downloading |
211 | by cloning <filename>git://git.yoctoproject.org/poky</filename>. | 211 | and unpacking a Yocto Project release tarball or setting up a Git repository |
212 | Sometimes the term "the Yocto Project Files structure" is used as well.</para> | 212 | by cloning <filename>git://git.yoctoproject.org/poky</filename>. |
213 | <para>The Yocto Project files contain BitBake, Documentation, metadata and | 213 | Sometimes the term "the Yocto Project Files structure" is used as well. |
214 | other files that all support the development environment. | 214 | </para> |
215 | Consequently, you must have the Yocto Project files in place on your development | 215 | |
216 | system in order to do any development using the Yocto Project.</para> | 216 | <para> |
217 | <para>The name of the top-level directory of the Yocto Project file structure | 217 | The Yocto Project files contain BitBake, Documentation, metadata and |
218 | is derived from the Yocto Project release tarball. | 218 | other files that all support the development environment. |
219 | For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename> | 219 | Consequently, you must have the Yocto Project files in place on your development |
220 | results in a Yocto Project file structure whose Yocto Project source directory is named | 220 | system in order to do any development using the Yocto Project. |
221 | <filename>poky-edison-6.0</filename>. | 221 | </para> |
222 | If you create a Git repository, then you can name the repository anything you like.</para> | 222 | |
223 | <para>It is important to understand the differences between Yocto Project Files created | 223 | <para> |
224 | by unpacking a release tarball as compared to cloning | 224 | The name of the top-level directory of the Yocto Project file structure |
225 | <filename>git://git.yoctoproject.org/poky</filename>. | 225 | is derived from the Yocto Project release tarball. |
226 | When you unpack a tarball, you have an exact copy of the files based on the time of | 226 | For example, downloading and unpacking <filename>poky-edison-6.0.tar.bz2</filename> |
227 | release - a fixed release point. | 227 | results in a Yocto Project file structure whose Yocto Project source directory is named |
228 | Any changes you make to your local Yocto Project files are on top of the release. | 228 | <filename>poky-edison-6.0</filename>. |
229 | On the otherhand, when you clone the Yocto Project Git repository, you have an | 229 | If you create a Git repository, then you can name the repository anything you like. |
230 | active development repository. | 230 | </para> |
231 | In this case, any local changes you make to the Yocto Project can be later applied to active | 231 | |
232 | development branches of the upstream Yocto Project Git repository.</para> | 232 | <para> |
233 | <para>You can find instruction on how to set up the Yocto Project files on your | 233 | It is important to understand the differences between Yocto Project Files created |
234 | host development system by reading | 234 | by unpacking a release tarball as compared to cloning |
235 | the | 235 | <filename>git://git.yoctoproject.org/poky</filename>. |
236 | "<ulink url='http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#getting-setup'>Getting | 236 | When you unpack a tarball, you have an exact copy of the files based on the time of |
237 | Setup</ulink>" section.</para></listitem> | 237 | release - a fixed release point. |
238 | Any changes you make to your local Yocto Project files are on top of the release. | ||
239 | On the other hand, when you clone the Yocto Project Git repository, you have an | ||
240 | active development repository. | ||
241 | In this case, any local changes you make to the Yocto Project can be later applied to active | ||
242 | development branches of the upstream Yocto Project Git repository. | ||
243 | Furthermore, with the Git repository you can create a local Git branch that | ||
244 | reflects the exact copy of the files at the time of their release. | ||
245 | You do this using Git tags that are part of the repository. | ||
246 | For more information on concepts, see the section | ||
247 | "<link linkend='repositories-tags-and-branches'>Repositories, Tags, and Branches</link>". | ||
248 | </para> | ||
249 | |||
250 | <para> | ||
251 | You can find instruction on how to set up the Yocto Project files on your | ||
252 | host development system by reading | ||
253 | the | ||
254 | "<ulink url='http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#getting-setup'>Getting | ||
255 | Setup</ulink>" section. | ||
256 | </para> | ||
257 | </listitem> | ||
238 | <listitem><para><emphasis>Yocto Project Build Directory:</emphasis> | 258 | <listitem><para><emphasis>Yocto Project Build Directory:</emphasis> |
239 | This term refers to the area used by the Yocto Project for builds. | 259 | This term refers to the area used by the Yocto Project for builds. |
240 | The area is created when you <filename>source</filename> the Yocto Project setup | 260 | The area is created when you <filename>source</filename> the Yocto Project setup |
@@ -326,103 +346,245 @@ | |||
326 | <para> | 346 | <para> |
327 | The Yocto Project uses Git, which is a free, open source distributed version control system. | 347 | The Yocto Project uses Git, which is a free, open source distributed version control system. |
328 | Git supports distributed development, non-linear development, and can handle large projects. | 348 | Git supports distributed development, non-linear development, and can handle large projects. |
329 | It is best that you know how to work with Git if you are going to use Yocto Project for development. | 349 | It is best that you have some fundamental understanding of how Git tracks projects and |
350 | how to work with Git if you are going to use Yocto Project for development. | ||
351 | This section provides a quick overview of how Git works and provides you with a summary | ||
352 | of some essential Git commands. | ||
330 | </para> | 353 | </para> |
331 | 354 | ||
332 | <para> | 355 | <para> |
333 | Git has an extensive set of commands that lets you manage changes and perform | 356 | For more information on Git, see |
334 | collaboration over the life of a project. | 357 | <ulink url='http://git-scm.com/documentation'></ulink>. |
335 | Conveniently though, you can manage with a small set of basic operations and workflows | 358 | If you need to download Git, go to <ulink url='http://git-scm.com/download'></ulink>. |
336 | once you understand the basic philosophy behind Git. | ||
337 | You do not have to be an expert in Git to be functional. | ||
338 | A good place to look for instruction on a minimal set of Git commands is | ||
339 | <ulink url='http://git-scm.com/documentation'>here</ulink>. | ||
340 | If you need to download Git, you can do so | ||
341 | <ulink url='http://git-scm.com/download'>here</ulink>. | ||
342 | </para> | 359 | </para> |
343 | 360 | ||
344 | <para> | 361 | <section id='repositories-tags-and-branches'> |
345 | Git works by using branching techniques that track content change (not files) | 362 | <title>Repositories, Tags, and Branches</title> |
346 | within a project (e.g. a new feature or updated documentation). | ||
347 | Creating a tree-like structure based on project divergence allows for excellent historical | ||
348 | information over the life of a project. | ||
349 | This methodology also allows for an environment in which you can do lots of | ||
350 | experimentation on your project as you develop changes or new features. | ||
351 | For example, you can create a “branch”, experiment with some feature, and then | ||
352 | if you like the feature, you incorporate the branch into the tree. | ||
353 | If you don’t, you cut the branch off by deleting it. | ||
354 | </para> | ||
355 | 363 | ||
356 | <para> | 364 | <para> |
357 | If you don’t know much about Git, we suggest you educate | 365 | As mentioned earlier in section |
358 | yourself by visiting the links previously mentioned. | 366 | "<link linkend='yocto-project-repositories'>Yocto Project Source Repositories</link>", |
359 | </para> | 367 | the Yocto Project maintains source repositories at |
368 | <ulink url='http://git.yoctoproject.org/cgit.cgi'></ulink>. | ||
369 | If you look at this web-interface of the repositories, each item is a separate | ||
370 | Git repository. | ||
371 | </para> | ||
360 | 372 | ||
361 | <para> | 373 | <para> |
362 | The following list briefly describes some basic Git operations as a way to get started. | 374 | Git repositories use branching techniques that track content change (not files) |
363 | As with any set of commands, this list (in most cases) simply shows the base command and | 375 | within a project (e.g. a new feature or updated documentation). |
364 | omits the many arguments they support. | 376 | Creating a tree-like structure based on project divergence allows for excellent historical |
365 | See the Git documentation for complete descriptions and strategies on how to use these commands: | 377 | information over the life of a project. |
366 | <itemizedlist> | 378 | This methodology also allows for an environment in which you can do lots of |
367 | <listitem><para><emphasis><filename>git init</filename>:</emphasis> Initializes an empty Git repository. | 379 | local experimentation on a project as you develop changes or new features. |
368 | You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem> | 380 | </para> |
369 | <listitem><para><emphasis><filename>git clone</filename>:</emphasis> Creates a clone of a repository. | 381 | |
370 | During collaboration, this command allows you to create a local repository that is on | 382 | <para> |
371 | equal footing with a fellow developer’s repository.</para></listitem> | 383 | A Git repository represents all development efforts for a given project. |
372 | <listitem><para><emphasis><filename>git add</filename>:</emphasis> Adds updated file contents | 384 | For example, the Git repository <filename>poky</filename> contains all changes |
373 | to the index that | 385 | and developments for Poky over the course of its entire life. |
374 | Git uses to track changes. | 386 | That means that all changes that make up all releases are captured. |
375 | You must add all files that have changed before you can commit them.</para></listitem> | 387 | The repository maintains a complete history of changes. |
376 | <listitem><para><emphasis><filename>git commit</filename>:</emphasis> Creates a “commit” that documents | 388 | </para> |
377 | the changes you made. | 389 | |
378 | Commits are used for historical purposes, for determining if a maintainer of a project | 390 | <para> |
379 | will allow the change, and for ultimately pushing the change from your local Git repository | 391 | You can create a local copy of any repository by "cloning" it with the Git |
380 | into the project’s upstream (or master) repository.</para></listitem> | 392 | <filename>clone</filename> command. |
381 | <listitem><para><emphasis><filename>git status</filename>:</emphasis> Reports any modified files that | 393 | When you clone a Git repository, you end up with an identical copy of the |
382 | possibly need to be added and committed.</para></listitem> | 394 | repository on your development system. |
383 | <listitem><para><emphasis><filename>git checkout <branch-name></filename>:</emphasis> Changes | 395 | Once you have a local copy of a repository, you can take steps to develop locally. |
384 | your working branch. | 396 | For examples on how to clone Git repositories, see the section |
385 | This command is analogous to “cd”.</para></listitem> | 397 | "<link linkend='getting-setup'>Getting Set Up</link>" earlier in this manual. |
386 | <listitem><para><emphasis><filename>git checkout –b <working-branch></filename>:</emphasis> Creates | 398 | </para> |
387 | a working branch on your local machine where you can isolate work. | 399 | |
388 | It is a good idea to use local branches when adding specific features or changes. | 400 | <para> |
389 | This way if you don’t like what you have done you can easily get rid of the work.</para></listitem> | 401 | It is important to understand that Git tracks content change and not files. |
390 | <listitem><para><emphasis><filename>git branch</filename>:</emphasis> Reports existing branches and | 402 | Git uses "branches" to organize different development efforts. |
391 | tells you which branch in which you are currently working.</para></listitem> | 403 | For example, the <filename>poky</filename> repository has |
392 | <listitem><para><emphasis><filename>git branch -D <branch-name></filename>:</emphasis> | 404 | <filename>laverne</filename>, <filename>bernard</filename>, |
393 | Deletes an existing branch. | 405 | <filename>edison</filename>, and <filename>master</filename> branches among |
394 | You need to be in a branch other than the one you are deleting | 406 | others. |
395 | in order to delete <branch-name>.</para></listitem> | 407 | You can see all the branches by going to |
396 | <listitem><para><emphasis><filename>git pull</filename>:</emphasis> Retrieves information | 408 | <ulink url='http://git.yoctoproject.org/cgit.cgi/poky/'></ulink> and |
397 | from an upstream Git | 409 | clicking on the |
398 | repository and places it in your local Git repository. | 410 | <filename><ulink url='http://git.yoctoproject.org/cgit.cgi/poky/refs/heads'>[...]</ulink></filename> |
399 | You use this command to make sure you are synchronized with the repository | 411 | link beneath the "Branch" heading. |
400 | from which you are basing changes (.e.g. the master repository).</para></listitem> | 412 | </para> |
401 | <listitem><para><emphasis><filename>git push</filename>:</emphasis> Sends all your local changes you | 413 | |
402 | have committed to an upstream Git repository (e.g. a contribution repository). | 414 | <para> |
403 | The maintainer of the project draws from these repositories when adding your changes to the | 415 | Each of these branches represents a specific area of development. |
404 | project’s master repository.</para></listitem> | 416 | The <filename>master</filename> branch represents the current or most recent |
405 | <listitem><para><emphasis><filename>git merge</filename>:</emphasis> Combines or adds changes from one | 417 | development. |
406 | local branch of your repository with another branch. | 418 | All other branches represent off-shoots of the <filename>master</filename> |
407 | When you create a local Git repository, the default branch is named “master”. | 419 | branch. |
408 | A typical workflow is to create a temporary branch for isolated work, make and commit your | 420 | </para> |
409 | changes, switch to your local master branch, merge the changes from the temporary branch into the | 421 | |
410 | local master branch, and then delete the temporary branch.</para></listitem> | 422 | <para> |
411 | <listitem><para><emphasis><filename>git cherry-pick</filename>:</emphasis> Choose and apply specific | 423 | When you create a local copy of a Git repository, the copy has the same set |
412 | commits from one branch into another branch. | 424 | of branches as the original. |
413 | There are times when you might not be able to merge all the changes in one branch with | 425 | This means you can use Git to create a local working area (also called a branch) |
414 | another but need to pick out certain ones.</para></listitem> | 426 | that tracks a specific development branch from the source Git repository. |
415 | <listitem><para><emphasis><filename>gitk</filename>:</emphasis> Provides a GUI view of the branches | 427 | in other words, you can define your local Git environment to work on any development |
416 | and changes in your local Git repository. | 428 | branch in the repository. |
417 | This command is a good way to graphically see where things have diverged in your | 429 | To help illustrate, here is a set of commands that creates a local copy of the |
418 | local repository.</para></listitem> | 430 | <filename>poky</filename> Git repository and then creates and checks out a local |
419 | <listitem><para><emphasis><filename>git log</filename>:</emphasis> Reports a history of your changes to the | 431 | Git branch that tracks the Yocto Project 1.1 Release (edison) development: |
420 | repository.</para></listitem> | 432 | <literallayout class='monospaced'> |
421 | <listitem><para><emphasis><filename>git diff</filename>:</emphasis> Displays line-by-line differences | 433 | $ cd ~ |
422 | between your local working files and the same files in the upstream Git repository that your | 434 | $ git clone git://git.yoctoproject.org/poky |
423 | branch currently tracks.</para></listitem> | 435 | $ cd poky |
424 | </itemizedlist> | 436 | $ git checkout edison -b edison |
425 | </para> | 437 | </literallayout> |
438 | In this example, the name of the top-level directory of your local Yocto Project | ||
439 | Files Git repository is <filename>poky</filename>. | ||
440 | And, the name of the local working area (or local branch) you have created and checked | ||
441 | out is named <filename>edison</filename>. | ||
442 | The files in your repository now reflect the same files that are in the | ||
443 | <filename>edison</filename> development branch of the Yocto Project's | ||
444 | <filename>poky</filename> repository. | ||
445 | It is important to understand that when you create and checkout a | ||
446 | local working branch based on a branch name, | ||
447 | your local environment matches the "tip" of that development branch | ||
448 | at the time you created your local branch, which could be | ||
449 | different than the files at the time of a similarly named release. | ||
450 | In other words, creating and checking out a local branch based on the | ||
451 | <filename>edison</filename> branch name is not the same as creating and | ||
452 | checking out a local branch based on the <filename>edison-6.0</filename> | ||
453 | release. | ||
454 | Keep reading to see how you create a local snapshot of a Yocto Project Release. | ||
455 | </para> | ||
456 | |||
457 | <para> | ||
458 | Git uses "tags" to mark specific changes in a repository. | ||
459 | Typically, a tag is used to mark a special point such as the final change | ||
460 | before a project is released. | ||
461 | You can see the tags used with the <filename>poky</filename> Git repository | ||
462 | by going to <ulink url='http://git.yoctoproject.org/cgit.cgi/poky/'></ulink> and | ||
463 | clicking on the | ||
464 | <filename><ulink url='http://git.yoctoproject.org/cgit.cgi/poky/refs/tags'>[...]</ulink></filename> | ||
465 | link beneath the "Tag" heading. | ||
466 | </para> | ||
467 | |||
468 | <para> | ||
469 | Some key tags are <filename>laverne-4.0</filename>, <filename>bernard-5.0</filename>, | ||
470 | and <filename>edison-6.0</filename>. | ||
471 | These tags represent Yocto Project releases. | ||
472 | </para> | ||
473 | |||
474 | <para> | ||
475 | When you create a local copy of the Git repository, you also have access to all the | ||
476 | tags. | ||
477 | Similar to branches, you can create and checkout a local working Git branch based | ||
478 | on a tag name. | ||
479 | When you do this, you get a snapshot of the Git repository that reflects | ||
480 | the state of the files when the change was made associated with that tag. | ||
481 | The most common use is to checkout a working branch that matches a specific | ||
482 | Yocto Project release. | ||
483 | Here is an example: | ||
484 | <literallayout class='monospaced'> | ||
485 | $ cd ~ | ||
486 | $ git clone git://git.yoctoproject.org/poky | ||
487 | $ cd poky | ||
488 | $ git checkout edison-6.0 -b edison-6.0 | ||
489 | </literallayout> | ||
490 | In this example, the name of the top-level directory of your local Yocto Project | ||
491 | Files Git repository is <filename>poky</filename>. | ||
492 | And, the name of the local branch you have created and checked out is | ||
493 | <filename>edison-6.0</filename>. | ||
494 | The files in your repository now exactly match the Yocto Project 1.1 | ||
495 | Release (edison). | ||
496 | It is important to understand that when you create and checkout a local | ||
497 | working branch based on a tag, your environment matches a specific point | ||
498 | in time and not a development branch. | ||
499 | </para> | ||
500 | </section> | ||
501 | |||
502 | <section id='basic-commands'> | ||
503 | <title>Basic Commands</title> | ||
504 | |||
505 | <para> | ||
506 | Git has an extensive set of commands that lets you manage changes and perform | ||
507 | collaboration over the life of a project. | ||
508 | Conveniently though, you can manage with a small set of basic operations and workflows | ||
509 | once you understand the basic philosophy behind Git. | ||
510 | You do not have to be an expert in Git to be functional. | ||
511 | A good place to look for instruction on a minimal set of Git commands is | ||
512 | <ulink url='http://git-scm.com/documentation'>here</ulink>. | ||
513 | If you need to download Git, you can do so | ||
514 | <ulink url='http://git-scm.com/download'>here</ulink>. | ||
515 | </para> | ||
516 | |||
517 | <para> | ||
518 | If you don’t know much about Git, we suggest you educate | ||
519 | yourself by visiting the links previously mentioned. | ||
520 | </para> | ||
521 | |||
522 | <para> | ||
523 | The following list briefly describes some basic Git operations as a way to get started. | ||
524 | As with any set of commands, this list (in most cases) simply shows the base command and | ||
525 | omits the many arguments they support. | ||
526 | See the Git documentation for complete descriptions and strategies on how to use these commands: | ||
527 | <itemizedlist> | ||
528 | <listitem><para><emphasis><filename>git init</filename>:</emphasis> Initializes an empty Git repository. | ||
529 | You cannot use Git commands unless you have a <filename>.git</filename> repository.</para></listitem> | ||
530 | <listitem><para><emphasis><filename>git clone</filename>:</emphasis> Creates a clone of a repository. | ||
531 | During collaboration, this command allows you to create a local repository that is on | ||
532 | equal footing with a fellow developer’s repository.</para></listitem> | ||
533 | <listitem><para><emphasis><filename>git add</filename>:</emphasis> Adds updated file contents | ||
534 | to the index that | ||
535 | Git uses to track changes. | ||
536 | You must add all files that have changed before you can commit them.</para></listitem> | ||
537 | <listitem><para><emphasis><filename>git commit</filename>:</emphasis> Creates a “commit” that documents | ||
538 | the changes you made. | ||
539 | Commits are used for historical purposes, for determining if a maintainer of a project | ||
540 | will allow the change, and for ultimately pushing the change from your local Git repository | ||
541 | into the project’s upstream (or master) repository.</para></listitem> | ||
542 | <listitem><para><emphasis><filename>git status</filename>:</emphasis> Reports any modified files that | ||
543 | possibly need to be added and committed.</para></listitem> | ||
544 | <listitem><para><emphasis><filename>git checkout <branch-name></filename>:</emphasis> Changes | ||
545 | your working branch. | ||
546 | This command is analogous to “cd”.</para></listitem> | ||
547 | <listitem><para><emphasis><filename>git checkout –b <working-branch></filename>:</emphasis> Creates | ||
548 | a working branch on your local machine where you can isolate work. | ||
549 | It is a good idea to use local branches when adding specific features or changes. | ||
550 | This way if you don’t like what you have done you can easily get rid of the work.</para></listitem> | ||
551 | <listitem><para><emphasis><filename>git branch</filename>:</emphasis> Reports existing branches and | ||
552 | tells you which branch in which you are currently working.</para></listitem> | ||
553 | <listitem><para><emphasis><filename>git branch -D <branch-name></filename>:</emphasis> | ||
554 | Deletes an existing branch. | ||
555 | You need to be in a branch other than the one you are deleting | ||
556 | in order to delete <branch-name>.</para></listitem> | ||
557 | <listitem><para><emphasis><filename>git pull</filename>:</emphasis> Retrieves information | ||
558 | from an upstream Git | ||
559 | repository and places it in your local Git repository. | ||
560 | You use this command to make sure you are synchronized with the repository | ||
561 | from which you are basing changes (.e.g. the master repository).</para></listitem> | ||
562 | <listitem><para><emphasis><filename>git push</filename>:</emphasis> Sends all your local changes you | ||
563 | have committed to an upstream Git repository (e.g. a contribution repository). | ||
564 | The maintainer of the project draws from these repositories when adding your changes to the | ||
565 | project’s master repository.</para></listitem> | ||
566 | <listitem><para><emphasis><filename>git merge</filename>:</emphasis> Combines or adds changes from one | ||
567 | local branch of your repository with another branch. | ||
568 | When you create a local Git repository, the default branch is named “master”. | ||
569 | A typical workflow is to create a temporary branch for isolated work, make and commit your | ||
570 | changes, switch to your local master branch, merge the changes from the temporary branch into the | ||
571 | local master branch, and then delete the temporary branch.</para></listitem> | ||
572 | <listitem><para><emphasis><filename>git cherry-pick</filename>:</emphasis> Choose and apply specific | ||
573 | commits from one branch into another branch. | ||
574 | There are times when you might not be able to merge all the changes in one branch with | ||
575 | another but need to pick out certain ones.</para></listitem> | ||
576 | <listitem><para><emphasis><filename>gitk</filename>:</emphasis> Provides a GUI view of the branches | ||
577 | and changes in your local Git repository. | ||
578 | This command is a good way to graphically see where things have diverged in your | ||
579 | local repository.</para></listitem> | ||
580 | <listitem><para><emphasis><filename>git log</filename>:</emphasis> Reports a history of your changes to the | ||
581 | repository.</para></listitem> | ||
582 | <listitem><para><emphasis><filename>git diff</filename>:</emphasis> Displays line-by-line differences | ||
583 | between your local working files and the same files in the upstream Git repository that your | ||
584 | branch currently tracks.</para></listitem> | ||
585 | </itemizedlist> | ||
586 | </para> | ||
587 | </section> | ||
426 | </section> | 588 | </section> |
427 | 589 | ||
428 | <section id='workflows'> | 590 | <section id='workflows'> |