Difference between revisions of "Git"
Line 1: | Line 1: | ||
− | |||
− | + | '''Git''' is a distributed revision control system (VCS), designed to work well with highly non-linear workflows. It was initially conceived to support development of the Linux kernel, and has since become the most widely-used VCS for software development. | |
− | Git is | + | Git is used to maintain most of the software used by the group, including [[PHASTA]], [[Chef]], [[VTKpytools|vtkpytools]], and more. Learning git will allow you to make changes to these codes and share them with the group, in addition to allowing you to test proof-of-concept codes without fear of accidentally deleting code. |
− | + | == Learning Git == | |
− | If you're completely new to <code>git</code> or version control in general, [https://learngitbranching.js.org/ Learn Git Branching] is a great interactive, visual training program show the basics. | + | If you're completely new to <code>git</code> or version control in general, [https://learngitbranching.js.org/ Learn Git Branching] is a great interactive, visual training program show the basics. Even if you're not completely new to git, it may help you to understand some concepts you didn't before. |
− | == Basic Git == | + | === Basic Git === |
Basic information to get started with Git can be found at http://rogerdudler.github.io/git-guide/. | Basic information to get started with Git can be found at http://rogerdudler.github.io/git-guide/. | ||
Line 66: | Line 65: | ||
: <code>git log --help</code> (more information) | : <code>git log --help</code> (more information) | ||
− | |||
== Git Prompt Statement (PS1) == | == Git Prompt Statement (PS1) == | ||
Line 73: | Line 71: | ||
# Edit your <code>~/.bashrc</code> to say <code>source ~/.git-prompt.sh</code> before the lines that set your <code>PS1</code> | # Edit your <code>~/.bashrc</code> to say <code>source ~/.git-prompt.sh</code> before the lines that set your <code>PS1</code> | ||
# Modify your <code>PS1</code> string to include <code>$(__git_ps1 "(%s)")</code> where you want the current branch to appear in your prompt | # Modify your <code>PS1</code> string to include <code>$(__git_ps1 "(%s)")</code> where you want the current branch to appear in your prompt | ||
+ | |||
+ | [[Category:Software Engineering]] |
Revision as of 08:16, 5 September 2020
Git is a distributed revision control system (VCS), designed to work well with highly non-linear workflows. It was initially conceived to support development of the Linux kernel, and has since become the most widely-used VCS for software development.
Git is used to maintain most of the software used by the group, including PHASTA, Chef, vtkpytools, and more. Learning git will allow you to make changes to these codes and share them with the group, in addition to allowing you to test proof-of-concept codes without fear of accidentally deleting code.
Learning Git
If you're completely new to git
or version control in general, Learn Git Branching is a great interactive, visual training program show the basics. Even if you're not completely new to git, it may help you to understand some concepts you didn't before.
Basic Git
Basic information to get started with Git can be found at http://rogerdudler.github.io/git-guide/.
- Git repository (repo)
- Is a directory that contains files of the current branch and a hidden
.git
directory - Contains an Index in
.git
that acts as a staging area for all your branches - Contains a HEAD in
.git
that points to the last commit you made - Your PHASTA repository should always be at
~/git-phasta/phasta
- Create a new repository
-
git init
- Checkout a repository
-
git clone /path/to/repo
-
git clone user@host:/path/to/repo
- Add files to be tracked in the git index
-
git add <filename1> <filename2> ...
-
git add *
-
git add -u
(all files updated since last commit)
- Commit changes to HEAD
-
git commit -m "my_username: my comments about this commit"
- Push changes to remote repo
-
git push origin master
(pushes themaster
branch to the original/main repo)
- Connect to a remote server
-
git remote add origin <server>
(connects<server>
to your main, ororigin
repository) -
git remote add myrepo <server>
(connects<server>
to a named branch calledmybranch
) - Note:
<server>
could beuser@host:/path/to/repo
- Create and delete branch
-
git checkout -b branch_name
(creates and checkout branch) -
git checkout master
(checkout master branch) -
git branch -d branch_name
(delete branch we just created)
- Push branch to a remote
-
git push origin branch
(pushes from your mainorigin
repo)
- Update and merge
-
git pull
(so all branches are up-to-date for the merge) -
git merge origin/master
(merges current branch withorigin
'smaster
branch) - If a merge has conflicts, you need to edit the conflict files provided by Git, and then mark them as merged with
git add
- Compare code in different branches
-
git diff <branch_a> <branch_b>
- View history of commits
-
git log
-
git log --author=foo
-
git log --pretty=oneline
(show each commit as one line) -
git log --graph --oneline --decorate --all
(ASCII tree of branches, commits, merges) -
git log --name-status
(show which files changed in each commit) -
git log --help
(more information)
Git Prompt Statement (PS1)
- Acquire
git-prompt.sh
from https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh, and save it somewhere like~/.git-prompt.sh
- Edit your
~/.bashrc
to saysource ~/.git-prompt.sh
before the lines that set yourPS1
- Modify your
PS1
string to include$(__git_ps1 "(%s)")
where you want the current branch to appear in your prompt