Gemini

Gems

Recent

Energy Talk

Pinned chat

Samsung Firmware MD5 Files Explained

Pinned chat

Delete Stale Git Branches

The Hustle for 100k and Lamborghinis

Commenter’s Transactional Relationship Views

Bootswatch Pulse Color Mockups

“private jet lifestyle, man wearing business luxury attire, inside private jet cabin, seated in leather chair working on laptop, successful focused expression, cabin ambient lighting, professional photography, high quality, sharp focus, detailed”.

Boyfriend’s Status Affects Girl’s Social Standing

Analyzing a Misogynistic Comment

One Eye Symbolism Conspiracy Explained

Perceived Intimidation vs. Attractiveness

Bio Analysis: Wealth, Desire, and Control

The Alpha Wingman’s Levels of ‘D’

Rosicrucian Visualization: Process and Benefits

Analyzing a Man’s Online Persona

Conversation with Gemini

delete git branches not on upstream

You can delete local Git branches that no longer exist on the remote upstream repository (like origin) using a single command:

Bash

git fetch --prune

Alternatively, you can use the shorthand version:

Bash

git fetch -p

Explanation

The git fetch command is used to download commits, files, and refs from a remote repository into your local repository.

  • The --prune (or -p) option tells Git to remove any remote-tracking branches locally that no longer exist on the remote repository.

What it does:

  1. It connects to the remote repository (usually origin).
  2. It downloads all the new data.
  3. It then deletes all the remote-tracking branches (the references under remotes/origin/) that the remote repository no longer has.

Important Note: This command only deletes the remote-tracking references (e.g., origin/feature-branch); it does not delete your local branches (e.g., feature-branch) that were tracking them.


Deleting Local Branches That Are Gone Upstream

To completely remove the local branch and its remote-tracking reference in one step, you can combine a few commands, though this is often done manually for safety.

1. Identify Stale Local Branches

First, run git fetch --prune as described above to clean up the remote-tracking branches.

Then, you can list your local branches that have no upstream branch (i.e., the upstream branch was deleted):

Bash

git branch -vv | grep ': gone]'
  • git branch -vv: Shows local branches and their tracking information.
  • grep ': gone]': Filters the output to show only branches whose tracking branch is gone.

2. Batch Delete Identified Branches

Once you’ve reviewed the list and confirmed you want to delete them, you can use a command to delete all of the identified local branches. Use this command with caution! ⚠️

Bash

git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d
  • git branch -vv | grep ': gone]': Finds the branches whose remote is gone.
  • awk '{print $1}': Extracts only the branch name (the first word).
  • xargs git branch -d: Passes the list of branch names to git branch -d for deletion (the -d is a “safe” delete that prevents deletion if the branch has unmerged changes). Use -D for a force delete.

 pulse

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git checkout 2.0-UAT

M       app/brand/seeding/knowledge.js

M       app/brand/seeding/transcripts.js

M       app/content/configure/blueprints.js

M       app/content/configure/rules.js

Switched to branch ‘2.0-UAT’

Your branch is up to date with ‘origin/2.0-UAT’.

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git pull

warning: redirecting to https://code.valorantdigital.com/AriaOS/apis.ariaos.online/

Already up to date.

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch

* 2.0-UAT

 2.0-UAT-corrections

 2.0-UAT-rules-restore

 2.0-UAT-voice-dailin

 2.0-brand-knowledge-delete-refresh

 2.0-correct-text-box-color

 2.0-fix-login-pag

 2.0-fix-login-page

 2.0-recolor-action-buttons

 2.0-redraw-on-delete

 2.0-update-wordpress-alert

 newnew

 pulse

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git fetch –prune

warning: redirecting to https://code.valorantdigital.com/AriaOS/apis.ariaos.online/

From https://code.valorantdigital.com/AriaOS/concept.ariaos.online

– [deleted]         (none)     -> origin/2.0-UAT-corrections

– [deleted]         (none)     -> origin/2.0-UAT-rules-restore

– [deleted]         (none)     -> origin/2.0-UAT-voice-dailin

– [deleted]         (none)     -> origin/2.0-brand-knowledge-delete-refresh

– [deleted]         (none)     -> origin/2.0-correct-text-box-color

– [deleted]         (none)     -> origin/2.0-fix-login-pag

– [deleted]         (none)     -> origin/2.0-redraw-on-delete

– [deleted]         (none)     -> origin/2.0-update-wordpress-alert

– [deleted]         (none)     -> origin/newnew

– [deleted]         (none)     -> origin/pulse

  (refs/remotes/origin/HEAD has become dangling)

– [deleted]         (none)     -> origin/pulse-upgrade-round-two

– [deleted]         (none)     -> origin/pulsePREVIOUS

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch

