在关于 Git 入门的 本系列文章的第一篇中,我们创建了一个简单的 Git 仓库,并通过将其连接到我们的计算机,向其中添加了一个文件。在本文中,我们将学习关于 Git 的其他一些知识,即如何在 Git 仓库中克隆(下载)、修改、添加和删除文件。
让我们进行一些克隆
假设你已经在 GitHub 上有一个 Git 仓库,并且你想要从中获取你的文件——也许你丢失了计算机上的本地副本,或者你正在另一台计算机上工作,并且想要访问你仓库中的文件。你应该怎么做?从 GitHub 下载你的文件?没错!在 Git 术语中,我们称之为“克隆”。(你也可以将仓库下载为 ZIP 文件,但我们将在本文中探讨克隆方法。)
让我们克隆我们在上一篇文章中创建的名为 Demo 的仓库。(如果你尚未创建 Demo 仓库,请返回到那篇文章并完成这些步骤,然后再继续此处。)要克隆你的文件,只需打开你的浏览器并导航到 https://github.com/<your_username>/Demo
(其中 <your_username>
是你自己的仓库名称。例如,我的仓库是 https://github.com/kedark3/Demo
)。导航到该 URL 后,单击“Clone or download”按钮,你的浏览器应该看起来像这样

opensource.com
如上所示,“Clone with HTTPS”选项已打开。从该下拉框中复制你的仓库 URL (https://github.com/<your_username>/Demo.git
)。打开终端并键入以下命令,将你的 GitHub 仓库克隆到你的计算机
git clone https://github.com/<your_username>/Demo.git
然后,要查看 Demo
目录中的文件列表,输入以下命令
ls Demo/
你的终端应该看起来像这样

opensource.com
修改 文件
现在我们已经克隆了仓库,让我们修改文件并在 GitHub 上更新它们。首先,逐个输入以下命令,将目录更改为 Demo/
,检查 README.md
的内容,将新的(附加)内容回显到 README.md
,并使用 git status
检查状态
cd Demo/
ls
cat README.md
echo "Added another line to REAMD.md" >> README.md
cat README.md
git status
如果你逐个运行这些命令,终端将如下所示

opensource.com
让我们看一下 git status
的输出,并了解它的含义。 不必担心 显示
On branch master
Your branch is up-to-date with 'origin/master'.".
因为我们尚未学习它。下一行显示:Changes not staged for commit
;这告诉你,下面列出的文件未标记为准备好(“暂存”)以进行提交。如果你运行 git add
,Git 会获取这些文件并将它们标记为 Ready for commit
;换句话说(Git 术语),Changes staged for commit
。 在我们执行此操作之前,让我们使用 git diff
命令检查我们正在添加到 Git 的内容,然后运行 git add
。
这是你的终端输出

opensource.com
让我们分解 这个 输出
diff --git a/README.md b/README.md
是 Git 正在比较的内容(即,在本例中为README.md
)。--- a/README.md
将显示从文件中删除的任何内容。+++ b/README.md
将显示添加到你的文件中的任何内容。- 添加到文件中的任何内容 都以绿色文本打印,并在行首带有 + 号。
- 如果我们删除了任何内容,它将以红色文本打印 ,并在开头带有 - 符号。
- Git 状态现在显示
Changes to be committed:
并列出文件名(即README.md
)以及该文件发生了什么(即,它已被modified
并准备好提交)。
提示:如果你已经运行了 git add
,现在你想查看有什么不同,通常的 git diff
不会产生任何结果,因为你已经添加了该文件。相反,你必须使用 git diff --cached
。它将显示 Git 被告知要添加的文件当前版本和先前版本之间的差异。你的终端输出将如下所示

