|
|
(14 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| = Workspace tips =
| |
| * Show branch in prompt: add the following to your .bashrc
| |
| PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[01;33m\]`git branch 2>/dev/null|cut -f2 -d\* -s|sed -e"s/ //g"`\[\033[00m\]\$ '
| |
| * gitk is a great tool for visualizing the git history and seeing where your master or branch is wrt origin:master
| |
| gitk
| |
| * git gui is a great tool for performing git commands with a graphical user interface
| |
| git gui
| |
|
| |
|
| === Stash local changes temporarily ===
| |
| * git stash
| |
|
| |
| === Create a local branch ===
| |
| * git branch test
| |
|
| |
| === Swtich to a local branch ===
| |
| * git checkout test
| |
|
| |
| === Get stashed local changes ===
| |
| * git stash pop
| |
|
| |
| === Update a branch to the remote master's head ===
| |
| * git stash
| |
| * git rebase origin master
| |
| * git stash pop
| |
|
| |
| == Stash only those changes that have not been staged ==
| |
| * git stash save --keep-index
| |
|
| |
| === Add to local commit ===
| |
| * git add <filename>
| |
| * git add -A
| |
|
| |
| === Push local commit ===
| |
| * git push origin master
| |
|
| |
| === Remove a local branch ===
| |
| * git checkout master
| |
| * git branch -d <branch>
| |
|
| |
| === Track a remote branch ===
| |
| * "git fetch" (get up to date) or "git pull"
| |
| * git branch --track somebranch origin/somebranch
| |
| ** --track is not needed unless you've set branch.autosetupmerge to false in your config
| |
| * git checkout somebranch
| |
| * git commit
| |
| * git push
| |
| ** sends changes to origin/somebranch
| |
|
| |
| === Delete a remote branch ===
| |
| * Don't do this unless you're incredibly confident in what you're doing
| |
| * git push origin :somebranch
| |
|
| |
| === Project History ===
| |
| * git log ( To view the history of your changes )
| |
| * git log -p ( To see complete diffs at each step )
| |
| * git log --stat --summary ( To see overview )
| |
|
| |
| === Setting up tracked repositories to start pushing ===
| |
| #If you have cloned read-only version, do the following first
| |
| ## git remote rm origin
| |
| # Add the proper remote
| |
| ##git remote add origin git@gitorious.org:tubetk/tubetk.git
| |
| # You can push your changes
| |
| ##git push origin master
| |
|
| |
| === Use a global ignore file for editor backups ===
| |
|
| |
| Different developers' editors use different backup file names. Rather than put every possible editor backup file name in every project .gitignore, use a personal gitignore file to ignore your own editor backup files:
| |
| git config --global core.excludesfile ~/.gitignore
| |
| echo '*~' >> ~/.gitignore
| |
| Now, the exclusion pattern '*~' will be applied in every directory of every git project you use.
| |
|
| |
| === View history ===
| |
|
| |
| Take a look at the history:
| |
| git log -C --stat
| |
| (git log has a bunch of options; this set detects renames and copies, and shows a summary of what files are changed in each commit)
| |
| Get a closer look at a particular change by commit:
| |
|
| |
| git log -C -p -1 57c609
| |
| (-p shows a patch, -1 restricts to a single change, and 57c609 is the start of a commit shown by the first 'git log' command)
| |
| Get a list of commits to a particular file since vBeta branch:
| |
|
| |
| git log --oneline vBeta..origin/v1.0 -- CMakeLists.txt
| |
|
| |
| View history graphically, if you installed the necessary program:
| |
|
| |
| gitk --all
| |
| qgit --all
| |
|
| |
| You can also [view the history online in gitorious/github], but viewing the history locally is often more powerful.
| |
|
| |
| View commits affecting a certain file only:
| |
|
| |
| git whatchanged filename
| |
|
| |
| = Additional References =
| |
| * GIT tutorial [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html]
| |
| * GIT guide from gitorious [http://qt.gitorious.org/qt-jambi/pages/GitGuide]
| |
| * GIT guide in CMake [http://www.cmake.org/Wiki/CMake/Git]
| |
| * GIT quick reference [http://jonas.nitro.dk/git/quick-reference.html]
| |