Bash-git-commands: Difference between revisions
Jump to navigation
Jump to search
(Created page with "Git commands that are useful for bash scripts. Retrieve the hash for the current commit inside whatever branch we are in This also works for submodules as long as you are wit...") |
mNo edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Git commands that are useful for bash scripts. | Git commands that are useful for bash scripts. | ||
Retrieve the hash for the current commit inside whatever branch we are in | * Retrieve the hash for the current commit inside whatever branch we are in | ||
This also works for submodules as long as you are within the submodule directory in question | * This also works for submodules as long as you are within the submodule directory in question | ||
<pre> | <pre> | ||
git rev-parse HEAD | git rev-parse HEAD | ||
<pre> | </pre> | ||
Change the git remote from http(s) to git@ can be done this way: | * Change the git remote from http(s) to git@ can be done this way: | ||
<pre> | <pre> | ||
sed -i 's|https://URL/|git@URL:|g' ./.git/config | sed -i 's|https://URL/|git@URL:|g' ./.git/config | ||
</pre> | </pre> | ||
If you want to update the submodules | * If you want to update the submodules | ||
<pre> | <pre> | ||
sed -i 's|https://URL/|git@URL:|g' ./.gitmodules | sed -i 's|https://URL/|git@URL:|g' ./.gitmodules | ||
git submodule sync --recursive | |||
sed -i 's|https://URL/|git@URL:|g' ./.git/modules/PATH/config | sed -i 's|https://URL/|git@URL:|g' ./.git/modules/PATH/config | ||
</pre> | </pre> | ||
If you want to create a PR/MR in gitlab via the CLI | |||
* you must have write privs | |||
* Make very sure you are in a NEW branch so you do not screw things up. | |||
** Using a date or epoch timestamp is reasonable | |||
<pre> | |||
git branch foo | |||
git checkout foo | |||
--- Make your changes --- | |||
git add -A | |||
git commit -m "Generic commit message" | |||
git push -o merge_request.create -o merge_request.title="A spiffy title" -o merge_request.description="A short description" | |||
</pre> | |||
Find the dates associated with your git branches | |||
<pre> | |||
for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r | |||
</pre> | |||
Retrieve the current commit hash (to use in scripts) | |||
<pre> | |||
git rev-parse --verify HEAD | awk '{print $1}' | |||
</pre> | |||
Reset a single file: | |||
<pre> | |||
git checkout HEAD -- my-file.txt | |||
</pre> | |||
[[Category:bash]] |
Latest revision as of 10:43, 17 November 2021
Git commands that are useful for bash scripts.
- Retrieve the hash for the current commit inside whatever branch we are in
- This also works for submodules as long as you are within the submodule directory in question
git rev-parse HEAD
- Change the git remote from http(s) to git@ can be done this way:
sed -i 's|https://URL/|git@URL:|g' ./.git/config
- If you want to update the submodules
sed -i 's|https://URL/|git@URL:|g' ./.gitmodules git submodule sync --recursive sed -i 's|https://URL/|git@URL:|g' ./.git/modules/PATH/config
If you want to create a PR/MR in gitlab via the CLI
- you must have write privs
- Make very sure you are in a NEW branch so you do not screw things up.
- Using a date or epoch timestamp is reasonable
git branch foo git checkout foo --- Make your changes --- git add -A git commit -m "Generic commit message" git push -o merge_request.create -o merge_request.title="A spiffy title" -o merge_request.description="A short description"
Find the dates associated with your git branches
for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
Retrieve the current commit hash (to use in scripts)
git rev-parse --verify HEAD | awk '{print $1}'
Reset a single file:
git checkout HEAD -- my-file.txt