Bash-git-commands: Difference between revisions

From I Will Fear No Evil
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 11: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