主頁 > .NET開發 > Git和我搞砸了并將我的分支重命名為staging但它仍然參考合并的分支

Git和我搞砸了并將我的分支重命名為staging但它仍然參考合并的分支

2022-03-15 18:48:18 .NET開發

所以,我的暫存分支有問題。我相信有人從中洗掉了一些檔案,當我嘗試將我的分支合并到其中時,“洗掉的檔案”永遠不會更新。就像我的分支在暫存之后,因此它不會更新(或放回)那些已洗掉的檔案。

由于我的分支是“最新的”,我想只是將我的分支重命名為“staging”并解決它......好吧,它現在正在暫存,但它跟蹤的是舊分支!

我如何讓 staging 成為 staging... 并讓我的舊分支回來。

這就是它向我展示的內容:

?  My_Site git:(staging) git status
On branch staging
Your branch is up to date with 'origin/issue-118/customer-page'.

nothing to commit, working tree clean

所以,我現在正在“暫存”,但它參考了“舊”分支。我使用了這些命令。我想我搞砸了。我只是想用我的分支強制或完全覆寫“分期”......但我重命名了一些東西......并且弄得一團糟。這就是我所做的。我看到這是不正確的。

```
git branch -m staging old_staging
git branch -m issue-118/customer-page staging
git push -f origin staging
```

uj5u.com熱心網友回復:

好吧,它現在正在暫存,但它正在跟蹤較舊的分支!

Git 中的track一詞嚴重超載:它確實“跟蹤”了錯誤的遠程跟蹤名稱,您會發現 Git 的各個部分使用該動詞,但 Git 的其他部分使用upstreamset-upstream一詞。這是一個更好的名稱,因為它的多載要少得多(例如,可以很容易地與已跟蹤檔案和未跟蹤檔案區分開來)。

使用“上游”和“設定上游”的措辭,您會發現git branch --set-upstream-to. 這就是您在此處尋找的命令。如果您喜歡該名稱staging當前意味著它當前意味著的任何提交這一事實,并且您希望重命名為stagingname 的上游是origin/staging,您只需要在您已經運行的集合中再添加一個命令:

git branch --set-upstream-to=origin/staging staging

這告訴 Git 將上游設定stagingorigin/staging,而不是origin/issue-118/customer-page.

您也可以git push -f -u origin staging在您的git push步驟中使用。

技術細節(可選)

Git 存盤庫中的分支名稱特定于Git 存盤庫(該特定克隆)。其他一些 Git 存盤庫可能使用相同的名稱,而您的 GitHub、Bitbucket 或 GitLab 或任何存盤庫,您使用 name 訪問的存盤庫origin使用相同的名稱。但他們的名字可能指不同的具體提交。(分支名稱總是意味著一個特定的提交;一個提交“到達”其父提交,然后“到達”其父提交,依此類推。)

當您使用git fetch從其他 Git 存盤庫(例如 at 的存盤庫)獲取新提交時origin,您自己的 Git 會抓取這些新提交(如果有),然后讀取它們的分支名稱,例如stagingmain等等,并將這些名稱更改為您的遠程- 跟蹤名稱: origin/stagingorigin/main等。然后,您的 Git 軟體會創建或更新這些遠程跟蹤名稱,以便您的 Git 存盤庫會記住他們的Git 存盤庫記得哪些提交(但他們的 Git 存盤庫正在使用origin/前面沒有的變體)。

存盤庫中的每個分支名稱都可以有一個(但只有一個)上游集。根本不需要任何分支都有任何上游擁有一個只是一個方便的功能。

