--- a/git.rst Wed Sep 07 18:11:05 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,347 +0,0 @@
--*- mode: outline; coding: utf-8; -*-
-
-* Setup git.
-
-** Debian.
-
-For Etch Degian release use git-core package from backports,
-old 1.4 version of git very dumb compared to new version 1.5.
-
- $ sudo apt-get install git-core
-
-After install setup some options:
-
- $ git config --global user.name "Oleksandr Gavenko"
- $ git config --global user.mail "gavenkoa@gmail.com"
- $ cat ~/.gitconfig
-[user]
- name = Oleksandr Gavenko
- mail = gavenkoa@gmail.com
-
-** Windows.
-
-No official support for Windows OS.
-
-*** Cygwin.
-
- $ setup.exe -p git
-
-*** MSys.
-
-Native port.
-
- $ cat gitconfig
-[core]
-autocrlf = false
-symlinks = false
-
- http://code.google.com/p/msysgit
-
-* git over proxy.
-
-Only http:// protocol support proxy (not git://).
-
- $ export http_proxy="http://username:password@proxy:port/"
- $ git clone http://github.com/$user/$proj.git $proj
-
-You can store proxy settings under repository local config file:
-
- $ git config http.proxy http://$user:$passwd@$ip:$port
-
-* Start your project.
-
-Setup proj space on fs.
-
- $ mkdir proj
- $ cd proj
- $ git init
-Initialized empty Git repository in /home/user/tmp/proj/.git/
- $ ls -a
-. .. .git
-
-Add file, make changes, commit all.
-
- $ emacs Makefile
-... C-x C-c
- $ emacs app.c
-... C-x C-c
- $ git add Makefile app.c
- $ git status
-# On branch master
-#
-# Initial commit
-#
-# Changes to be committed:
-# (use "git rm --cached <file>..." to unstage)
-#
-# new file: Makefile
-# new file: app.c
-#
-
-or just
-
- $ git add .
-
-Commit newlly added file:
-
- $ git commit
-... Write message log ...
-Created initial commit 2169263: My first commit massage.
- 1 files changed, 4 insertions(+), 0 deletions(-)
- create mode 100644 app.c
-
-* Undo tracking added file.
-
-You do
-
- $ git add badfile
- $ git status
-# On branch master
-# Changes to be committed:
-# (use "git reset HEAD <file>..." to unstage)
-#
-# new file: badfile
-#
-
-To stop tracking badfile do
-
- $ git rm --cached badfile
- $ git status
-# On branch master
-# Untracked files:
-# (use "git add <file>..." to include in what will be committed)
-#
-# file
-nothing added to commit but untracked files present (use "git add" to track)
-
-or
-
- $ git reset badfile
-
-* Doing changes.
-
- $ printf "clean:\n<TAB>rm $(wildcard *.o)\n" >>Makefile
- $ git diff
-diff --git a/Makefile b/Makefile
-index e84f7e9..cd2438a 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,2 +1,5 @@
- all:
- @echo XXX
- exit 1
-+
-+clean:
-+ rm -f *.o
- $ git add Makefile
- $ git commit -m "Added clean target."
-Created commit 11272b9: Added clean target.
- 1 files changed, 1 insertions(+), 0 deletions(-)
- create mode 100644 file
-
-or just
-
- $ git commit -a -m "Added clean target."
-
-* git analog of 'hg incoming'.
-
-git does not directly support such feature. You can emulate it by:
-
- $ git fetch
- $ git log master..origin/master # or just '..origin/master'
-
-By previous commands you grab changes from remote server! You can apply them:
-
- TODO
- $ git merge
-
-* git analog of 'hg outgoing'.
-
-git does not directly support such feature. You can emulate it by:
-
- $ git fetch
- $ git log origin/master..master # or just 'origin/master..'
-
-* Debug git network operation.
-
-Git uses libcurl for network operation.
-
- $ export GIT_CURL_VERBOSE=1
- $ git ...
-
-* Using git to work with SVN offline.
-
-Prepare SVN and git utilities:
-
- $ sudo apt-get svn git-core git-svn
-
-Making SVN repo
-
- $ cd $HOME/tmp
- $ svnadmin create svn-repo
- $ svn co file://$HOME/tmp/svn-repo svn-devel
- $ cd svn-devel
- $ mkdir tags trunk branches
- $ svn add *
-A branches
-A tags
-A trunk
- $ cd trunk/
- $ printf "all:\n echo XXX\n" >Makefile
- $ printf "int main() {return 0;}" >main.c
- $ svn add *
- $ cd ..
- $ svn st
-A trunk
-A trunk/main.c
-A trunk/Makefile
-A branches
-A tags
- $ svn ci -m init
-Adding branches
-Adding tags
-Adding trunk
-Adding trunk/Makefile
-Adding trunk/main.c
-Transmitting file data ..
- $ svn cp -m v0.0 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/tags/v0.0
- $ svn cp -m v0.1 file://$HOME/tmp/svn/trunk file://$HOME/tmp/svn/branches/v0.1
-
-Moving SVN changset to git repo
-
- $ cd $HOME/tmp
- $ git svn init file://$HOME/tmp/svn git-repo
- $ ls -a
-. .. .git
- $ git svn fetch
- A trunk/main.c
- A trunk/Makefile
-W: +empty_dir: branches
-W: +empty_dir: tags
-r1 = 52ccd9882979dd53ec198dbac108783ec660410f (git-svn)
- A tags/v0.0/main.c
- A tags/v0.0/Makefile
-r2 = 8ec8a772bb6f37ace56b3649066dc84e481ed427 (git-svn)
- M trunk/Makefile
-r3 = 2c169ff409ed504dd6a092b1e302beb3fd94871e (git-svn)
- A branches/v0.1/main.c
- A branches/v0.1/Makefile
-r4 = e68d76f4ba6beea4b9059c1884c1f38ce10831a7 (git-svn)
- M trunk/Makefile
-r5 = cdde63974454b13ac53f2eeb201aa76c49fd875c (git-svn)
-Checked out HEAD:
- file:///home/sasha/tmp/svn r5
-
-or (in old git version):
-
- $ git svn clone file://$HOME/tmp/svn git-repo
-
-Making changes in svn:
-
- $ cd $HOME/tmp/svn-devel/trunk
- $ echo ".PHONY: clean" >>Makefile
- $ svn ci -m "Added clean to phony."
-Sending trunk/Makefile
-Transmitting file data .
-Committed revision 6.
-
-Making committed in git:
-
- $ cd $HOME/tmp/git-repo/trunk
- $ echo ".PHONY: all" >>Makefile
- $ echo "int foo(int x) {return x+x;}" >>main.c
- $ git status
-# On branch master
-# Changed but not updated:
-# (use "git add <file>..." to update what will be committed)
-#
-# modified: Makefile
-# modified: main.c
-#
-no changes added to commit (use "git add" and/or "git commit -a")
- $ git commit -a -m "Bug fixed."
-Created commit 222d399: Bug fixed.
- 2 files changed, 2 insertions(+), 0 deletions(-)
-
-Getting changes from SVN to git:
-
- $ git svn rebase
- M trunk/Makefile
-r6 = 8165e9bfb38e9df09a7313d19606ec227629b670 (git-svn)
-First, rewinding head to replay your work on top of it...
-Applying Bug fixed.
-error: patch failed: trunk/Makefile:6
-error: trunk/Makefile: patch does not apply
-Using index info to reconstruct a base tree...
-Falling back to patching base and 3-way merge...
-Auto-merged trunk/Makefile
-CONFLICT (content): Merge conflict in trunk/Makefile
-Failed to merge in the changes.
-Patch failed at 0001.
-
-When you have resolved this problem run "git rebase --continue".
-If you would prefer to skip this patch, instead run "git rebase --skip".
-To restore the original branch and stop rebasing run "git rebase --abort".
-
-rebase refs/remotes/git-svn: command returned error: 1
- $ git add Makefile
- $ git rebase --continue
-Applying Bug fixed.
-
-and return all from git to SVN:
-
- $ git svn dcommit
-Committing to file:///home/sasha/tmp/svn ...
- M trunk/Makefile
- M trunk/main.c
-Committed r7
- M trunk/main.c
- M trunk/Makefile
-r7 = 68e782c8d06635f2db4dd69b9ca8599f99da22e2 (git-svn)
-No changes between current HEAD and refs/remotes/git-svn
-Resetting to the latest refs/remotes/git-svn
-
-See what going to SVN repo:
-
- $ cd $HOME/tmp/svn-devel/trunk
- $ svn diff -r BASE:HEAD
-Index: Makefile
-===================================================================
---- Makefile (working copy)
-+++ Makefile (revision 7)
-@@ -6,4 +6,4 @@
- .o: .c
- $(CC) $(CFLAGS) -c -o $@ $<
-
--.PHONY: clean
-+.PHONY: all clean
-Index: main.c
-===================================================================
---- main.c (working copy)
-+++ main.c (revision 7)
-@@ -2,3 +2,4 @@
- {
- return 0;
- }
-+int foo(int x) {return x+x;}
- $ svn up
-U Makefile
-U main.c
-Updated to revision 7.
-
-* gitk
-
-gitk - The git repository browser
-
-Installing:
-
- $ sudo apt-get instal gitk
-
-Using:
-
- $ cd /path/to/git-repo
- $ gitk
-
-See
-
- gitk(1)