reset changes of specific file | git checkout -- filename |
---|---|
undo all changes since last commit | git reset --hard |
merge multiple commits (tutorial) | git rebase -i |
show remote repositories | git remote |
Sometimes you remember that you have to add a file to the commit you just made.
If you want to add a file to your commit after you already committed the changes:
git add <files> git commit --amend
This lets you edit the commit description after you committed the changes.
If you don't want to change the commit message: git commit --amend --no-edit
git config user.name "John Doe" git config user.email "john@doe.org"
# I want to make sure my master is in sync with the upstream master git checkout -b merge-patches master # first pull request git pull --no-ff https://github.com/user1/repo.git master # second pull request git pull --no-ff https://github.com/user2/repo.git branch1
git remote add upstream path/to/repository.git # get all refs and objects so your git knows what it can do git fetch --all
You can merge foreign branches:
git merge upstream/master
[remote "origin"] # add this line fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
then execute:
# get refs git fetch --all # merge pull request with ID 999 git checkout pr/999
(Source)
# change to branch to be added git checkout master # push it to the repo git push -u origin master
Error: [remote rejected] master → master (branch is currently checked out)
# push to new branch on remote git push origin master:refs/heads/upload # on remote machine git merge upload git branch -d upload
git config --local receive.denyCurrentBranch updateInstead
(source)
If you have two repositories which don't have a common origin, you can still merge them. If you try to do so via simple git pull
, you may get the error fatal: refusing to merge unrelated histories
. This is because git can't find a commit to base its merge on.
git remote add some-old-repo https://github.com/user/some-old-repo.git git pull --allow-unrelated-histories some-old-repo master git status -s
(source)
echo "*" >> ~/.gitignore git add -f .gitignore
dotfile hinzufügen | git add -f .dotfile |
---|
echo "*" >> ~/.gitignore
initialise | git init |
---|---|
add remote | git remote add hostname:~ |
fetch files | git fetch –all |
replace existing | git reset –hard origin/master |
(Source)
get submodules when switched to branch with submodules | git submodule update |
---|
Do a "git diff" on any file. What do you see?
git config core.filemode false
These are the line endings. Automatically adjust it to CRLF line endings with:
git config --global core.autocrlf true
Your permissions may be wrong. Check if any of the remote files in `.git` are not owned by the user you're connecting with. (source)
If you just want to clone a public repo with history from GitHub, don't use the git
username like with git clone git@github.com:radicle-dev/radicle-upstream.git
, but rather the git://
protocol:
git clone git://github.com/radicle-dev/radicle-upstream.git
Store passwords or other information you don't want to accidentally leak somewhere else than in your git repository.
Use a secrets storage for this. You can use git-secret, blackbox or Hashicorp Vault for this.
Some random articles about how to use Git in a regular or innovative way.
Useful programs to make life with Git easier or adding functionality to Git.