Difference between revisions of "Git 101"
Jump to navigation
Jump to search
Line 87: | Line 87: | ||
== Git status explained == | |||
$ git status | $ git status | ||
Line 110: | Line 110: | ||
temp/ | temp/ | ||
notes.txt | notes.txt | ||
* '''On Branch''': You're currently on the main branch. | |||
* '''Branch Status''': Your main branch is up to date with 'origin/main'. | |||
* '''Changes to be Committed''': | |||
** <code>file1</code> has been modified and <code>file2</code> is a new file, both staged for the next commit. | |||
** To unstage, use <code>git reset HEAD <file></code>. | |||
* '''Changes Not Staged for Commit''': | |||
** <code>file3</code> is modified but not staged. | |||
** To stage, use <code>git add <file></code>. | |||
** To discard changes, use <code>git checkout -- <file></code>. | |||
* '''Untracked Files''': | |||
** <code>temp/</code> and <code>notes.txt</code> are not tracked by Git. | |||
** To track, use <code>git add <file></code>. | |||
<br> | |||
<br> | |||
$ git status | |||
On branch feature | |||
Your branch is ahead of 'origin/main' by 3 commits. | |||
(use "git push" to publish your local commits) | |||
nothing to commit, working tree clean | |||
* '''On Branch''': You're currently on the feature branch. | |||
* '''Branch Status''': | |||
** Your feature branch is ahead of 'origin/main' by 3 commits. This means you have made commits locally that are not yet in the 'main' branch on the remote repository. | |||
** To synchronize these changes with the remote repository, use <code>git push</code>. | |||
* '''Working Tree Status''': | |||
** Your working directory is clean, meaning there are no unstaged changes or untracked files. | |||
== Basic Workflow Example == | == Basic Workflow Example == |
Revision as of 17:38, 21 November 2023
Git Workflow Components
- Working Directory: Your local workspace where you edit files. Changes here are not tracked until moved to the staging area.
- Staging Area: A prep zone for changes to be committed. You can selectively choose which changes to include in a commit.
- HEAD: The latest commit in the current branch, acting as a pointer to your most recent work.
- Local Repository: Your computer's storage for all your commits, branches, and the entire change history. It operates independently of network access.
- Remote Repository: A server-hosted repository (e.g., GitLab, GitHub) for code sharing and backup. It syncs with the local repository through
push
andpull
commands.
Git File Status
Tracked vs Untracked Files
- Tracked files are those that Git knows about and has in its version history.
- Untracked files are new or unrecorded files in your working directory that Git isn't keeping track of yet; e.g.
temp/
,auto_settings.sav*
,auto_positions.sav*
, etc.
Staged vs Unstaged
- Staged files are those that have been marked for inclusion in the next commit, showing Git exactly what changes you want to commit.
- Unstaged files are the modified files in your working directory that have not been marked for the next commit yet.
Basic Commands Cheat Sheet
Syncing with Remote Repository
- To download updates from the remote repository without merging them:
$ git fetch
- To fetch changes from the remote repository and merge them into your current branch:
$ git pull
- To push local commits to the remote repository:
$ git push # pushes your commits to the remote repository
- To view the remote repository information:
$ git remote -v # lists the remote repositories and their URLs
Viewing Changes and Status
- To see the status of the working directory and staging area:
$ git status
- To list the commit history:
$ git log
- To view differences since the last commit:
$ git diff <file>
- To see tracked files:
$ git ls-files
Committing Changes
- To commit a single tracked file (file to staging area and commit changes in two steps):
$ git add <file> $ git commit -m 'commit message'
- To commit all tracked files at once, use option
-a
(add to staging area and commit in a single step):
$ git commit -am 'commit message'
Ignoring Files
.gitignore
lists files and folders to be ignored. To update the list, just use any file editor.
More details
Git Fetch vs. Git Pull
git fetch
is a command that downloads changes from a remote repository, but doesn't integrate any of these changes into your working files. It's essentially a safe way to review changes before integrating them into your local repository.
git pull
is a command that not only downloads changes from the remote repository but also immediately attempts to merge them into the branch you are currently working on. It is a combination ofgit fetch
followed bygit merge
.
Git status explained
$ git status On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: file1 new file: file2 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: file3 Untracked files: (use "git add <file>..." to include in what will be committed) temp/ notes.txt
- On Branch: You're currently on the main branch.
- Branch Status: Your main branch is up to date with 'origin/main'.
- Changes to be Committed:
file1
has been modified andfile2
is a new file, both staged for the next commit.- To unstage, use
git reset HEAD <file>
.
- Changes Not Staged for Commit:
file3
is modified but not staged.- To stage, use
git add <file>
. - To discard changes, use
git checkout -- <file>
.
- Untracked Files:
temp/
andnotes.txt
are not tracked by Git.- To track, use
git add <file>
.
$ git status On branch feature Your branch is ahead of 'origin/main' by 3 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean
- On Branch: You're currently on the feature branch.
- Branch Status:
- Your feature branch is ahead of 'origin/main' by 3 commits. This means you have made commits locally that are not yet in the 'main' branch on the remote repository.
- To synchronize these changes with the remote repository, use
git push
.
- Working Tree Status:
- Your working directory is clean, meaning there are no unstaged changes or untracked files.
Basic Workflow Example
To add new files:
$ git add <newfile>
To modify files:
$ git add <modifiedfile>
To commit changes:
$ git commit -m 'Description of changes'
To push to the remote repository:
$ git push origin <branch>
Ignoring Files
.gitignore
lists files and folders to be ignored. To update the list, just use any file editor.