4

How do I manually update a remote tracking branch, say, to undo a fetch?

 11 months ago
source link: https://devblogs.microsoft.com/oldnewthing/20231002-00/?p=108844
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

How do I manually update a remote tracking branch, say, to undo a fetch?

RaymondChen_5in-150x150.jpg

Raymond Chen

October 2nd, 20230 0

One of my colleagues who writes git tools wanted to know how to force a local repo’s remote tracking branch into a stale state. Doing so would allow testing of various edge cases.

$ git fetch origin
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Total 15 (delta 0), reused 6 (delta 0), pack-reused 0
From http://contoso.com/sample
   844de02..01781ca  main       -> origin/main

How can we “unfetch” the origin/main branch so the local repo thinks that the remote is still on 844de02?

The magic command is git update-ref. This command lets you set the commit for any branch or tag.

$ git update-ref refs/remotes/origin/main 844de02

You can also use it to undo the creation of a branch via a fetch.

$ git fetch origin
remote: Enumerating objects: 22, done.
remote: Counting objects: 100% (22/22), done.
remote: Total 22 (delta 0), reused 9 (delta 0), pack-reused 0
From http://contoso.com/sample
 * [new branch]      dev        -> origin/dev

You can delete the remote tracking branch by saying

$ git update-ref -d refs/remotes/origin/dev

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK