In my coding adventures, I often find the need to duplicate a GitHub repository privately. The script provided below gracefully accomplishes this task by following six essential steps:

  • Clone the repo to your local disk.
  • Initiate the repo.
  • Create your own repo with a new name (prepend with ‘better-‘ for clarity).
  • Set the origin URL to your new repo (replace {liveinaus} with your username).
  • Push the changes to the new repo.
  • Done! Enjoy your private repo.

# Get the repository name from the Git URL
get_repository_name() {

  # Remove the "git@" prefix and the ".git" suffix from the URL

  # Extract the last component of the URL (repository name)
  echo "$repository_name"

get_repository_clone_target() {
	local cloneTarget="$1"
	# Remove everything before

	# Append .git if not exists
	if [[ $cloneTarget != *.git ]]; then

	# Prepend [email protected]: if not exists
	if [[ $cloneTarget != [email protected]:* ]]; then
		# Append "[email protected]:" to the URL
		cloneTarget="[email protected]:$cloneTarget"

	echo "$cloneTarget"

github-copy-repo-action() {
	local cloneTarget=$(get_repository_clone_target "$1")
	local newRepoName="${2:-better-$(get_repository_name "$cloneTarget")}"
	local username="${3:-liveinaus}"

	# echo "$cloneTarget"
	# echo "$newRepoName"
	# echo "$username"

	git clone $cloneTarget $newRepoName
	cd $newRepoName
	git init
	gh repo create $newRepoName --private
	git remote set-url origin [email protected]:$username/$newRepoName.git
	git push -u
	echo $'\n\033[1;32m'"✔✔✔  "$'\033[0mFinished copying github repo to $newRepoName\n'

github-copy-repo-action "$@"

At the heart of this coding journey lies countless hours of dedication and passion. Every line of code, every debugging session, and every breakthrough is a testament to the love I have for this craft. As you explore the ideas and concepts shared in this blog, I kindly ask you to honour the work involved by quoting the original source. Together, let’s foster a culture of respect, collaboration, and acknowledgement within the coding community. Happy coding!