Git Cheat Sheet: Difference between revisions
(Created page with " * [https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server Setting-Up-the-Server]") |
|||
| (12 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
=Init new GIT Repo on the git server= | |||
'''Setup a repo folder on the server''' | |||
cd to the git repo location, log in as git and create a folder for the new git project repository | |||
<syntaxhighlight lang="bash"> | |||
cd /srv/git | |||
su git | |||
mkdir <project>.git | |||
</syntaxhighlight> | |||
'''Init the repo on the server''' | |||
cd into the <project>.git folder | |||
<syntaxhighlight lang="bash"> | |||
cd <project>.git | |||
git init --bare | |||
</syntaxhighlight> | |||
'''Setup the repo on your dev box''' | |||
cd to a place of your choice and clone your new project repo: | |||
<syntaxhighlight lang="bash"> | |||
cd <project repo location> | |||
git clone <user>@<git server>:/srv/git/<project>.git | |||
</syntaxhighlight> | |||
Checkout the desird branch: | |||
<syntaxhighlight lang="bash"> | |||
git checkout main | |||
</syntaxhighlight> | |||
=Local GIT Repos= | |||
* [https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server Setting-Up-the-Server] | * [https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server Setting-Up-the-Server] | ||
=Github= | |||
== Create pull requests == | |||
* https://opensource.com/article/19/7/create-pull-request-github | |||
==Signing commits using GPG== | |||
* https://gist.github.com/ankurk91/c4f0e23d76ef868b139f3c28bde057fc | |||
== How do I squash my last N commits together? == | |||
Reset the current branch to the commit just before the last 3: | |||
<syntaxhighlight lang="bash"> | |||
git reset --hard HEAD~3 | |||
</syntaxhighlight> | |||
HEAD@{1} is where the branch was just before the previous command. | |||
This command sets the state of the index to be as it would just | |||
after a merge from that commit: | |||
<syntaxhighlight lang="bash"> | |||
git merge --squash HEAD@{1} | |||
</syntaxhighlight> | |||
Commit those squashed changes. The commit message will be helpfully | |||
prepopulated with the commit messages of all the squashed commits: | |||
<syntaxhighlight lang="bash"> | |||
git commit | |||
</syntaxhighlight> | |||
Finnaly, push the changes upstream: | |||
<syntaxhighlight lang="bash"> | |||
git push | |||
</syntaxhighlight> | |||
or if you squashed remote commits | |||
<syntaxhighlight lang="bash"> | |||
git push origin HEAD --force | |||
git push <branch> HEAD --force | |||
</syntaxhighlight> | |||
==How to delete commits from remote== | |||
[https://hackernoon.com/how-to-delete-commits-from-remote-in-git source] | |||
If the commits you want to remove are placed at the top of your commit history, use the git reset --hard command with the HEAD object and the number of commits you want to remove. | |||
<syntaxhighlight lang="bash"> | |||
git reset --hard HEAD~3 | |||
</syntaxhighlight> | |||
To delete commits from remote, you will need to push your local changes to the remote using the git push command. | |||
<syntaxhighlight lang="bash"> | |||
git push origin HEAD --force | |||
</syntaxhighlight> | |||
==How do I update a GitHub forked repository?== | |||
* [https://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository Source] | |||
Add the remote, call it "upstream": | |||
<syntaxhighlight lang="bash"> | |||
git remote add upstream https://github.com/whoever/whatever.git | |||
</syntaxhighlight> | |||
Fetch all the branches of that remote into remote-tracking branches | |||
<syntaxhighlight lang="bash"> | |||
git fetch upstream | |||
</syntaxhighlight> | |||
Make sure that you're on your master branch: | |||
<syntaxhighlight lang="bash"> | |||
git checkout master | |||
</syntaxhighlight> | |||
Rewrite your master branch so that any commits of yours that | |||
aren't already in upstream/master are replayed on top of that | |||
other branch: | |||
<syntaxhighlight lang="bash"> | |||
git rebase upstream/master | |||
</syntaxhighlight> | |||
If you don't want to rewrite the history of your master branch, (for example because other people may have cloned it) then you should replace the last command with git merge upstream/master. However, for making further pull requests that are as clean as possible, it's probably better to rebase. | |||
If you've rebased your branch onto upstream/master you may need to force the push in order to push it to your own forked repository on GitHub. You'd do that with: | |||
<syntaxhighlight lang="bash"> | |||
git push -f origin master | |||
</syntaxhighlight> | |||
==tweaks== | |||
===how to change commit message=== | |||
GitHub's instructions for doing this: | |||
# On the command line, navigate to the repository that contains the commit you want to amend. | |||
# Type <syntaxhighlight lang="bash" inline>git commit --amend</syntaxhighlight> and press Enter. | |||
# In your text editor, edit the commit message and save the commit. | |||
# Use the <syntaxhighlight lang="bash" inline>git push --force example-branch</syntaxhighlight> command to force push over the old commit. | |||
Latest revision as of 08:31, 3 November 2023
Init new GIT Repo on the git server
Setup a repo folder on the server
cd to the git repo location, log in as git and create a folder for the new git project repository
cd /srv/git
su git
mkdir <project>.git
Init the repo on the server
cd into the <project>.git folder
cd <project>.git
git init --bare
Setup the repo on your dev box
cd to a place of your choice and clone your new project repo:
cd <project repo location>
git clone <user>@<git server>:/srv/git/<project>.git
Checkout the desird branch:
git checkout main
Local GIT Repos
Github
Create pull requests
Signing commits using GPG
How do I squash my last N commits together?
Reset the current branch to the commit just before the last 3:
git reset --hard HEAD~3
HEAD@{1} is where the branch was just before the previous command. This command sets the state of the index to be as it would just after a merge from that commit:
git merge --squash HEAD@{1}
Commit those squashed changes. The commit message will be helpfully prepopulated with the commit messages of all the squashed commits:
git commit
Finnaly, push the changes upstream:
git push
or if you squashed remote commits
git push origin HEAD --force
git push <branch> HEAD --force
How to delete commits from remote
If the commits you want to remove are placed at the top of your commit history, use the git reset --hard command with the HEAD object and the number of commits you want to remove.
git reset --hard HEAD~3
To delete commits from remote, you will need to push your local changes to the remote using the git push command.
git push origin HEAD --force
How do I update a GitHub forked repository?
Add the remote, call it "upstream":
git remote add upstream https://github.com/whoever/whatever.git
Fetch all the branches of that remote into remote-tracking branches
git fetch upstream
Make sure that you're on your master branch:
git checkout master
Rewrite your master branch so that any commits of yours that aren't already in upstream/master are replayed on top of that other branch:
git rebase upstream/master
If you don't want to rewrite the history of your master branch, (for example because other people may have cloned it) then you should replace the last command with git merge upstream/master. However, for making further pull requests that are as clean as possible, it's probably better to rebase.
If you've rebased your branch onto upstream/master you may need to force the push in order to push it to your own forked repository on GitHub. You'd do that with:
git push -f origin master
tweaks
how to change commit message
GitHub's instructions for doing this:
- On the command line, navigate to the repository that contains the commit you want to amend.
- Type
git commit --amendand press Enter. - In your text editor, edit the commit message and save the commit.
- Use the
git push --force example-branchcommand to force push over the old commit.