免费和开源, Git是一个分布式版本控制系统,使协作软件项目更易于管理。许多项目在 Git 存储库中维护他们的文件,像 GitHub 这样的网站已经使代码的共享和贡献变得简单、有价值和有效。
如果您已登录,则必须在 https://github.com/ 上创建一个免费帐户。
创建存储库的副本
为了在开源项目上工作,您首先需要制作自己的存储库副本。为此,您应该分叉存储库,然后克隆它,以便您拥有本地工作副本。
分叉存储库
我们可以通过单击页面右上角的“分叉”按钮从 Github 分叉任何公共存储库,在您的用户图标下方:
现在存储库将分叉到您的 Github 帐户。
克隆存储库
要制作自己想要贡献的存储库的本地副本,首先,在 VS Code 中打开一个文件夹。
按照以下说明复制 git 存储库的 URL:
现在在 VS Code 终端中编写以下命令:
$ git clone https://github.com/pallavisharma26/Node.js-Expess-MongoDB-CRUD.git
现在我们有了代码的本地副本,我们可以继续创建一个新的分支来处理代码。
创建一个新分支
项目存储库的默认主分支通常称为主分支。一个常见的最佳实践是将 master 分支上的任何内容都视为可部署以供其他人随时使用。
现在,我们将使用 git branch 命令创建我们的新分支。确保您对其进行描述性命名,以便参与该项目的其他人了解您正在从事的工作。
$ git branch new-branch
现在我们的新分支已经创建,我们可以使用git checkout命令切换以确保我们正在该分支上工作:
$ git checkout new-branch
运行此命令时,您将获得输出:
Switched to branch ‘new-branch’
如果你想再次回到主人,那么命令是:
$ git checkout master
此时,您现在可以修改现有文件或向您自己分支上的项目添加新文件。
修改现有文件或向项目添加新文件后,您可以将其添加到本地存储库,我们可以使用git add命令执行此操作:
$ git add filename.md
如果要添加所有修改或添加的文件,请使用以下命令:
$ git add .
现在在 git commit命令的帮助下提交您在存储库中所做的更改。
$ git commit
如果您有一条非常短的消息,我们可以使用-m标志和引号中的消息记录该消息
$ git commit -m “your messages”
如果你想配置你的默认文本编辑器,你可以使用 git config 命令,并将 nano 设置为默认编辑器,例如:
$ git config –global core.editor “nano”
保存并退出提交消息文本文件后,您可以使用以下命令验证 git 将提交的内容:
$ git status
完成所有这些之后,现在可以将我们的更改推送到您的分叉存储库的当前分支:
$ git push –set-upstream origin new-branch
上面完成的所有命令的输出是:
更新本地存储库
当您在同一个项目上与许多开发人员合作时,让您的本地存储库与项目保持同步很重要,因为您不想对会导致冲突的代码发出拉取请求。要保持代码库的本地副本更新,您需要同步更改。
为 Fork 配置远程
远程存储库使您可以在 Git 项目上与其他人协作。每个远程存储库都是托管在 Internet 或您有权访问的网络上的项目的一个版本。每个远程存储库都应该可供您以只读或读写方式访问,具体取决于您的用户权限。
$ git remote -v
输出将是:
origin https://github.com/pallavisharma26/Node.js-Expess-MongoDB-CRUD.git (fetch)
origin https://github.com/pallavisharma26/Node.js-Expess-MongoDB-CRUD.git (push)
接下来,我们将为我们指定一个新的远程上游存储库以与 fork 同步。这将是我们分叉的原始存储库。我们将使用 git remote add 命令执行此操作。
$ git remote add upstream https://github.com/CodAffection/Node.js-Expess-MongoDB-CRUD.git
我们可以通过再次使用存储库目录中的 git remote -v命令来验证我们的指向上游存储库的远程指针是否已正确添加:
$ git remote -v
输出将是:
origin https://github.com/pallavisharma26/Node.js-Expess-MongoDB-CRUD.git (fetch)
origin https://github.com/pallavisharma26/Node.js-Expess-MongoDB-CRUD.git (push)
stream https://github.com/CodAffection/Node.js-Expess-MongoDB-CRUD.git(fetch)
stream https://github.com/CodAffection/Node.js-Expess-MongoDB-CRUD.git(push)
现在您可以在命令行上引用上游而不是编写整个 URL,并且您已准备好将您的 fork 与原始存储库同步。
同步叉
为了同步我们的分支,从终端窗口中本地存储库的目录中,我们将使用 git fetch 命令从流存储库中获取分支及其各自的提交。由于我们使用短名称“upstream ”来引用上游存储库,因此我们将其传递给命令:
$ git fetch upstream
输出将是:
From https://github.com/CodAffection/Node.js-Expess-MongoDB-CRUD.git
* [new branch] master -> upstream/master
现在,对 master 分支的提交将存储在名为 upstream/master 的本地分支中。
让我们切换到我们存储库的本地 master 分支:
$ git checkout master
我们现在将在原始存储库的 master 分支中进行的任何更改合并,我们将通过我们的本地上游/master 分支访问我们的本地 master 分支:
$ git merge upstream/master
在此之后,它开始更新所做的更改。
创建拉取请求
现在,如果你打开一个公共存储库,你会得到:
单击“比较和拉取请求”后,您将获得:
GitHub 会提醒您,您可以合并两个分支,因为没有竞争代码。您应该添加标题、评论,然后按“创建拉取请求”按钮。