克隆遠程庫gitee到本地用命令git clone
git clone https://gitee.com/automated-piggy-senior/20250717-test.gitLinux/macOS 終端:
執行 touch readme.txt(創建空文件),或 echo "這是說明文件" > readme.txt(創建并寫入內容)。把所有修改提交到暫存區
git add readme.txt一次性把所有修改從暫存區提交到分支
git commit -m "第一次提交"查看狀態
git status把本地庫所有內容推送到遠程庫(默認情況下,遠程庫的名字就是origin)
git push -u origin master查看操作歷史記錄(嫌輸出太多信息可以在后面加上--pretty==oneline這樣就是一次操作就是一行)
git log
git log --pretty=oneline回退到上一個版本(用 HEAD 表示當前版本,也就是最新的提交 1094adb...(注意我的提交 ID 和你的肯定不一樣),上一個版本就是 HEAD^,上上一個版本就是 HEAD^^,當然往上 100 個版本寫 100 個 ^ 比較容易數不過來,所以寫成 HEAD~100。)
git reset --hard HEAD^這個命令會顯示本地倉庫中所有分支的 “引用日志”,包括每個版本的 commit ID 以及操作記錄(如 commit、reset、checkout 等)
git reflog回到之前的版本之后想回去怎么辦(版本號commit ID沒必要寫全,前幾位就可以了,Git 會自動去找。當然也不能只寫前一兩位,因為 Git 可能會找到多個版本號,就無法確定是哪一個了。)
git reset --hard 46d69如何刪除文件:rm 文件名
這個時候,Git 知道你刪除了文件,因此,工作區和版本庫就不一致了,git status 命令會立刻告訴你哪些文件被刪除了現在你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令 git rm 刪掉,并且 git commitrm readme.txtgit rm readme.txt
git commit -m "remove readme.txt"如何恢復刪除的文件
沒用git rm 文件名 命令的情況:git checkout -- readme.txt
用了git rm 文件名命令的情況:由于工作區和暫存區的都被刪除了,用上面的命令會報錯,只能先將文件從暫存區恢復到工作區,再 checkout
(git rm 會同時刪除工作區文件并將刪除操作加入暫存區,此時單純 checkout 無法恢復,因為暫存區已經記錄了 “刪除” 狀態。
git reset HEAD <文件> 會撤銷暫存區的操作,讓文件狀態回到 “已刪除(暫存)” 變回 “已刪除(僅工作區)”,之后才能用 checkout 從版本庫恢復。)
先
git reset HEAD readme.txt
再
git checkout -- readme.txt
常見問題1:錯誤提示?fatal: pathspec 'readme.txt' did not match any files
?表示 Git 找不到名為?readme.txt
?的文件,導致無法執行?git add
?操作。以下是具體的解決步驟:
1. 確認文件是否存在
首先檢查當前目錄下是否真的有?readme.txt
?文件:
- Windows 命令提示符 / PowerShell:
執行?dir readme.txt
(查看是否有該文件)。 - Linux/macOS 終端:
執行?ls readme.txt
(查看是否有該文件)。
如果命令返回 “找不到文件”,說明文件不存在,需要先創建文件或檢查文件名是否正確。
2. 檢查文件名拼寫和大小寫
Git 對文件名的大小寫敏感(尤其是在 Linux/macOS 系統上),例如:
Readme.txt
、README.TXT
?和?readme.txt
?會被視為不同文件。- 可能不小心多打了空格(如?
readme .txt
)或少打了字母(如?readme.tx
)。
仔細核對文件名,確保與實際文件名完全一致。
3. 確認當前目錄是否正確
git add
?只能操作當前倉庫目錄下的文件。如果?readme.txt
?在子目錄中(例如?docs/readme.txt
),直接執行?git add readme.txt
?會找不到文件。
解決方法:
- 切換到文件所在目錄:
cd 子目錄路徑
(例如?cd docs
),再執行?git add readme.txt
。 - 直接指定文件的相對路徑:
git add 子目錄路徑/readme.txt
(例如?git add docs/readme.txt
)。
4. 若文件不存在,創建文件后再添加
如果確實需要添加?readme.txt
,但文件還未創建,可以先創建文件:
- Windows 命令提示符:
執行?echo 內容 > readme.txt
(創建文件并寫入內容,例如?echo "這是說明文件" > readme.txt
)。 - Linux/macOS 終端:
執行?touch readme.txt
(創建空文件),或?echo "這是說明文件" > readme.txt
(創建并寫入內容)。
創建成功后,再執行?git add readme.txt
?即可。
5. 檢查是否在 Git 倉庫目錄中
git add
?必須在已初始化的 Git 倉庫中執行(即包含?.git
?文件夾的目錄)。如果還未初始化倉庫:
- 執行?
git init
(初始化當前目錄為 Git 倉庫)。 - 再執行?
git add readme.txt
。
總結步驟
- 確認文件存在且文件名正確(拼寫、大小寫)。
- 確認文件在當前目錄或正確指定路徑。
- 確保在 Git 倉庫目錄中操作。
按照以上步驟排查后,git add readme.txt
?應該能正常執行了。如果仍有問題,可以提供具體的目錄結構和文件名,進一步分析解決。
常見問題2:你現在的情況是:已經用?git rm readme.txt
?刪除了?readme.txt
,但還沒有提交這個刪除操作,此時直接用?git checkout -- readme.txt
?無法恢復,因為?git rm
?已經將文件從暫存區和工作區同時移除了。
解決方法:恢復被?git rm
?刪除的文件
需要先將文件從暫存區恢復到工作區,再 checkout:
先用?
git reset HEAD readme.txt
?取消暫存區的刪除操作:bash
git reset HEAD readme.txt
再執行 checkout 恢復文件:
bash
git checkout -- readme.txt
執行后,readme.txt
?就會恢復到工作區,此時用?ls
?命令就能看到該文件了。
原理說明:
git rm
?會同時刪除工作區文件并將刪除操作加入暫存區,此時單純?checkout
?無法恢復,因為暫存區已經記錄了 “刪除” 狀態。git reset HEAD <文件>
?會撤銷暫存區的操作,讓文件狀態回到 “已刪除(暫存)” 變回 “已刪除(僅工作區)”,之后才能用?checkout
?從版本庫恢復。
常見問題3
rm只是刪除工作區的文件
git rm刪除了暫存區的文件,如果沒有進行git commit即使進行git push -u origin master上傳到遠程庫也不會生效刪除這個文件的操作;所以說要想刪除遠程庫的文件就得進行git rm和git commit這兩個操作
常見問題4:這個錯誤?non-fast-forward
?表示本地分支落后于遠程分支(遠程有你本地沒有的新提交),因此 Git 拒絕直接推送送,防止覆蓋遠程的更新。
解決方法:先拉取遠程更新,再推送
拉取遠程分支的最新內容(會自動合并到本地分支):
bash
git pull origin master
- 如果拉取時出現沖突,需要打開沖突文件,找到并解決沖突(沖突部分會用?
<<<<<<< HEAD
、=======
、>>>>>>> origin/master
?標記),解決后執行?git add .
?和?git commit -m "解決沖突"
。
- 如果拉取時出現沖突,需要打開沖突文件,找到并解決沖突(沖突部分會用?
再次推送本地分支:
bash
git push -u origin master
原理說明:
- “non-fast-forward” 意味著遠程分支比你本地分支新(別人可能推送了新內容),直接推送會導致歷史不一致。
git pull
?會先將遠程的新提交拉取到本地并合并,讓本地分支與遠程保持同步,之后就能正常推送了。
執行以上步驟后,你的本地修改就能就能成功推送到遠程倉庫了。
常見問題5:出現 “Everything up-to-date” 但 Gitee 上看不到更新,通常是因為本地分支的修改沒有被正確提交到版本庫,導致沒有可推送的內容。具體原因和解決方法如下:
可能的原因
修改未提交到本地版本庫
你可能只在工作區修改了文件(比如新增了?2.c/
?目錄或修改了?readme.txt
),但沒有執行?git add
?和?git commit
?將修改保存到本地版本庫。此時 Git 認為 “沒有新內容需要推送”,所以提示 “Everything up-to-date”。新增的目錄 / 文件未被 Git 跟蹤
如果?2.c/
?是新建的目錄,且目錄內沒有文件(或文件未被?git add
),Git 不會跟蹤空目錄,因此不會將空目錄推送到遠程。
解決方法:提交本地修改后再推送
按照以下步驟操作,確保本地修改被正確提交:
檢查當前文件狀態
執行?git status
?查看哪些文件未被跟蹤或修改未提交:bash
git status
- 紅色文件表示 “未跟蹤” 或 “已修改但未暫存”。
- 綠色文件表示 “已暫存但未提交”。
暫存修改的文件
將需要推送的文件 / 目錄添加到暫存區(如果?2.c/
?內有文件,需指定具體文件或遞歸添加):bash
# 暫存所有修改(包括新增、修改的文件) git add . # 或單獨暫存某個文件/目錄(例如 readme.txt 和 2.c/ 內的文件) git add readme.txt 2.c/
提交到本地版本庫
用?git commit
?記錄暫存區的修改:bash
git commit -m "描述你的修改,例如:新增2.c目錄和更新readme"
再次推送到遠程
提交后執行推送命令,此時就會將新提交推送到 Gitee:bash
git push origin master
驗證是否成功
- 推送成功后,終端會顯示類似?
1 file changed, 1 insertion(+)
?的信息,說明有內容被推送。 - 刷新 Gitee 倉庫頁面,即可看到更新的文件 / 目錄。
補充說明
- 如果?
2.c/
?是空目錄,即使執行?git add 2.c/
?也不會被 Git 跟蹤,因為 Git 只跟蹤文件,不跟蹤空目錄。需在?2.c/
?內添加至少一個文件(例如?2.c/test.c
),再執行上述提交步驟。 - 若推送后仍看不到更新,可在 Gitee 倉庫頁面檢查當前分支是否為?
master
(默認推送的是?master
?分支,需確保查看的是對應分支)。
常見問題6:修改文件夾(目錄)名字的操作可以通過命令行完成,同時需要讓 Git 記錄這個修改。以下是具體步驟:
1. 重命名文件夾
在終端(或 Git Bash)中使用?mv
?命令重命名,例如將?old_folder
?改名為?new_folder
:
bash
mv old_folder/ new_folder/
- 注意文件夾名后的?
/
?可加可不加,不影響命令執行。 - 如果文件夾名包含空格,需要用引號包裹,例如:
mv "old folder/" "new folder/"
。
2. 讓 Git 識別修改
重命名后,Git 會將其視為 “刪除舊文件夾 + 新增新文件夾”,需要通過?git add
?跟蹤這個變化:
bash
# 查看狀態,確認修改被識別
git status# 添加修改到暫存區(會自動處理舊文件夾的刪除和新文件夾的新增)
git add .
3. 提交修改到本地倉庫
bash
git commit -m "重命名文件夾:old_folder -> new_folder"
4. 推送到遠程倉庫(更新遠程顯示)
bash
git push origin master # 或當前分支名
完成后,本地和遠程倉庫的文件夾名字都會更新,且文件夾內文件的歷史記錄會被保留。
注意:
- 如果文件夾內有文件,重命名后文件會自動移動到新文件夾,無需額外操作。
- 若操作后發現命名錯誤,可重復上述步驟再次修改。