* 2.0-UAT

 2.0-UAT-corrections

 2.0-UAT-rules-restore

 2.0-UAT-voice-dailin

 2.0-brand-knowledge-delete-refresh

 2.0-correct-text-box-color

 2.0-fix-login-pag

 2.0-fix-login-page

 2.0-recolor-action-buttons

 2.0-redraw-on-delete

 2.0-update-wordpress-alert

 newnew

 pulse

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ 

The git fetch --prune command successfully deleted the remote-tracking branches (the origin/ references) that no longer exist on the upstream server.

However, as you can see from your final git branch output, the command did not delete the corresponding local branches (e.g., 2.0-UAT-corrections).

To delete those local branches whose upstream counterpart is now gone, you can use the following command:

Bash

git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d

Step-by-Step Explanation

  1. Run the git fetch --prune command:
    • You already did this: git fetch --prune
    • The output - [deleted] (none) -> origin/2.0-UAT-corrections confirms that Git deleted the remote-tracking reference origin/2.0-UAT-corrections because it no longer existed on the server.
  2. Identify Local Branches that are “Gone”:
    • The command git branch -vv shows your local branches and their tracking status. The pruning step marks the local branches that were tracking a deleted remote branch with the status [origin/branch-name: gone].
    • Use this to find them: git branch -vv | grep ': gone]'
  3. Delete the Identified Local Branches:
    • The complete command: git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d
    • git branch -vv | grep ': gone]': Finds the lines corresponding to local branches whose remote is deleted.
    • awk '{print $1}': Extracts only the first word from those lines, which is the local branch name.
    • xargs git branch -d: Takes the list of branch names and runs git branch -d <branch-name> for each one.
      • The -d flag performs a safe delete, meaning it will prevent deletion if the branch has unmerged changes.
      • If you are absolutely sure you want to delete them regardless of unmerged changes, use -D instead of -d.

 2.0-redraw-on-delete

 2.0-update-wordpress-alert

 newnew

 pulse

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch -vv | grep ‘: gone]’ | awk ‘{print $1}’ | xargs git branch -d

Deleted branch 2.0-UAT-corrections (was e8f5bf6).

Deleted branch 2.0-UAT-rules-restore (was 755cb8b).

Deleted branch 2.0-UAT-voice-dailin (was 77e98a9).

Deleted branch 2.0-brand-knowledge-delete-refresh (was c3c2535).

Deleted branch 2.0-correct-text-box-color (was 878c9c0).

Deleted branch 2.0-fix-login-pag (was de3f265).

Deleted branch 2.0-redraw-on-delete (was 1fe4043).

Deleted branch 2.0-update-wordpress-alert (was 7bfa892).

Deleted branch newnew (was 755cb8b).

Deleted branch pulse (was 46f7e48).

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git brnch

git: ‘brnch’ is not a git command. See ‘git –help’.

The most similar command is

       branch

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch

* 2.0-UAT

 2.0-fix-login-page

 2.0-recolor-action-buttons

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch -vv | grep ‘: gone]’ | awk ‘{print $1}’ | xargs git branch -d

fatal: branch name required

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ 

You successfully deleted all the local branches whose corresponding remote-tracking branches were previously pruned (marked as ‘gone’).

The final list of branches in your repository is:

  • * 2.0-UAT
  • 2.0-fix-login-page
  • 2.0-recolor-action-buttons

The reason your final cleanup command failed is because there are no more local branches whose upstream is gone.

Here’s the breakdown:

1. Successful Deletion

The command git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d executed successfully, deleting ten local branches:

Deleted branch 2.0-UAT-corrections (was e8f5bf6).
...
Deleted branch pulse (was 46f7e48).

2. Typo

You had a typo, running git brnch instead of git branch:

git: 'brnch' is not a git command. See 'git --help'.

3. Final Branch List

Your repository is now clean, containing only three branches:

* 2.0-UAT
 2.0-fix-login-page
 2.0-recolor-action-buttons

4. Final Command Failure

The last command failed because the branches it was looking for no longer exist:

valorantdigital@countach:~/Desktop/AriaOS/apis.ariaos.online$ git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d
fatal: branch name required
  • git branch -vv | grep ': gone]' returned no output, meaning no more local branches are marked as having a deleted upstream.
  • The xargs command then received no input, so it tried to execute git branch -d with no arguments, resulting in the error fatal: branch name required.

Conclusion: Your repository is now properly cleaned, and you have successfully deleted the local branches that were not on the upstream. The remaining branches (2.0-UAT, 2.0-fix-login-page, and 2.0-recolor-action-buttons) either have a valid upstream branch or are local branches not set to track a remote.

Gemini can make mistakes, so double-check it