主頁 > .NET開發 > 重命名本地分支并通過GitHub洗掉重復的遠程分支后如何拉取?

重命名本地分支并通過GitHub洗掉重復的遠程分支后如何拉取?

2022-10-17 09:26:48 .NET開發

一切都與 GitHub 上的遠程存盤庫同步。

然后我在 Sublime Merge 中重命名了一個本地分支(右鍵單擊 → 重命名分支)。

然后我推送了——這并沒有同步遠程倉庫,而是我現在有兩個相同的分支,一個是舊的,一個是新的。所以我通過 GitHub 洗掉了舊分支,因為我不知道如何從 Sublime Merge 中洗掉。

現在,當我嘗試引入 Sublime Merge 時,它??說:

Ihre Konfiguration gibt an, den Merge mit Referenz 'refs/heads/<old-branch-name>' des Remote-Repositories durchzuführen, aber diese Referenz wurde nicht angefordert.

通過谷歌翻譯的英文翻譯:

Your configuration says to merge with reference 'refs/heads/<old-branch-name>' of the remote repository, but this reference was not requested.

我能做些什么來解決這個問題?我想我必須從我的配置中洗掉舊的分支條目,但是如何以及在哪里?

uj5u.com熱心網友回復:

短版:用于git branch --set-upstream-to修復上游設定,例如:

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

(請注意origin/,在這種格式中,名稱的版本在等號之后,不帶空格;分支名稱本身是可選的,如果您將其省略,Git 將假定為“當前分支名稱”)。

更長:如何理解這里發生了什么

在 Git 中,分支名稱實際上并不重要這意味著您可以隨時更改它們。但是這里有一些問題,因為每個 Git 存盤庫都有自己的(單獨的)分支名稱。更改一個存盤庫中的名稱不會影響另一個存盤庫中的名稱。

除了分支名稱之外,Git 還有其他型別的名稱,例如標簽名稱(通常用v, egv1.7或撰寫v2.12.1)和遠程跟蹤名稱1 您可能至少熟悉或非常熟悉諸如origin/mainor之類的名稱origin/master,這些是這些遠程跟蹤名稱的示例。

每當你運行git fetch——包括git fetch那個git pull運行——你是在指示你的 Git 軟體,使用你的存盤庫中的資料,在某個 URL 呼叫一些其他的 Git 軟體。URL 本身通常是 Git 在您運行git clone創建Git 存盤庫時保存的 URL。Git 會將該 URL 保存在 name 下origin這個名字origin——實際上是可以改變的,但人們通常不會改變origin太多,如果有的話。

這個簡短的名稱,通常origin在這里,只是幫助您跟蹤 Internet 上某個地方“外面”有另一個 Git 存盤庫這一事實的一種方式。短名稱既存盤了 URL,以便您以后可以運行git fetch而不必自己記住它,也構成了遠程跟蹤名稱的基礎

所以,當你運行git fetch——包括git fetchthatgit pull runs和你最初創建存盤庫時運行的git fetchthat git clone——你的 Git 軟體會呼叫另一個 Git 軟體,它從某個現有的 Git 存盤庫中讀取。該 Git 存盤庫有自己的分支和標簽名稱。它甚至可能具有遠程跟蹤和/或其他型別的名稱。您的 Git 軟體可以看到所有這些名稱——或者至少,它們愿意顯示給你的所有名稱——以及它們附帶的 Git 哈希 ID。事實上,有一個命令可以用來轉儲所有這些:

git ls-remote origin

將在 處呼叫另一個 Git origin,讓它列出它會讓你看到的名稱,然后將它們全部列印出來而不實際對它們做任何有用的事情。

但是當你運行時git fetch,Git 使用相同的機制來查看它們的所有分支和標簽名稱,并使用從它們那里獲取提交(如果啟用,則獲取標簽,因為它通常是默認設定的)。然后——一旦你的 Git從他們的提交集中添加了任何新提交到你的存盤庫——你的 Git 通常會更新你所有的遠程跟蹤名稱這涉及創建新名稱(如果它們顯示您還沒有作為遠程跟蹤名稱的名稱),或者更新現有名稱(如果它們顯示您確實擁有的名稱)。

