簡體   English   中英

git - 切換到本地開發,然后返回功能分支重置修改/添加文件的狀態

[英]git - Switching to a local develop, then back to feature branch resets the status of modified/added files

我在我的功能分支中添加了一些更改,使用 push -u git 命令暫存、提交並推送到原點。

第二天,我更新了我的本地開發和功能分支,以使用標准的 git fetch / git merge 程序從遠程獲取最新代碼。

在這一點上,我看到了一些有趣的事情:

我在我的功能分支上, git status告訴我一切正常,這是正確的

我切換到開發分支, git status顯示一切正常,這是正確的

我切換回我的功能分支, git status報告了我之前已經推送到遠程一天的所有更改,如下所示:

  1. 暫存(綠色) - 我的更改正在被刪除(這將某些文件標記為已准備好提交)。 現有文件被標記為已修改,我的更改將從其中刪除。 我添加的文件被標記為已刪除,
  2. 未上演(紫色) - 我在推送過程中修改的現有項目文件,
  3. UNTRACKED (RED) - 我添加到項目中的新文件作為我上面推送的一部分。

我不明白為什么會發生這種情況,但不應該。

如果我發出git add . , git 中沒有顯示任何消息,我只是回到終端命令。

如果我現在發出git status ,它現在顯示我的功能分支是最新的“沒有任何提交,工作樹是干凈的”。

在我的 Mac 上從功能來回切換到開發和開發到功能分支,一遍又一遍地重現相同的問題。 在我的 Windows 機器上這樣做根本不會重現這個問題。

所以,我的結論是我的 Mac 機器上的 git 環境有問題

但是,我還嘗試在我的 Mac 上獲取我的項目的全新克隆(它現在包含我的功能分支,因為我使用 git push -u 命令推送了所有更改),然后嘗試在該克隆之間來回切換開發和我的功能分支,但問題沒有發生。 這讓事情變得更加撲朔迷離。

看起來我的 Mac 機器上的 git 沒有正確更新某些內容。 這可能是什么以及如何調查?

我們是在 Mac 和 Windows 上工作的跨平台團隊。 我的core.autocrlf設置為在 Mac 上input ,在 Windows 上設置為true 我不知道core.autocrlf其他團隊成員設置。

首先,確保git config core.autocrlf始終設置為 false(在 Windows 或 Mac 上)。
您可能需要的任何 EOL 轉換都應該在.gitattributes eol屬性中完成

然后在兩個平台上檢查您的 repo 中的git config -l內容過濾器驅動程序可能是提交時自動修改的示例,可能不會在其他平台上聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM