Archive:Development/Tutorials/Git: Difference between revisions

From KDE TechBase
(Some extra info about merging)
m (Reverted edits by KennethMartinez (talk) to last revision by AnneW)
 
(62 intermediate revisions by 19 users not shown)
Line 1: Line 1:
<h3>Setting up Git</h3>
__NOINDEX__
 
{{warning| This page is obsolete. Proceed to [[Development/Git]].}}
First, we will start with a new Git repository and add one file to it.
 
<pre>
carsten@moinmoin:~/git> git init
Initialized empty Git repository in .git/
carsten@moinmoin:~/git> echo "Test content" > testfile
</pre>
 
Now we will check the status of the repository. Git will list one untracked file, that means the file has not yet been added to the repository.
 
<pre>
carsten@moinmoin:~/git> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#  (use "git add <file>..." to include in what will be committed)
#
#      testfile
nothing added to commit but untracked files present (use "git add" to track)
</pre>
 
In the next three commands the file 'testfile' will be added and commited. Then  Git will check the status again.
 
<pre>
carsten@moinmoin:~/git> git add testfile
carsten@moinmoin:~/git> git commit
Created initial commit 246d7aa: This is the first commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 testfile
carsten@moinmoin:~/git> git status
# On branch master
nothing to commit (working directory clean)
</pre>
 
Ok, as you can see the file has been commited. Now let's see what we change the contents of the file:
 
<pre>
carsten@moinmoin:~/git> echo "new content" > testfile
carsten@moinmoin:~/git> git status
# On branch master
# Changed but not updated:
#  (use "git add <file>..." to update what will be committed)
#
#      modified:  testfile
#
no changes added to commit (use "git add" and/or "git commit -a")
carsten@moinmoin:~/git> git commit -a
Created commit 14a9802: Second commit
1 files changed, 1 insertions(+), 1 deletions(-)
</pre>
 
You see that Git noticed the changes in the file. "git-commit -a" commits all changes in the repository.
 
<h3>Branches are cheap in Git</h3>
<i>git-branch</i> shows you the branches of the repository, the one with the '*' is the active one. So let us create a new branch called <i>"bugfix-branch"</i> and assume we want to fix a branch there. After this fix (in this case the new file) we will merge back all the hard work into the master branch.
 
<pre>
carsten@moinmoin:~/git> git-branch
* master
carsten@moinmoin:~/git> git branch bugfix-branch
carsten@moinmoin:~/git> git checkout bugfix-branch
Switched to branch "bugfix-branch"
carsten@moinmoin:~/git> git branch
* bugfix-branch
  master
carsten@moinmoin:~/git> echo "a second file" > newfile
carsten@moinmoin:~/git> git commit -a
# On branch bugfix-branch
# Untracked files:
#  (use "git add <file>..." to include in what will be committed)
#
#      newfile
nothing added to commit but untracked files present (use "git add" to track)
carsten@moinmoin:~/git> git add newfile
carsten@moinmoin:~/git> git commit -a
Created commit 3264357: This file is here for a demonstration of Gits branch- and merge feature
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 newfile
</pre>
 
Ok, the bug is fixed now. Next step: Checkout the master branch and merge the two branches:
 
<pre>
carsten@moinmoin:~/git> git checkout master
Switched to branch "master"
carsten@moinmoin:~/git> ls
testfile
carsten@moinmoin:~/git> git merge bugfix-branch
Updating 14a9802..3264357
Fast forward
newfile |    1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 newfile
carsten@moinmoin:~/git> ls
newfile  testfile
</pre>
 
If you would have edited "testfile" in the bugfix-branch, then git would automatically try to merge the contents of "testfile" in the bugfix-branch with the contents of "testfile" in the master branch. Sometimes this can cause a merge conflict. In that case you have to manually edit the "testfile" in the master branch, and afterwards you do a "git commit -a" to complete the merge. Git indicates the conflicting lines in the file itself.
 
<h3>Lets now have a look at the log of the testfile</h3>
<pre>
carsten@moinmoin:~/git> git log testfile
commit 14a9802e249413003d1fa40002baa025aa54c75f
Author: Carsten Niehaus <[email protected]>
Date:  Fri Apr 18 18:07:18 2008 +0200
 
    Second commit
 
commit 246d7aad05139314e7ff62a5becb6c930f72fb8f
Author: Carsten Niehaus <carsten@moinmoin.site>
Date:  Fri Apr 18 18:06:33 2008 +0200
 
    This is the first commit
</pre>

Latest revision as of 15:48, 31 July 2012

Warning
This page is obsolete. Proceed to Development/Git.