克隆远程库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 # 或当前分支名
完成后,本地和远程仓库的文件夹名字都会更新,且文件夹内文件的历史记录会被保留。
注意:
- 如果文件夹内有文件,重命名后文件会自动移动到新文件夹,无需额外操作。
- 若操作后发现命名错误,可重复上述步骤再次修改。