Git/notes
Jump to navigation
Jump to search
How To
To make bash git-aware, add this line to ~/.bashrc
(not sure if it matters where in the file):
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[01;32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
This causes bash to show the current branch as part of the command prompt. You will need to reload bash's config for it to take effect.
Questions
questions that have not yet been answered
- Given that the four possible conditions for a file are "untracked", "unmodified", "modified" and "staged" (according to this):
- Q: If a staged file becomes "unchanged" when it is "committed", does that mean that it is no longer "staged"? Or should we speak of those four conditions as applying to changes rather than files?
- Q: If the four conditions apply to changes (not files), then does it make sense to talk about "staging files"?
- Q: How do you get a list of all the files that have been staged, whether or not they are "modified"?
- Q: Is there any way to set things up so you don't have to keep entering username and password when pushing to a password-protected remote repository (such as GitHub)?
Answers
- Q: How do I store my username & password so I don't have to enter it each time I "git push origin"?
- A:
git config --global credential.helper 'cache --timeout=10000000'
- This doesn't store it permanently, but will "cache" it for --timeout seconds.
- A:
- When
git pull github
returns this:
You asked to pull from the remote 'github', but did not specify a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line.
- Q: How do I figure out what branch I want to use?
- A: See git branch.
- Q: How do I figure out what branch I want to use?
- When
git fetch github master
returns this:
From https://github.com/woozalia/w3tpl * branch master -> FETCH_HEAD
- Q: Why don't any new files appear in the local folder?
- A: Because "fetch" doesn't retrieve files; it just creates a local pointer to the remote branch. (See answer to next question for more details.)
- Q: What does this mean? (Did anything actually happen, and if so, what?)
- A: This just creates a sort of "pointer" to the remote branch we now need to merge; the pointer is stored in
.git/FETCH_HEAD
. To actually retrieve the files,git merge FETCH_HEAD
tells Git to actually retrieve the files and merge them into the local repository – the files will now appear in the local folder, with status unmodified (i.e. they have been committed to the local repository).
- A: This just creates a sort of "pointer" to the remote branch we now need to merge; the pointer is stored in
- Q: Why don't any new files appear in the local folder?