正文
git 是一个常用的代码管理工具,但大家可能更多的是停留在使用上(而且是那一种,可视化界面,点点点的形式),甚至不知道各个命令的具体意义,接下来就扫扫盲吧。
git init
。创建一个名为 .git
的子目录,其中包含初始化的 Git 仓库中所有不可或缺的初始化文件。它们是 Git 仓库的“骨干”。需要明确的是,这个命令仅仅是进行初始化操作,项目中的文件没有被跟踪。
git clone
。从 Git 仓库复制一个已存在的项目到本地。复制涵盖的内容是该 Git 仓库中几乎所有的数据。而不仅仅是复制工作中的文件。当执行 git clone
命令的时候,默认配置是将远程 Git 仓库中所有文件的每个版本进行拉取。
Git 仓库的工作目录中的每一个文件都具备两种状态之一,这两种状态是已跟踪
和未跟踪
:
已跟踪的文件
是指已被纳入版本控制的文件,在上一次快照中,存在记录,在工作一段时间后,状态可能是未修改
、已修改
或已放入暂存区
。- 在 Git 仓库的工作目录中,除已跟踪文件以外,其余的都属于
未跟踪文件
,这些未跟踪文件既不存在于上次快照记录中,又没有被放入暂存区。 - 在第一次复制某个 Git 仓库的时候,工作目录中的所有文件都处于
已跟踪状态
,并处于未修改状态
。 - 在文件被编辑后,由于自上次提交后做了修改,因此 Git 将这些文件标记为
已修改
。在这个过程中,逐步将这些修改过的文件放入暂存区,然后提交所有已暂存的修改文件,这就是提交更新的一个循环。
git add
。是个多功能指令,可以跟踪新文件,可以把已跟踪的文件放入暂存区,还可在合并时把有冲突的文件标记为“已解决”状态。这里,我们将 git add
命令理解为“添加内容到下一次提交中”,而不是“将一个文件添加到项目中”。
git rm
。想要从 Git 仓库中删除某个特定文件,就需要先从已跟踪文件清单中清除,再完成提交动作。我们可以通过git rm
命令完成这项任务,并附带从目录中删除这个指定文件。如果只是简单地从工作目录中手动删除某个特定文件,那么,运行 git status
命令时,就会在“Changes not staged for commit” 部分看到先关状态。
如果使用 clone 命令复制一个仓库,那么该命令会自动将这个仓库添加为远程 Git 仓库并默认以 origin
为简写名称。
git push [remote-name] [branch-name]
。将 master 分支推送至 origin 服务器时,该命令可以将所做的备份推送到远程 Git 仓库,相关命令如下:
git push origin master
上述命令要求复制的服务器具备写入权限,且之前无推送动作,只有这样,该命令才能生效。当同时有复制动作时,非首次推送动作会被拒绝,必须先将上次推送的数据拉取并将其合并,这样才能推送。