opensource.com
将文件 上传到你的仓库
我们已经使用一些新内容修改了 README.md
文件,现在是时候将其上传到 GitHub 了。
让我们提交更改并将它们推送到 GitHub。运行
git commit -m "Updated Readme file"
这告诉 Git 你正在“提交”你“添加”到其中的更改。你可能还记得本系列文章的第一部分,添加消息来解释你在提交中所做的事情很重要,这样你以后在查看 Git 日志时就知道它的目的。(我们将在下一篇文章中更详细地讨论这个主题。)Updated Readme file
是此提交的消息——如果你不认为这是 解释你所做事情的最合乎逻辑的方式,请随意以不同的方式编写你的提交消息。
运行 git push -u origin master
。这将提示你输入用户名和密码,然后将文件上传到你的 GitHub 仓库。刷新你的 GitHub 页面,你应该看到你刚刚对 README.md
所做的更改。

opensource.com
终端的右下角显示我已提交更改,检查了 Git 状态,并将更改推送到了 GitHub。Git 状态显示
Your branch is ahead of 'origin/master' by 1 commit
(use "git push" to publish your local commits)
第一行指示本地仓库中有一个提交,但 origin/master(即 GitHub 上)中不存在。下一行指示我们将这些更改推送到 origin/master,而这正是我们所做的。(要回忆一下“origin”在这种情况下意味着什么,请参阅本系列文章的第一篇。我将在下一篇文章中解释“master”的含义,届时我们将讨论分支。)
向 Git 添加新文件
现在我们已经修改了一个文件并在 GitHub 上更新了它,让我们创建一个新文件,将其添加到 Git,并将其上传到 GitHub。 运行
echo "This is a new file" >> file.txt
这将创建一个名为 file.txt
的新文件。
如果你 cat
输出它
cat file.txt
你应该看到文件的内容。现在运行
git status
Git 报告说你的仓库中有一个未跟踪的文件(名为 file.txt
)。这是 Git 告诉你,你的计算机上的仓库目录中有一个新文件,你尚未告知 Git,并且 Git 不会跟踪你对该文件所做的任何更改。

opensource.com
我们需要告诉 Git 跟踪此文件,以便我们可以提交它并将其上传到我们的仓库。这是执行此操作的命令
git add file.txt
git status
你的终端输出是

opensource.com
Git 状态告诉你,file.txt
有 要提交的更改,并且它是一个 new file
给 Git,Git 之前并不知道它。现在我们已经将 file.txt
添加到 Git,我们可以提交更改并将其推送到 origin/master。

opensource.com
Git 现在已将这个新文件上传到 GitHub;如果你刷新你的 GitHub 页面,你应该在 GitHub 上的 Git 仓库中看到新文件 file.txt
。

opensource.com
通过这些步骤,你可以创建任意数量的文件,将它们添加到 Git,并提交并将它们推送到 GitHub。
从 Git 中删除文件
如果我们发现我们犯了一个错误并且需要从我们的仓库中删除 file.txt
怎么办?一种方法是使用以下命令从仓库的本地副本中删除文件
rm file.txt
如果你现在执行 git status
,Git 会说有一个文件 not staged for commit
,并且它已从仓库的本地副本中 deleted
。如果我们现在运行
git add file.txt
git status
我知道我们正在删除文件,但我们仍然运行 git add
,因为我们需要告诉 Git 我们正在进行的更改。当我们向 Git 添加新文件、修改现有文件的内容并将其添加到 Git,或从 Git 仓库中删除文件时,可以使用 git add
。实际上,git add
会考虑所有更改并将这些更改暂存以进行提交。如有疑问,请仔细查看下面终端屏幕截图中每个命令的输出。
Git 将告诉我们已删除的文件已暂存以进行提交。一旦你提交此更改并将其推送到 GitHub,该文件也将从 GitHub 上的仓库中删除。通过运行以下命令执行此操作
git commit -m "Delete file.txt"
git push -u origin master
现在你的终端看起来像这样

opensource.com
你的 GitHub 看起来像这样

opensource.com
现在 你已经知道如何从你的仓库中克隆、添加、修改和删除 Git 文件。本系列文章的下一篇将探讨 Git 分支。
4 条评论