[英]Unable to get unified diff. fatal: bad revision “HEAD” on git diff for making the first commit
我在 Gitlab 中創建了一個新存儲庫。 然后我創建了一個文件夾並在其中添加了一個文本文件。 我運行了以下命令。
但是,它給了我這個錯誤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 :/:
如果繁文縟節想要阻止這種情況,那么您可能有幾個選擇(取決於繁文縟節的真實程度):
繼續並在本地執行以生成補丁以供審查,然后在推送之前壓縮空提交。 這樣你就永遠不會推送任何沒有經過補丁審查的提交,所以也許這會讓一些官僚微笑。
使用不同的工具生成補丁。 非常確定 git 命令行工具可以創建您想要的補丁(查看git diff
文檔; https: //git-scm.com/docs/git-diff)
如果您已經在列表中排到這么遠,您真的需要與制定規則的人進行交談,因為在一天結束時,他們需要了解確實存在罕見但必需的邊緣情況。
新的存儲庫還沒有提交。
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.