本文概述
- 1.克隆:团队入门
- 2.在Git中管理遥控器
- 3.在Git中分支
- 4.更新你的本地存储库:合并
- 5.处理冲突
- 6.与远程同步更改
- 7.云上的Git:分叉
- 8.通过拉取请求进行代码审查
- 9.了解Git工作流程
- 10.处理大文件:Git LFS
- 进一步阅读
你使用Git已有一段时间了, 但从未在团队环境中使用过吗?你是否熟悉Git的基础知识, 但不确定有多大团队在工作中使用Git?
在本文中, 我将介绍加入团队之前必须熟悉的基本Git技术。我已按照你为存储库做出逻辑排列的顺序列出了它们, 因为每个步骤的重要性至关重要。现在, 进入列表。
1.克隆:团队入门
如果你已将Git用于个人项目, 则可能只是从头开始初始化了一个项目, 然后随着时间的推移将其添加到其中。在使用现有代码库时, 第一步是将代码库克隆到本地系统中。这使你可以在存储库副本上工作, 而不会受到其他更改的任何干扰。
要克隆存储库, 请运行git clone命令, 然后输入存储库的路径:
git clone /path/to/repo
如果你的源代码不在同一系统中, 则可以SSH到远程系统并进行克隆:
git clone username@remote_system_ip:/path/to/repo/on/remote
如果要从Internet上的源进行克隆, 则只需添加URL:
git clone https://github.com/sdaityari/my_git_project.git
每当克隆存储库时, 你都可以选择多种协议连接到源。在上面的GitHub示例中, 我使用了https协议。
2.在Git中管理遥控器
克隆存储库后, 它仍将保留指向源的指针。该指针是Git中遥控器的一个示例。远程是指向同一存储库的另一个副本的指针。克隆存储库时, 将自动创建一个指向源的指针原点。
你可以通过运行以下命令来检查存储库中的远程服务器列表:
git remove -v
要添加远程, 可以使用git remote add命令:
git remote add remote_name remote_address
你可以使用git remote remove命令删除远程:
git remote remove remote_name
如果你想更改遥控器的地址, 可以使用set-url命令:
git remote set-url remote_name new_remote_address
3.在Git中分支
与其他版本控制系统相比, Git的最大优势在于其分支机构的强大功能。在我开始介绍分支的要点之前, 你可能想知道什么是分支。分支是指向存储库中的提交的指针, 而该提交又指向其前身。因此, 分支代表按时间顺序排列的提交列表。创建分支时, 实际上只能创建指向提交的新指针。但是, 从本质上讲, 它代表了一条新的, 独立的发展道路。
如果你一直在从事自己的项目, 那么你可能永远不会自觉使用过分支。默认情况下, Git使用master分支进行开发。任何新的提交都将添加到该分支。
对于Git来说, 分支对于项目中的工作分支是必要的。在同一时间, 可能有许多开发人员正在处理各种不同的问题。理想情况下, 这些问题应在不同的分支中进行处理, 以确保新代码在逻辑上分开, 直到代码复查和合并为止。
要检查分支列表和当前活动分支, 请运行以下命令:
git branch
要创建一个新分支, 请运行以下命令:
git branch new_branch
即使Git创建了一个新分支, 请注意你的活动分支仍然是旧分支。要在新分支中开始开发, 请运行以下命令:
git checkout new_branch
要创建一个新分支并更改活动分支, 请运行以下命令:
git checkout -b new_branch
要重命名当前分支, 请运行以下命令:
git branch -m new_renamed_branch
使用-D选项删除分支:
git branch -D new_renamed_branch
这是有关在Git中进行分支的详细指南。
4.更新你的本地存储库:合并
在检查完Git中分支的基础知识之后, 下一步的逻辑步骤是在完成问题处理后将分支合并到基础分支中。要合并分支, 请运行以下命令:
git checkout base_branch
git merge new_branch
虽然听起来很简单, 但是合并可能是Git中最耗时的过程, 因为它可能引起冲突。
5.处理冲突
假设你正在处理新分支中的文件。提交更改后, 你要求Git将新分支与基础分支合并。但是, 自创建新分支以来, 基本分支中同一文件的相同部分已经更新。 Git如何决定保留哪些更改以及丢弃哪些更改?
Git总是在合并过程中尽量不丢失任何数据。如果对同一文件的更改是在文件的不同部分进行的, 则可以通过保留两组更改来避免更改。但是, 如果Git无法决定保留哪些更改, 则会引发冲突。
发生冲突后, 在存储库上运行git status会显示两个合并分支中已修改文件的列表。如果你打开任何有冲突的文件, 则会注意到以下几行:
<<<<<<<< HEAD
...
...
========
...
...
>>>>>>>> new_branch
<<<<<<<< HEAD和========之间的文件部分包含该代码, 该代码存在于基础分支中。在new_branch分支中存在========和>>>>>>>> new_branch之间的代码行。合并代码的开发人员有责任决定应在合并中包含代码的哪一部分(或两部分的混合)。编辑后, 删除显示的三组行, 保存文件, 然后提交更改。
6.与远程同步更改
在讨论了如何在新分支中提交代码并将其与基础分支合并后, 现在让我们看看如何与远程代码同步。在将更改发布到远程服务器之前, 需要更新存储库的本地副本, 以说明自上次更新以来可能发生的任何更改。要从远程更新更新, 请运行以下命令:
git pull remote remote_branch:local_branch
git pull命令首先从远程下载数据, 然后按照命令中的指定与本地分支合并。从远程提取更改时也会发生冲突。在这种情况下, 冲突文件的最后一行将包含>>>>>>>> commit_hash而不是>>>>>>>> new_branch, 其中commit_hash将是要添加到分支中的提交的标识哈希。
要与远程服务器的最新代码合并后将更改发布到远程服务器, 请使用git push命令:
git push remote local_branch:remote_branch
7.云上的Git:分叉
如果你的团队在云上工作, 则会为你介绍一个称为fork的附加概念。分支是用户名下云中央存储库的副本。你具有对fork的写权限, 这是在不影响原始存储库的情况下进行更改的安全位置。
这影响了我上面介绍的技术步骤。你可以克隆分叉, 因此本地存储库的来源指向云上的分叉。那么你如何从最新的存储库获取更新?你需要手动添加一个远程上游, 它指向原始存储库。
虽然你可以轻松地将更改发布到fork中, 但是如何将新代码接受到原始存储库中?这将我们带入下一步。
8.通过拉取请求进行代码审查
拉取请求是将代码从一个分支合并到另一个分支的请求。自从Git的云服务开始流行以来, 这个概念就不断发展。请求请求总结了两个相关分支之间的比较, 并引发了开发人员和组织管理员之间的讨论。
在可以合并之前, 代码审查可能最终导致更多更改。当管理员对更改感到满意时, 可以将其与存储库合并。
9.了解Git工作流程
当你单独处理单个项目时, 可能只使用一个分支。不知不觉中, 你将遵循集中式或中继工作流程, 其中所有更改都在一个分支上进行。
下一个更复杂的工作流程是功能分支工作流程, 其中将单个分支归因于每个功能或错误修复。没有开发直接发生在主分支或开发分支上。
涵盖多种情况的Git工作流程是Gitflow工作流程。它具有用于开发, 功能, 发行版和修补程序的独立分支。
这是有关Git工作流程的详细指南。
10.处理大文件:Git LFS
尽管Git在处理文本文件方面做得很出色, 但它无法跟踪二进制文件和可执行文件中的更改。虽然你可以将此类文件添加到Git, 但可能会导致存储库很大, 并导致提交数量增加。
解决方案是使用Git大文件存储, 它通过Git处理大型二进制文件。该工具将这些文件存储在云中, 并用文本指针替换它们。这是使用Git LFS跟踪Photoshop设计文件的一种实现。
进一步阅读
在本文中, 我讨论了各种Git技术, 这些技术在首次加入团队时可能会对你有所帮助。希望对你的未来有所帮助。我错过了什么吗?在Twitter上告诉我!
为了更深入地了解Git, 请查看以下资源:
- 快速入门Git:简洁的指南, 可让你在一个周末内快速掌握。
- 专业Git:更深入的了解, 将带你进入Git精通的道路。
评论前必须登录!
注册