當您使用一些現有的遠程跟蹤名稱,例如,在您自己的存盤庫中origin/develop創建一個--guess分支時,使用該模式git checkoutgit switch提供的模式(默認情況下處于啟用狀態),您的 Git 軟體將創建該分支立即將其上游設定為對應的遠程跟蹤名稱。因此,如果您git switch develop在還沒有a時使用develop,并且您的 Git 看到您確實擁有origin/develop,您的 Git 會猜測您打算創建一個新develop的,它origin/develop作為上游origin/develop選擇現在選擇的相同提交。這是實際中的or操作:git switch -c name --track origin/namegit checkout -b name --track origin/name--track猜測代碼暗示了標志(意思是,設定上游)。1

當您創建一個分支時——一個全新的,沒有相應分支的分支origin——例如一個用于新功能或錯誤修復等的分支,在另一個Git 存盤庫中還沒有任何具有該名稱的分支。因此fix/bug-1234,例如,您的 local 沒有origin/fix/bug-1234“跟蹤”(作為上游)。

As a result, for a new branch like this, you must first git push the commit(s) (if any) to origin, then—at the end of that git push—have the other Git software, working on the origin repository, create the branch name there. If and when that succeeds, your own Git software will automatically create your origin/fix/bug-1234, and now you can set an upstream. So that takes two steps: git push origin fix/bug-1234 followed by an appropriate git branch --set-upstream-to.

To avoid having to run two commands,3 git push has the -u flag (with longer spelling --set-upstream). This flag tells git push that if the push succeeds, thereby creating or updating the remote-tracking name, git push should run the git branch --set-upstream-to for you.


1The reason it's --track in git checkout and git switch, but --set-upstream-to in git branch, is that the core Git team like to confuse everyone. ?? More seriously, it's because --track is for a new branch and --set-upstream-to is for an existing branch. Also, "set as upstream" is tough to verb well.2

Meanwhile, the reason it's --set-upstream-to in git branch, but just --set-upstream elsehwhere, is due to a historical mistake: the initial attempt to add --set-upstream to git branch produced an unfortunate result. The --set-upstream option to git branch now tells you to use --set-upstream-to instead.

2As Calvin said, "Verbing weirds language." What would you put here? --upstreamify?

3Having to type in two commands would be such an awful burden, wouldn't it? ?? But the -u option is convenient. You can do it on every git push, or just with the ones that actually need to set or change the upstream: redundantly resetting the upstream is harmless.


Additional notes

To see how a branch name means one particular commit, run git rev-parse:

git rev-parse staging
git rev-parse old_staging

Each command will spit out one hash ID.

This applies to remote-tracking names as well:

git rev-parse origin/issue-118/customer-page

You can also find out the upstream setting of some branch using git rev-parse:

git rev-parse --symbolic-full-name main

which will print refs/heads/main if you have a branch named main (use master if you have master instead, and so on); and:

git rev-parse --symbolic-full-name main@{upstream}

will show the full name (including the refs/remotes/ prefix) of the remote-tracking name that main has set as its upstream. The @{upstream} suffix can be shortened to @{u}, and in place of a branch name, you can use HEAD to mean "the current branch name, whatever it is", so:

git rev-parse --symbolic-full-name HEAD@{u}

will tell you what the upstream is of the current branch, if there is an upstream for the current branch. If not, you'll get an error like this one:

fatal: no upstream configured for branch 'main'

Configuring an upstream gives you some shortcuts, and extra information, and that's most of what it does. Note that, depending on your push.default setting, it might include a very important shortcut: the default push.default setting, if you have not set it, is simple.4 This setting requires that you use git push -u origin HEAD or git push -u origin branch for the initial push so that you can just run git push with no arguments later. (If you set push.default to current or matching, this protection goes away, but it's very easy to slip up with these.)


4If you are using a pre-2.0 Git, this may not be the case. The old default default was matching. With this setting, a lot of people had a bad time. The best thing to do here is to upgrade.

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/443888.html

標籤:混帐

上一篇:Git大檔案存盤/如何在AWSEC2Linux2上安裝gitlfs/“沒有可用的包git-lfs。”

下一篇:IBMiSTRSEU-可以直接編輯流檔案(IFS)?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more