Update progit.org links to git-scm.com book version
Quickening event to redirect the links that used to be at progit.org to their new home at the git-scm.com book section. Deals with the English language links only.
This commit is contained in:
144
basic/index.html
144
basic/index.html
@@ -5,7 +5,7 @@ layout: reference
|
||||
<div class="box">
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://progit.org/book/ch2-2.html">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository">book</a>
|
||||
</span>
|
||||
Basic Snapshotting
|
||||
</h2>
|
||||
@@ -19,13 +19,13 @@ layout: reference
|
||||
<p>
|
||||
An important concept here is that Git has an 'index', which acts as sort
|
||||
of a staging area for your snapshot. This allows you to build up a series
|
||||
of well composed snapshots from changed files in your working directory,
|
||||
of well composed snapshots from changed files in your working directory,
|
||||
rather than having to commit all of the file changes at once.
|
||||
</p>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>, you will use <code>git add</code> to start tracking new
|
||||
files and also to stage changes to already tracked files, then
|
||||
files and also to stage changes to already tracked files, then
|
||||
<code>git status</code> and <code>git diff</code> to see what has been
|
||||
modified and staged and finally <code>git commit</code> to record your
|
||||
snapshot into your history. This will be the basic workflow that you use
|
||||
@@ -39,7 +39,7 @@ layout: reference
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://git-scm.com/docs/git-add">docs</a>
|
||||
<a target="new" href="http://progit.org/book/ch2-2.html#tracking_new_files">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Tracking-New-Files">book</a>
|
||||
</span>
|
||||
<a name="add">git add</a>
|
||||
<span class="desc">adds file contents to the staging area</span>
|
||||
@@ -47,7 +47,7 @@ layout: reference
|
||||
|
||||
<div class="block">
|
||||
<p>
|
||||
In Git, you have to add file contents to your staging area before you
|
||||
In Git, you have to add file contents to your staging area before you
|
||||
can commit them. If the file is new, you can run <code>git add</code>
|
||||
to initially add the file to your staging area, but even if the file
|
||||
is already "tracked" - ie, it was in your last commit - you still need
|
||||
@@ -56,7 +56,7 @@ layout: reference
|
||||
</p>
|
||||
|
||||
<p>Going back to our Hello World example, once we've initiated the project,
|
||||
we would now start adding our files to it and we would do that with
|
||||
we would now start adding our files to it and we would do that with
|
||||
<code>git add</code>. We can use <code>git status</code> to see what the
|
||||
state of our project is.
|
||||
</p>
|
||||
@@ -72,7 +72,7 @@ layout: reference
|
||||
<pre>
|
||||
<b>$ git add README hello.rb</b>
|
||||
</pre>
|
||||
|
||||
|
||||
Now if we run <code>git status</code> again, we'll see that they've been
|
||||
added.
|
||||
|
||||
@@ -86,8 +86,8 @@ layout: reference
|
||||
It is also common to recursively add all files in a new project by specifying
|
||||
the current working directory like this: <code>git add .</code>. Since Git
|
||||
will recursively add all files under a directory you give it, if you give it
|
||||
the current working directory, it will simply start tracking every file
|
||||
there. In this case, a <code>git add .</code> would have done the same
|
||||
the current working directory, it will simply start tracking every file
|
||||
there. In this case, a <code>git add .</code> would have done the same
|
||||
thing as a <code>git add README hello.rb</code>, or for that matter so would
|
||||
<code>git add *</code>, but that's only because we don't have subdirectories
|
||||
which the <code>*</code> would not recurse into.
|
||||
@@ -111,15 +111,15 @@ layout: reference
|
||||
</p>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git add</code> on a file when you want to
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git add</code> on a file when you want to
|
||||
include whatever changes you've made to it in your next commit snapshot.
|
||||
Anything you've changed that is not added will not be included - this means
|
||||
you can craft your snapshots with a bit more precision than most other SCM
|
||||
systems.</p>
|
||||
|
||||
<p>For a very interesting example of using this flexibility to stage only
|
||||
parts of modified files at a time, see the '-p' option to
|
||||
parts of modified files at a time, see the '-p' option to
|
||||
<code>git add</code> in the Pro Git book.</p>
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ layout: reference
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://git-scm.com/docs/git-status">docs</a>
|
||||
<a target="new" href="http://progit.org/book/ch2-2.html#checking_the_status_of_your_files">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Checking-the-Status-of-Your-Files">book</a>
|
||||
</span>
|
||||
<a name="status">git status</a>
|
||||
<span class="desc">view the status of your files in the working directory and staging area</span>
|
||||
@@ -139,11 +139,11 @@ layout: reference
|
||||
|
||||
<div class="block">
|
||||
<p>As you saw in the <code>git add</code> section, in order to see what the
|
||||
status of your staging area is compared to the code in your working
|
||||
status of your staging area is compared to the code in your working
|
||||
directory, you can run the <code>git status</code> command. I demonstrated
|
||||
using it with the <code>-s</code> option, which gives you short output.
|
||||
Without that flag, the <code>git status</code> command will give you more
|
||||
context and hints. Here is the same status output with and without the
|
||||
context and hints. Here is the same status output with and without the
|
||||
<code>-s</code>. The short output looks like this:
|
||||
</p>
|
||||
|
||||
@@ -176,11 +176,11 @@ layout: reference
|
||||
</pre>
|
||||
|
||||
<p>You can easily see how much more compact the short output is, but the
|
||||
long output has useful tips and hints as to what commands you may want to
|
||||
long output has useful tips and hints as to what commands you may want to
|
||||
use next.
|
||||
</p>
|
||||
|
||||
<p>Git will also tell you about files that were deleted since your last
|
||||
<p>Git will also tell you about files that were deleted since your last
|
||||
commit or files that were modified or staged since your last commit.</p>
|
||||
|
||||
<pre>
|
||||
@@ -192,7 +192,7 @@ layout: reference
|
||||
You can see there are two columns in the short status output. The first
|
||||
column is for the staging area, the second is for the working directory.
|
||||
So for example, if you have the README file staged and then you modify
|
||||
it again without running <code>git add</code> a second time, you'll see
|
||||
it again without running <code>git add</code> a second time, you'll see
|
||||
this:
|
||||
|
||||
<pre>
|
||||
@@ -202,8 +202,8 @@ layout: reference
|
||||
</pre>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git status</code> to see if anything has been modified
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git status</code> to see if anything has been modified
|
||||
and/or staged since your last commit so you can decide if you want to
|
||||
commit a new snapshot and what will be recorded in it.
|
||||
</p>
|
||||
@@ -215,7 +215,7 @@ layout: reference
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://git-scm.com/docs/git-diff">docs</a>
|
||||
<a target="new" href="http://progit.org/book/ch2-2.html#viewing_your_staged_and_unstaged_changes">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Viewing-Your-Staged-and-Unstaged-Changes">book</a>
|
||||
</span>
|
||||
<a name="diff">git diff</a>
|
||||
<span class="desc">shows diff of what is staged and what is modified but unstaged</span>
|
||||
@@ -223,7 +223,7 @@ layout: reference
|
||||
|
||||
<div class="block">
|
||||
<p>There are two main uses of the <code>git diff</code> command. One use we
|
||||
will describe here, the other we will describe later in the
|
||||
will describe here, the other we will describe later in the
|
||||
<a href="/inspect">"Inspection and Comparison"</a>
|
||||
section. The way we're going to use it here is to describe the
|
||||
changes that are staged or modified on disk but unstaged.</p>
|
||||
@@ -250,16 +250,16 @@ index d62ac43..8d15d50 100644
|
||||
+++ b/hello.rb</span>
|
||||
<span class="lblue">@@ -1,7 +1,7 @@</span>
|
||||
class HelloWorld
|
||||
|
||||
|
||||
def self.hello
|
||||
<span class="red">- puts "hello world"</span>
|
||||
<span class="green">+ puts "hola mundo"</span>
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
</pre>
|
||||
|
||||
<p>So where <code>git status</code> will show you what files have changed
|
||||
<p>So where <code>git status</code> will show you what files have changed
|
||||
and/or been staged since your last commit, <code>git diff</code> will
|
||||
show you what those changes actually are, line by line. It's generally
|
||||
a good follow-up command to <code>git status</code>
|
||||
@@ -271,9 +271,9 @@ index d62ac43..8d15d50 100644
|
||||
</h4>
|
||||
|
||||
<p>The <code>git diff --cached</code> command will show you what contents
|
||||
have been staged. That is, this will show you the changes that will
|
||||
have been staged. That is, this will show you the changes that will
|
||||
currently go into the next commit snapshot. So, if you were to stage
|
||||
the change to <code>hello.rb</code> in the example above,
|
||||
the change to <code>hello.rb</code> in the example above,
|
||||
<code>git diff</code> by itself won't show you any output because it will
|
||||
only show you what is <i>not yet</i> staged.
|
||||
</p>
|
||||
@@ -288,7 +288,7 @@ index d62ac43..8d15d50 100644
|
||||
<b>$ </b>
|
||||
</pre>
|
||||
|
||||
<p>If you want to see the staged changes, you can run
|
||||
<p>If you want to see the staged changes, you can run
|
||||
<code>git diff --cached</code> instead.</p>
|
||||
|
||||
<pre>
|
||||
@@ -303,12 +303,12 @@ index d62ac43..8d15d50 100644
|
||||
+++ b/hello.rb</span>
|
||||
<span class="lblue">@@ -1,7 +1,7 @@</span>
|
||||
class HelloWorld
|
||||
|
||||
|
||||
def self.hello
|
||||
<span class="red">- puts "hello world"</span>
|
||||
<span class="green">+ puts "hola mundo"</span>
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
</pre>
|
||||
|
||||
@@ -320,7 +320,7 @@ index d62ac43..8d15d50 100644
|
||||
<p>If you want to see both staged and unstaged changes together, you
|
||||
can run <code>git diff HEAD</code> - this basically means you want to
|
||||
see the difference between your working directory and the last commit,
|
||||
ignoring the staging area. If we make another change to our
|
||||
ignoring the staging area. If we make another change to our
|
||||
<code>hello.rb</code> file then we'll have some changes staged and some
|
||||
changes unstaged. Here are what all three <code>diff</code> commands
|
||||
will show you:</p>
|
||||
@@ -333,12 +333,12 @@ index 4f40006..2ae9ba4 100644
|
||||
+++ b/hello.rb</span>
|
||||
<span class="lblue">@@ -1,7 +1,7 @@</span>
|
||||
class HelloWorld
|
||||
|
||||
|
||||
<span class="green">+ # says hello</span>
|
||||
def self.hello
|
||||
puts "hola mundo"
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
<b>$ git diff --cached</b>
|
||||
<span class="umber">diff --git a/hello.rb b/hello.rb
|
||||
@@ -347,12 +347,12 @@ index 2aabb6e..4f40006 100644
|
||||
+++ b/hello.rb</span>
|
||||
<span class="lblue">@@ -1,7 +1,7 @@</span>
|
||||
class HelloWorld
|
||||
|
||||
|
||||
def self.hello
|
||||
<span class="red">- puts "hello world"</span>
|
||||
<span class="green">+ puts "hola mundo"</span>
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
<b>$ git diff HEAD</b>
|
||||
<span class="umber">diff --git a/hello.rb b/hello.rb
|
||||
@@ -361,13 +361,13 @@ index 2aabb6e..2ae9ba4 100644
|
||||
+++ b/hello.rb</span>
|
||||
<span class="lblue">@@ -1,7 +1,8 @@</span>
|
||||
class HelloWorld
|
||||
|
||||
|
||||
<span class="green">+ # says hello</span>
|
||||
def self.hello
|
||||
<span class="red">- puts "hello world"</span>
|
||||
<span class="green">+ puts "hola mundo"</span>
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
</pre>
|
||||
|
||||
@@ -381,7 +381,7 @@ index 2aabb6e..2ae9ba4 100644
|
||||
option, which will give us a summary of changes instead. Here is the
|
||||
same example as above, but using the <code>--stat</code> option instead.
|
||||
</p>
|
||||
|
||||
|
||||
<pre>
|
||||
<b>$ git status -s</b>
|
||||
<span class="green">M</span><span class="red">M</span> hello.rb
|
||||
@@ -403,10 +403,10 @@ index 2aabb6e..2ae9ba4 100644
|
||||
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git diff</code> to see details of the <code>git status</code>
|
||||
command - <i>how</i> files have been modified or staged on a line by line
|
||||
basis.
|
||||
basis.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -417,7 +417,7 @@ index 2aabb6e..2ae9ba4 100644
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://git-scm.com/docs/git-commit">docs</a>
|
||||
<a target="new" href="http://progit.org/book/ch2-2.html#committing_your_changes">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Committing-Your-Changes">book</a>
|
||||
</span>
|
||||
<a name="commit">git commit</a>
|
||||
<span class="desc">records a snapshot of the staging area</span>
|
||||
@@ -425,7 +425,7 @@ index 2aabb6e..2ae9ba4 100644
|
||||
|
||||
<div class="block">
|
||||
|
||||
<p>Now that you have staged the content you want to snapshot with the
|
||||
<p>Now that you have staged the content you want to snapshot with the
|
||||
<code>git add</code> command, you run <code>git commit</code> to actually
|
||||
record the snapshot.
|
||||
Git records your name and email address with every commit you make,
|
||||
@@ -438,7 +438,7 @@ index 2aabb6e..2ae9ba4 100644
|
||||
</pre>
|
||||
|
||||
<p>Let's stage and commit all the changes to our
|
||||
<code>hello.rb</code> file. In this first example, we'll use the
|
||||
<code>hello.rb</code> file. In this first example, we'll use the
|
||||
<code>-m</code> option to provide the commit message on the command line.
|
||||
</p>
|
||||
|
||||
@@ -488,10 +488,10 @@ nothing to commit (working directory clean)
|
||||
the output of the <code>git status</code> command in there for you as
|
||||
a reminder of what you have modified and staged.</p>
|
||||
|
||||
<p>In general, it's very important to write a good commit message.
|
||||
<p>In general, it's very important to write a good commit message.
|
||||
For open source projects, it's generally a rule to write your message
|
||||
more or less in this format:</p>
|
||||
|
||||
|
||||
<pre>
|
||||
Short (50 chars or less) summary of changes
|
||||
|
||||
@@ -531,7 +531,7 @@ Further paragraphs come after blank lines.
|
||||
four commits of logically separate changes so that your work may be more
|
||||
easily peer reviewed. Since there is a separation between committing and
|
||||
pushing those changes, do take the time to make it easier for the people
|
||||
you are working with to see what you've done by putting each logically
|
||||
you are working with to see what you've done by putting each logically
|
||||
separate change in a separate commit with a nice commit message so it
|
||||
is easier for them to see what you are doing and why.</p>
|
||||
|
||||
@@ -540,8 +540,8 @@ Further paragraphs come after blank lines.
|
||||
<small>automatically stage all tracked, modified files before the commit</small>
|
||||
</h4>
|
||||
|
||||
<p>If you think the <code>git add</code> stage of the workflow is too
|
||||
cumbersome, Git allows you to skip that part with the <code>-a</code>
|
||||
<p>If you think the <code>git add</code> stage of the workflow is too
|
||||
cumbersome, Git allows you to skip that part with the <code>-a</code>
|
||||
option. This basically tells Git to run <code>git add</code> on any file
|
||||
that is "tracked" - that is, any file that was in your last commit and
|
||||
has been modified. This allows you to do a more Subversion style workflow
|
||||
@@ -569,7 +569,7 @@ Further paragraphs come after blank lines.
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
</pre>
|
||||
|
||||
<p>Notice how if you don't stage any changes and then run
|
||||
<p>Notice how if you don't stage any changes and then run
|
||||
<code>git commit</code>, Git will simply give you the output of the
|
||||
<code>git status</code> command, reminding you that nothing is staged.
|
||||
I've highlighted the important part of that message, saying that nothing
|
||||
@@ -584,7 +584,7 @@ Further paragraphs come after blank lines.
|
||||
to actually record the snapshot forever.</p>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git commit</code> to record the snapshot of your staged
|
||||
content. This snapshot can then be compared, shared and reverted to
|
||||
if you need to.
|
||||
@@ -597,7 +597,7 @@ Further paragraphs come after blank lines.
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a target="new" href="http://git-scm.com/docs/git-reset">docs</a>
|
||||
<a target="new" href="http://progit.org/book/ch2-4.html#unstaging_a_staged_file">book</a>
|
||||
<a target="new" href="http://git-scm.com/book/ch2-4.html#Unstaging-a-Staged-File">book</a>
|
||||
</span>
|
||||
<a name="reset">git reset HEAD</a>
|
||||
<span class="desc">unstage changes that you have staged</span>
|
||||
@@ -605,18 +605,18 @@ Further paragraphs come after blank lines.
|
||||
|
||||
<div class="block">
|
||||
<p><code>git reset</code> is probably the most confusing command written
|
||||
by humans. I've been using Git for years, even wrote a book on it and I
|
||||
still get confused by what it is going to do at times. So, I'll just
|
||||
tell you the three specific invocations of it that are generally
|
||||
helpful and ask you to blindly use it as I do - because it can be
|
||||
by humans. I've been using Git for years, even wrote a book on it and I
|
||||
still get confused by what it is going to do at times. So, I'll just
|
||||
tell you the three specific invocations of it that are generally
|
||||
helpful and ask you to blindly use it as I do - because it can be
|
||||
very useful.
|
||||
</p>
|
||||
|
||||
<p>In this case, we can use it to unstage something that you have
|
||||
<p>In this case, we can use it to unstage something that you have
|
||||
accidentally staged. Let's say that you have modified two files and want
|
||||
to record them into two different commits. You should stage and commit
|
||||
one, then stage and commit the other. If you accidentally stage both of
|
||||
them, how do you <i>un-</i>stage one? You do it with
|
||||
them, how do you <i>un-</i>stage one? You do it with
|
||||
<code>git reset HEAD -- file</code>. Technically here you don't have to
|
||||
add the <code>--</code> - it is used to tell Git when you have stopped
|
||||
listing options and are now listing file paths, but it's probably good to
|
||||
@@ -659,9 +659,9 @@ M hello.rb
|
||||
|
||||
<p class="tip">
|
||||
If you want to be able to just run <code>git unstage</code>, you can easily
|
||||
setup an alias in Git. Just run
|
||||
<code>git config --global alias.unstage "reset HEAD"</code>.
|
||||
Once you have run that, you can then just run
|
||||
setup an alias in Git. Just run
|
||||
<code>git config --global alias.unstage "reset HEAD"</code>.
|
||||
Once you have run that, you can then just run
|
||||
<code>git unstage [file]</code> instead.
|
||||
</p>
|
||||
|
||||
@@ -683,7 +683,7 @@ M hello.rb
|
||||
</pre>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git reset HEAD</code> to unstage files that you previously
|
||||
ran <code>git add</code> on and wish to not include in the next commit
|
||||
snapshot</p>
|
||||
@@ -695,7 +695,7 @@ M hello.rb
|
||||
<h2>
|
||||
<span class="docs">
|
||||
<a href="http://git-scm.com/docs/git-rm">docs</a>
|
||||
<a href="http://progit.org/book/ch2-2.html#removing_files">book</a>
|
||||
<a href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Removing-Files">book</a>
|
||||
</span>
|
||||
<a name="rm-mv">git rm</a>
|
||||
<span class="desc">remove files from the staging area</span>
|
||||
@@ -703,18 +703,18 @@ M hello.rb
|
||||
|
||||
<div class="block">
|
||||
|
||||
<p><code>git rm</code> will remove entries from the staging area.
|
||||
This is a bit different from <code>git reset HEAD</code> which "unstages"
|
||||
files. By "unstage" I mean it reverts the staging area to what was
|
||||
there before we started modifying things. <code>git rm</code> on the
|
||||
other hand just kicks the file off the stage entirely, so that it's not
|
||||
<p><code>git rm</code> will remove entries from the staging area.
|
||||
This is a bit different from <code>git reset HEAD</code> which "unstages"
|
||||
files. By "unstage" I mean it reverts the staging area to what was
|
||||
there before we started modifying things. <code>git rm</code> on the
|
||||
other hand just kicks the file off the stage entirely, so that it's not
|
||||
included in the next commit snapshot, thereby effectively deleting it.</p>
|
||||
|
||||
<p>By default, a <code>git rm file</code> will remove the file from the
|
||||
<p>By default, a <code>git rm file</code> will remove the file from the
|
||||
staging area entirely and also off your disk (the working directory). To
|
||||
leave the file in the working directory, you can use <code>git rm --cached
|
||||
</code>.</p>
|
||||
|
||||
|
||||
<h4>
|
||||
git mv
|
||||
<small>git rm --cached orig; mv orig new; git add new</small>
|
||||
@@ -725,7 +725,7 @@ M hello.rb
|
||||
Instead, it just tracks the snapshots and then figures out what files were
|
||||
likely renamed by comparing snapshots. If a file was removed from one
|
||||
snapshot and another file was added to the next one and the contents are
|
||||
similar, Git figures it was most likely a rename. So, although the
|
||||
similar, Git figures it was most likely a rename. So, although the
|
||||
<code>git mv</code> command exists, it is superfluous - all it does is a
|
||||
<code>git rm --cached</code>, moves the file on disk, then runs a
|
||||
<code>git add</code> on the new file. You don't really need to use it, but
|
||||
@@ -739,8 +739,8 @@ M hello.rb
|
||||
from your index, too.</p>
|
||||
|
||||
<p class="nutshell">
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git rm</code> to remove files from being tracked in Git. It
|
||||
<strong>In a nutshell</strong>,
|
||||
you run <code>git rm</code> to remove files from being tracked in Git. It
|
||||
will also remove them from your working directory.</p>
|
||||
</p>
|
||||
|
||||
|
Reference in New Issue
Block a user