Git Cheat Sheet: Difference between revisions

From chriesibaum wiki
Jump to navigation Jump to search
(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

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.

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:

  1. On the command line, navigate to the repository that contains the commit you want to amend.
  2. Type git commit --amend and press Enter.
  3. In your text editor, edit the commit message and save the commit.
  4. Use the git push --force example-branch command to force push over the old commit.