Git For Beginners
From UABgrid Documentation
m |
m (→Commit a file) |
||
Line 64: | Line 64: | ||
== Commit a file == | == Commit a file == | ||
− | To commit a file you first need to add the file where you have made changes, i.e. stage the file: | + | * To commit a file you first need to add the file where you have made changes, i.e. stage the file: |
<pre> | <pre> | ||
git add CHANGED_FILE | git add CHANGED_FILE |
Revision as of 15:50, 19 June 2018
Git is a version control system for tracking changes in computer files and coordinating work on those files among multiple people.
Contents |
Configuration
To configure user information for all local repositories use the following commands:
- Set the name you want attached to your commit transactions.
git config --global user.name "[name]"
- Set the email you want atached to your commit transactions
git config --global user.email "[email address]"
Initializing a git repository
- To initialize a new git repository, run:
[ravi89@login001 Tutorial_June_2018]$ git init test Initialized empty Git repository in /data/user/ravi89/HPC_Training/Tutorial_June_2018/test/.git/ [ravi89@login001 Tutorial_June_2018]$
- To make an already existing directory, a git repo, run:
cd EXISTING_DIRECTORY git init
Review changes
Once you have made changes to the files in a git repository, you can review your edits using following commands.
- To list all new or modified files to be commited:
[ravi89@login001 Tutorial_June_2018]$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # test nothing added to commit but untracked files present (use "git add" to track) [ravi89@login001 Tutorial_June_2018]$
- To show file differences that have not yet been staged for a commit:
[ravi89@login001 Tutorial_June_2018]$ git diff diff --git a/test b/test index 19e2dd9..d04e379 100644 --- a/test +++ b/test @@ -1 +1,3 @@ Show git status + +Demo git diff [ravi89@login001 Tutorial_June_2018]$ git status
- To see the file differences for file that have been staged, use: git diff --staged
Commit a file
- To commit a file you first need to add the file where you have made changes, i.e. stage the file:
git add CHANGED_FILE
This snapshots/stages the file in preparation for versioning.
- Next commit these changes to record file snapshots permanently in version history
git commit -m "YOUR_COMMIT_MESSAGE"
Git History
Browse and inspect the evolution of project files
- To list version history for the current branch
[ravi89@c0027 Tutorial_June_2018]$ git log commit 69314c321f5e56eb3f39d7c6588db3994493cbd9 Author: ravi89 <ravi89@uab.edu> Date: Mon Jun 18 16:48:18 2018 -0500 Testing branch and graph commit 5d710775910a9fbea8d06a50ced9f5d59e893589 Author: ravi89 <ravi89@uab.edu> Date: Mon Jun 18 16:32:42 2018 -0500 Second commit commit 39313b92a2cb796dae1d53bc44d0ab4b07a9a13f Author: ravi89 <ravi89@uab.edu> Date: Mon Jun 18 16:29:32 2018 -0500 First commit [ravi89@c0027 Tutorial_June_2018]$
- To list version history for a particular file in your project:
[ravi89@c0027 Tutorial_June_2018]$ git log --follow test1 commit 4b679447ceeae3c5c95575eab301c20b2d893b06 Author: ravi89 <ravi89@uab.edu> Date: Tue Jun 19 10:25:48 2018 -0500 Adding a new file [ravi89@c0027 Tutorial_June_2018]$
- To output metadata and content changes of the specified commit:
[ravi89@c0027 Tutorial_June_2018]$ git show 5d71077 commit 5d710775910a9fbea8d06a50ced9f5d59e893589 Author: ravi89 <ravi89@uab.edu> Date: Mon Jun 18 16:32:42 2018 -0500 Second commit diff --git a/test b/test index 19e2dd9..d04e379 100644 --- a/test +++ b/test @@ -1 +1,3 @@ Show git status + +Demo git diff [ravi89@c0027 Tutorial_June_2018]$
NOTE: In the above example, we have used first 7 characters of the commit hash, instead of the entire commit hash. Minimum number of characters required for it to be useful is 4, but it is recommended to use 6-8 characters for higher likelihood of uniqueness.
Git branches
- To list all local branches in the current repository
[ravi89@c0021 Tutorial_June_2018]$ git branch * master [ravi89@c0021 Tutorial_June_2018]$
- Create a new branch
[ravi89@c0021 Tutorial_June_2018]$ git branch new_branch [ravi89@c0021 Tutorial_June_2018]$ git branch * master new_branch [ravi89@c0021 Tutorial_June_2018]$
- Switch to the specified branch and updates the working directory
[ravi89@c0021 Tutorial_June_2018]$ git checkout new_branch Switched to branch 'new_branch' [ravi89@c0021 Tutorial_June_2018]$ git branch master * new_branch [ravi89@c0021 Tutorial_June_2018]$
- Combine the specified branch’s history into the current branch
git merge [branch]
- Example
[ravi89@c0021 Tutorial_June_2018]$ git status # On branch new_branch # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: test # no changes added to commit (use "git add" and/or "git commit -a") [ravi89@c0021 Tutorial_June_2018]$ git add test [ravi89@c0021 Tutorial_June_2018]$ git commit -m "Commit to new_branch" [new_branch e6a1591] Commit to new_branch 1 file changed, 1 insertion(+), 1 deletion(-) [ravi89@c0021 Tutorial_June_2018]$ git checkout master Switched to branch 'master' [ravi89@c0021 Tutorial_June_2018]$ git merge new_branch Updating 65d2065..e6a1591 Fast-forward test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) [ravi89@c0021 Tutorial_June_2018]$
- Delete the specified branch.
git branch -d [branch-name]
[ravi89@c0021 Tutorial_June_2018]$ git branch * master new_branch [ravi89@c0021 Tutorial_June_2018]$ git branch -d new_branch Deleted branch new_branch (was e6a1591). [ravi89@c0021 Tutorial_June_2018]$ git branch * master [ravi89@c0021 Tutorial_June_2018]$
Git Cheat Sheet
A lot of the content on this page has been taken from this cheatsheet