Git 仓库内容操作 | CoderMast编程桅杆Git 仓库内容操作 添加文件到暂存区 使用如下指令将工作区的文件添加到暂存区,告诉 Git 在下次 commit 时哪些文件做出了修改。 commit 指令详看后续 添加一个或多个文件到暂存区: 添加指定目录到暂存区 添加当前目录下的所有文件到暂存区 查看仓库状态 在使用添加指令向暂存区添加文件后,可以使用如下指令来查看仓库当前状态,可以查看在上次提...https://www.codermast.com/dev-tools/git/git-content-operations.html
添加文件到暂存区
使用如下指令将工作区的文件添加到暂存区,告诉 Git 在下次 commit 时哪些文件做出了修改。
commit 指令详看后续
- 添加一个或多个文件到暂存区:
git add [file1] [file2] ...
- 添加指定目录到暂存区
git add [dir]
- 添加当前目录下的所有文件到暂存区
git add .
查看仓库状态
在使用添加指令向暂存区添加文件后,可以使用如下指令来查看仓库当前状态,可以查看在上次提交之后是否对文件有修改。
git status
该命令显示如下信息:
- 当前分支的名称。
- 当前分支与远程分支的关系(例如,是否是最新的)。
- 未暂存的修改:显示已修改但尚未使用 git add 添加到暂存区的文件列表。
- 未跟踪的文件:显示尚未纳入版本控制的新文件列表。
根据该指令通常可以判断当前工作目录中的文件状态,并采取适当的操作。
可以加上 -s
参数来获取简短的输出信息
git status -s
比较文件的不同
当工作区的内容提交到暂存区后,对工作区文件做出了修改,这时我们如果想对比具体修改了哪些部分,可以使用如下指令
- 查看文件 file 工作区和暂存区的差别
git diff [file]
- 显示暂存区和上一次提交 commit 的差别
# 两种写法均可
git diff --cached [file]
git diff --staged [file]
- 显示两次提交之间的差异
git diff [first-branch]...[second-branch]
提交暂存区到本地仓库
前面使用 git add
指令将工作区文件添加到暂存区,但并没有实质的将文件添加到本地仓库,可以使用如下指令将文件从暂存区添加到本地仓库。
- 提交暂存区中所有文件到本地仓库
git commit -m [message]
其中 message 是本次提交的一些备注信息。
- 提交暂存区的指定文件到本地仓库
git commit [file1] [file2] ... -m [-a] [message]
这里如果使用了 -a
参数,就代表直接将工作区文件提交到本地仓库。
回退版本
常常在项目版本控制的过程中,我们无意的提交了一些还尚未完成的版本,这时就需要使用到版本回退,使用如下指令可以指定退回某一次提交的版本,语法如下所示
git reset [--soft | --mixed | --hard] [HEAD]
--mixed
为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
`git reset [HEAD]`
--soft
参数用于回退到某个版本:
git reset --soft HEAD
--hard
参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset --hard HEAD
警告
谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。
HEAD 说明
-
HEAD
表示当前版本 -
HEAD^
上一个版本 -
HEAD^^
上上一个版本 -
HEAD^^^
上上上一个版本 -
HEAD~0
表示当前版本 -
HEAD~1
上一个版本 -
HEAD^2
上上一个版本 -
HEAD^3
上上上一个版本
删除暂存区和工作区文件
git rm 命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
- 将文件从暂存区和工作区中删除
git rm [-f] <file>
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
- 仅将文件从暂存区删除,而保留工作区
git rm --cached <file>
该指令把文件从暂存区域移除,但仍然保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached
选项即可
- 递归删除【与Linux中类似】
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件
git rm –r [dir]
该语句会删除 dir 目录下的所有文件和子目录。
移动或重命名工作区文件
- 移动或重命名一个文件、目录或软连接
git mv [file] [newfile]
- 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:
git mv -f [file] [newfile]
恢复或撤销文件的更改
该命令作用包括还原文件到最新提交的状态、丢弃未暂存的更改、丢弃已暂存但未提交的更改等。
- 还原文件到最新提交的状态
git restore <file>
该命令可以将指定文件 <file> 恢复到最新的提交状态,丢弃所有未提交的更改
- 还原文件到暂存区的状态
如果你已经使用 git add 将文件添加到暂存区,但希望撤销这些更改,可以使用这个命令:
git restore --staged <file>
以上命令将文件 <file> 恢复到暂存区的状态,但不影响工作目录中的文件。
- 还原全部更改
以下命令将还原所有未提交的更改,包括工作目录和暂存区的更改:
git restore .
使用这个命令要谨慎,因为它会清除所有未提交的修改。
- 还原文件到指定提交的状态
如果你想将文件 <file> 恢复到特定提交 <commit> 的状态,可以使用以下命令:
git restore --source=<commit> <file>
这个命令在需要查看历史状态或将文件还原到历史版本时非常有用。
- 交互式还原
以下命令允许你以交互方式选择要还原或保留的更改:
git restore -i
执行这个命令它会打开一个交互式界面,让你选择如何处理每个更改。
git restore 的目标是提供一种更直观、易于理解的方式来管理文件的状态,它的引入使得 Git 用户能够更容易地处理不同阶段的更改,从而提高了工作流的效率。
注意
git restore 是 Git 2.23 版本引入的一个命令,如果你使用的是较早版本的 Git,可能无法使用 git restore 命令,但你仍然可以使用 git checkout 等命令来进行类似的操作。