這意味著,如果您克隆一個存盤庫,在您克隆它時,它具有名為mainbr1和的分支br2,您將在自己的克隆中獲得:

origin/main        (corresponds to their main)
origin/br1         (corresponds to their br1)
origin/br2         (corresponds to their br2)

此時你沒有分支,這是在 Git 中作業的一種非常悲慘的方式(盡管可以做到)。因此,git clone現在根據您提供給的引數,在您的存盤庫中創建這三個分支名稱之一如果您沒有給出論據,而大多數人大多沒有給出論據,那么您會得到他們的軟體推薦的名稱,通常是. 2-bgit clone-bmainmaster

但是現在假設您使用git push洗掉br1托管站點上的名稱并將其替換為 name anch如果現在運行git ls-remote origin,您將看到三個名稱mainbr2anch這也是您的 Git 軟體將看到的內容,因此git fetch origin創建一個anch, 拼寫為origin/anch. 這是您為他們的anch.

會發生什么br1沒有什么。 它仍然存在,作為陳舊的剩余物。您的 Git 軟體為它們現在擁有的分支名稱創建或更新適當的遠程跟蹤名稱,但不會為您的 Git 軟體之前創建的名稱清除死的名稱,這些名稱不再具有任何明顯的用途。


1 Git 現在相當一致地稱這些“遠程跟蹤分支名稱”,但在我看來,這里的分支一詞只是把事情搞得一團糟。這些名稱“遠程跟蹤”,因此這部分是有道理的。他們跟蹤的是其他存盤庫的分支名稱,因此是名稱的其余部分 - 但由于它們在您的存盤庫中,并且實際上不是分支名稱,我認為完全省略分支一詞更有意義它們是名稱,它們跟蹤——如“跟隨”——遠程的分支名稱,但它們根本不是分支名稱。

2要更改 GitHub 上的推薦,請使用 GitHub 的 Web 界面設定“默認分支”。要在 Bitbucket 上更改它,請使用 Bitbucket 的 Web 界面。要在 Google Hosting 上更改它......好吧,他們忘了給你一個改變它的方法!哎呀。但這是一般的想法:你不能在 Git 中做到這一點,你必須使用一些附加組件。這可能是 Git 中的一個錯誤,但考慮到這種方式已經持續了將近 20 年,它可能還會保持這種狀態一段時間。


分支名稱的特殊屬性

在 Git 中,所有不同種類的名稱都只包含一 (1) 個哈希 ID,或者更正式地說是物件 ID,一個大而難看的字母和數字字串,例如c3ff4cec66ec004d884507f5296ca2a323adbbc5. 這實際上只是一個非常大的數字的十六進制編碼,用于在 Git 的“物件資料庫”中定位物件,這是構成 Git 存盤庫核心的兩個資料庫之一(另一個資料庫是名稱-to-IDs 資料庫)。正是這兩個資料庫的組合使 Git 存盤庫作業;這兩個資料庫,加上一組最小的輔助檔案,是任何 Git 存盤庫的必要基本部分。

使分支名稱在 Git 中特別神奇的原因在于三個部分:

  1. 它被迫只保留一個提交哈希 ID。不允許使用其他型別的物件。(還有其他三種物件,例如,標簽名稱可以包含這四種中的任何一種。)

  2. 您可以使用git checkoutor (從 Git 2.23 開始)來“打開”一個分支git switch

  3. 分支名稱支持其他名稱缺少的特定設定。

實際上,這里最關鍵的是第 2 項。“在”一個分支上是 Git 跟蹤最新提交的方式。每當您“在”某個分支上并進行提交時,Git都會更新存盤的哈希 ID以使用新提交的新的、唯一的、明顯隨機的哈希 ID。Git需要提交的哈希 ID 才能找到該提交。分支名稱存盤最新提交的哈希 ID。提交本身存盤了較早提交的哈希 ID,因此通過查找latest,Git 可以找到較早的。

