Working with git
Contents
- 1 Interacting with a remote repository
- 1.1 Check out a repository:
- 1.2 Find out what changes were made to a remote repository:
- 1.3 Update from a repository, if there are no local uncommitted changes:
- 1.4 Update from a repository, if there are local changes:
- 1.5 Push to a repository:
- 1.6 Create a branch containing the current snapshop of the local repository, including all uncommitted changes, and switch to this branch
- 2 Committing
- 3 Making local changes
- 3.1 Revert an uncommitted change to a file:
- 3.2 Add a file to the repository:
- 3.3 Remove a file from the repository:
- 3.4 Undo adding a file to the repository:
- 3.5 Undo removing a file from the repository, recreating the file manually:
- 3.6 Undo removing a file from the repository, resurrecting the file in the repository:
Interacting with a remote repository
Check out a repository:
git clone <remote-repo-url> <local-repo-name> git clone carpetgit@carpetcode.org:McLachlan McLachlan
Find out what changes were made to a remote repository:
???
Update from a repository, if there are no local uncommitted changes:
git pull
How to merge?
Update from a repository, if there are local changes:
Save all local changes:
git stash
Then update as described above. Re-apply all local changes:
git stash pop
If there are no conflicts, you are done. If there are conflicts, handle them, then:
git stash drop
since "stash pop" doesn't pop the stash if there are conflicts. "git stash list" shows all stashes. It is not possible to look at the content of a stash (???).
Push to a repository:
Ensure all remote changes have been pulled
git push
Create a branch containing the current snapshop of the local repository, including all uncommitted changes, and switch to this branch
should this maybe be split into two actions: creating a remote branch, and switching to this branch locally?
Committing
Commit a change:
git add <list-of-files-to-commit> git commit
Undo a commit that hasn't propagated yet, keeping all local changes:
??? (probably some variation of "git reset" and "git checkout")
Revert a commit that may have propagated already, keeping all the changes as local modifications:
???
Revert a commit, dropping all changes that it made:
??? (some variation of "git reset")
Making local changes
Revert an uncommitted change to a file:
git checkout -- <file>
Add a file to the repository:
Create file locally
git add <list-of-files-to-add>
Then commit.
Remove a file from the repository:
Delete file locally
git rm <list-of-files-that-were-removed>
(Is there a way to let git determine automatically which files were removed?) Then commit.
Undo adding a file to the repository:
Delete file locally
git reset HEAD <file>
Undo removing a file from the repository, recreating the file manually:
Create file locally
git reset HEAD <file>
Undo removing a file from the repository, resurrecting the file in the repository:
??? (probably a combination of "checkout" and "reset")