Table of Contents

Commit to pull request of foreign user

git checkout -b asmorodskyi-unittest master
git pull https://github.com/asmorodskyi/qatrfm-lib.git unittest
git push git@github.com:asmorodskyi/qatrfm-lib.git asmorodskyi-unittest:unittest

Exclude file from last commit

git reset --soft HEAD~1

Then unstage unwanted files

git reset HEAD path/to/unwanted_file

Now commit again, you can even re-use the same commit message:

git commit -c ORIG_HEAD  

Checkout PR from github on a new branch

#!/bin/bash +x
 
pr_url="${1:?"Need 'pr_url' as parameter pointing to a github pull request or 'repo_name' (sending repo) and 'pr' variables, e.g. either 'https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/1234' 'me/os-autoinst-distri-opensuse' and '1234'"}"
target_repo_part=${pr_url%%/pull*}
pr="${pr_url##*/}"
pr_url=${target_repo_part/github.com/api.github.com/repos}/pulls/$pr
pr_content=$(curl "${AUTHENTICATED_REQUEST}" -s "$pr_url")
label=$(echo "$pr_content" | jq -r '.head.label') || throw_json_error "$pr_url" "$pr_content"
user=$(echo "$pr_content" | jq -r '.user.login') || throw_json_error "$pr_url" "$pr_content"
repo_name="${repo_name:-"${label%:*}/${target_repo_part##*/}"}"
branch="${branch:-"${label##*:}"}"
repo="${repo:-"https://github.com/${repo_name}.git"}"
 
echo "USER:   $user"
echo "REPO:   $repo"
echo "BRANCH: $branch"
echo "PR:     #$pr"
 
 
echo git checkout -b "PR$pr-$user-$branch" master
git checkout -b "PR$pr-$user-$branch" master
echo git pull "$repo" "$branch"
git pull "$repo" "$branch"