簡體   English   中英

無法獲得統一差異。 致命:git diff 上的錯誤修訂版“HEAD”用於進行第一次提交

[英]Unable to get unified diff. fatal: bad revision “HEAD” on git diff for making the first commit

我在 Gitlab 中創建了一個新存儲庫。 然后我創建了一個文件夾並在其中添加了一個文本文件。 我運行了以下命令。

  • 混帳初始化
  • git remote add origin https-path-to-repository.git
  • 現在我打開 Tortoise git GUI 並單擊“檢查修改”。它顯示了新添加的文件。
  • 然后我點擊“保存統一差異”來創建一個補丁。

但是,它給了我這個錯誤Unable to get unified diff. fatal: bad revision "HEAD" Unable to get unified diff. fatal: bad revision "HEAD"

我需要創建補丁並在提交之前先對其進行審查。

在我的本地系統上,它顯示我在 master 分支上。 我還需要在 Gitlab 上創建一個嗎?

更新- 此處建議的修復均假設原始存儲庫也是空的; 不過,我明白您的問題並沒有真正說明這是否屬實。 如果沒有,torek 的回答包含一些重要信息,因為在這種情況下您不想創建新的根提交。 如果原始存儲庫也是空的,則此答案的其余部分適用。


一些工具知道,如果您嘗試比較根提交,它們應該與空樹進行比較; 有些沒有。 顯然這個沒有。

最簡單的解決方法是在提交之前創建一個空提交。

git rm --cached -r :/:
git commit --allow-empty -m'Empty initial commit'
git add :/:

如果繁文縟節想要阻止這種情況,那么您可能有幾個選擇(取決於繁文縟節的真實程度):

  1. 繼續並在本地執行以生成補丁以供審查,然后在推送之前壓縮空提交。 這樣你就永遠不會推送任何沒有經過補丁審查的提交,所以也許這會讓一些官僚微笑。

  2. 使用不同的工具生成補丁。 非常確定 git 命令行工具可以創建您想要的補丁(查看git diff文檔; https: //git-scm.com/docs/git-diff)

  3. 如果您已經在列表中排到這么遠,您真的需要與制定規則的人進行交談,因為在一天結束時,他們需要了解確實存在罕見但必需的邊緣情況。

新的存儲庫還沒有提交。

git diff命令最常查看:

  • 兩次提交之間的差異,或
  • 某些現有提交與您計划或建議用於新提交的某些文件集之間的區別。

由於您沒有提交,因此這些都不可能。 Git 可以通過假裝沒有文件的先前提交來處理這種情況,以便添加所有文件,但顯然 Git 比 TortoiseGit 更好地處理這種特殊情況。

在我的本地系統上,它顯示我在 master 分支上。

你是,但你也不是。 Git 的分支——或者更准確地說,它的分支名稱——需要保存一些現有的有效提交的哈希 ID(提交號)。 由於還沒有提交,因此不允許存在任何分支名稱。

一旦你創建了第一個提交,Git 仍然需要知道要創建哪個分支名稱。 之后,分支名稱就可以存在了。 所以 Git 會記住你在master即使master還不存在。

我還需要在 Gitlab 上創建 [一個分支] 嗎?

GitLab 上的存儲庫大概也是完全空的。

如果他們有提交

如果它不能完全排空,你現在應該使用Git的連接到他們的Git和獲得,從他們身上,他們所有提交內容:

git fetch origin

以便您可以現有提交之上添加新提交。 不幸的是,此時事情可能會變得有點混亂。 我不知道 TortoiseGit 將如何處理這個問題。 在命令行 Git 中,您現在將運行:

git checkout master

然后git add你的新文件。 注意:如果他們沒有任何提交, git checkout master就會在這里失敗(並且git fetch origin不會做任何事情)。 這整個部分沒有用,您可以忽略它。

解決“首次提交”問題的簡單方法

GitHub 和其他一些托管公司鼓勵您進行僅包含README.md (和/或license )文件的初始提交。 自述文件描述了您的項目的內容。 這也提供了初始提交,因此像 TortoiseGit 這樣的工具和 GUI 不需要對第一次提交進行特殊處理。

暫無
暫無

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

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