鑒于在您進行提交時分支名稱將自動更新,這使得分支名稱可以查找所有提交。但由于這不是本答案/文章的目的,我們將在此停止,無需進一步解釋。相反,我們將繼續進行第 3 項,即設定。

任何一個特定分支名稱的設定包括:

  • git pull如果您選擇使用,您是否希望此分支名稱與git pull;進行“合并”或“變基”
  • 存盤庫中另一個分支的名稱,或在存盤庫中查找遠程跟蹤名稱所需的資訊。3

第一項是嚴格的git pull第二項也 git pull, 和git rebase和使用git merge

git pull命令的意思是:

  1. 運行git fetch,然后
  2. 運行我選擇的第二個命令,通常git merge但有時git rebase.

因為它背靠背地運行這些,它實際上可以比單獨的每個命令知道更多的資訊(這意味著您會收到一條資訊模糊的錯誤訊息,正如我們將看到的那樣)。


3這個有趣的措辭的原因是,由于歷史原因,這種“上游”設定的實際編碼相當奇特。要參考存盤庫中的分支,設定為文字字串(句點)并設定為,其中是它們出現在存盤庫中的兩個分支名稱。但是,要參考存盤庫中的遠程跟蹤名稱,這兩個設定為where is the remote 和是在 remote上看到的分支名稱然后通過默認提取設定中的 refspec(s) 確定的映射運行這些映射branch.B1.remote.branch.B1.mergerefs/heads/B2B1B2Rrefs/heads/B2RB2,由于篇幅原因,我不打算討論。這是瘋狂的復雜,??即使正常的效果就是,例如,分支作為mainorigin/main上游。


git pull操作_

命令需要一git fetch兩條資訊,git mergeorgit rebase操作還需要多一條資訊。特別是,git fetch需要知道從哪個遙控我們是在做,或者也許,還是……?當然,結果幾乎總是如此(這是內置于的后備默認設定),但它想知道。git fetch git fetch origingit fetch rumpelstiltskingit fetch bruceorigingit fetch

第二命令,無論是合并還是變基,至少需要知道一件事。它真正需要的是一個哈希 ID。它可以一個名字:

git merge origin/br2

或者:

git rebase origin/br2

例如,兩者都可以正常作業origin/br2,當然前提是您有一個,但是在這兩種情況下,Git 都會將該名稱轉換為原始哈希 ID 以完成其作業。然后Git可以使用該名稱,例如,git merge將根據該名稱生成默認的合并訊息。但是,如果git pullis running git merge,則git pull生成自己的合并訊息并覆寫此默認值。

在任何情況下,這兩個資訊位都被編碼到分支的上游設定中。一個名為的分支的上游B通常是. 也就是說,如果你在你的 branch 上,你是根據你呼叫的 's做的,并且你打算將你的新提交提交他們等等。origin/Bmainoriginmainorigin/mainmain

沒關系,當您br1根據br1您呼叫的分支創建分支時origin/br1,您會得到br1一個上游設定為origin/br1. 如果你運行,你會看到這個:

git branch -vv

(或者git branch --verbose --verbose如果你喜歡長拼寫)。但是,如果您隨后使用git push更改名稱,在另一個存盤庫中,從tobr1anch然后運行:

git fetch

你的 Git 將帶來一個新名稱,anch并將其轉換為origin/anch. 如果您提前考慮,您還將本地重命名br1anch

git switch br1
git branch -m anch

(在 GitHub 或任何地方重命名分支之前或之后)。但是:您的分支,現在稱為anch,仍然說它的上游origin/b1. 您已b1在本地重命名,并且 - 無論是使用 Web 界面還是 -您已在托管站點上git push重命名,但存盤庫中的上游設定只是一個特殊格式的字串,它沒有更改b1

跑步:

git fetch --prune origin

告訴你的 Git:查找origin,使用它來獲取 URL,呼叫其他 Git 軟體,檢查分支名稱集,并清除我擁有的任何舊的過時名稱那將拋棄你的陳舊origin/b1但是您的anch分支仍然使用舊origin/br1的作為上游設定。所以現在你需要:

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

當前分支(您現在稱為anch)的上游設定為您的origin/anch,這就是您所說的他們的 anch.

沒有這個,git pull認為它應該運行git fetch origin,然后使用對origin/br1. 由于沒有進行任何更新,因此git pull抱怨:

Your configuration says to merge with reference
'refs/heads/br1' of the remote repository, but this
reference was not requested.

(雖然實際上英文版與德文的反向翻譯有點不同)。

如果您運行git mergegit rebase不提供其他引數,您會收到類似(但有些不同)的投訴,例如:

fatal: No remote-tracking branch for refs/heads/br1 from origin

請注意,這需要首先清除“陳舊”名稱以獲取錯誤。如果我們不先跑git fetch --prune,就會有一個“陳舊的”origin/br1存在。rebase 或 merge 命令將使用存盤該陳舊名稱中的哈希 ID!由此產生的變基或合并可能什么都不做,但總的來說這不是一個好主意。

一些小瑕疵git fetch

理想情況下,如果git fetch總是這樣做就好了--prune你可以讓它這樣做:

git config --global fetch.prune true

這使得git fetch包括 run by 在內git pull,只要有可能就會自動執行修剪操作。這里有一些小 bug-ettes,雖然它們通常很安全:如果你遇到了一個奇怪的角落案例,只需git fetch再次運行以修復問題,省去任何導致你遇到小 bug 的額外引數。

還有兩件事我必須在這里提到:

  1. 非常舊的 Git 版本(1.8.4 之前)經常無法更新某些遠程跟蹤名稱。
  2. 有一些方法可以運行git fetch,使其無法更新大多數遠程跟蹤名稱。

特別是,如果您運行:

git fetch origin main

你是在告訴你自己的 Git,無論其他 Git 為我們溢位的分支名稱串列如何,我們都應該只更新 我們的 origin/main. (這里的斜線是隱含的;這可以追溯到腳注 3 和其中提到的歇斯底里的葡萄干。)當您使用這種形式的 時, fetch 不能修剪(即使設定為git fetch也不會這樣做)。如果你的 Git 版本真的很舊,它甚至不會更新:它只會留下足夠的資訊讓這個舊版本的 Git 完成操作。fetch.prunetrueorigin/main.git/FETCH_HEADgit pull

請注意,當您git pull這樣運行時;

git pull

這運行git fetch,不是git fetch origin main,所以這兩種奇怪的情況不會發生。但是當你運行時:

git pull origin main

git pull命令將整個引數集傳遞給git fetchgit fetch origin main因此在古代 Git 中,這兩種特殊情況(沒有修剪和沒有遠程跟蹤更新)確實發生了,而在現代 Git 中,一種情況(沒有修剪)發生了。

它如此復雜,我需要提到這一點,這是對 Git 的一種控訴。我發現 Git 非常有用,而且大部分都非常好,但它確實有很多含義 3 here的實體。

uj5u.com熱心網友回復:

我做了什么:

# Read eftshift0′s and torek′s comments
# Duckduckify "upstream" knowledge, find shorturl.at/tEXY3.
git help                           # too broad
git branch help                    # better

git branch --list                  # OK, renamed branch is active, but too terse
git branch --list --all            # too terse
git branch --list --all --verbose  # too terse
# make console full screen
git branch --list --all -vv        # or `--verbose --verbose`
                                   # OK, better
                                   # lists deleted remote
                                   # blue shows deleted remote
                                   # thats wrong

git fetch --prune                  # eftshift0′s comment
git branch --list --all -vv        # SUCCESS, deleted remote branch not listed

git branch --set-upstream-to=origin/new-correct-remote
                                   # torek′s comment
git branch --list --all -vv        # SUCCESS, correct blue remote branch

添加到以~/.bash_aliases供將來參考:

gitlistbranches() {
    git branch --list --all -vv
}

gitsetremote() {
    git fetch --prune
    git branch "--set-upstream-to=origin/$1"
}

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

標籤:混帐github升华

上一篇:在github上推送更改時如何避免自述檔案被洗掉?

下一篇:如何暫時擦除未跟蹤檔案上的Git更改,但在未來顯示更改

標籤雲
其他(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