Git是一个分布式版本控制系统,用于跟踪和管理项目代码的变更。它可以记录每次代码提交的详细信息,并支持多人协作开发。Git能够有效地管理和追踪代码的修改历史,使团队成员可以协同工作、并行开发、合并代码,并轻松回溯到不同的版本。通过Git,开发者可以在本地仓库进行代码的修改和提交,而不需要依赖中央服务器。Git的特点包括分布式架构、高效性能、强大的分支管理、灵活的工作流程等,使其成为广泛使用的版本控制系统之一。
Git和SVN是两种常见的版本控制系统,它们在设计和工作方式上有一些重要区别。
分布式 vs 集中式:
Git是分布式版本控制系统,每个开发者都有完整的代码库副本,可以在离线状态下工作。每个开发者都可以进行本地提交、分支操作等,最后再将修改推送到远程仓库。这使得团队成员之间的协作更加灵活,并且没有单点故障。
SVN是集中式版本控制系统,代码库只存在于中央服务器上,开发者需要与服务器交互才能进行版本控制操作。开发者需要依赖服务器来获取代码更新和提交代码,这对于大型项目和远程团队可能会增加网络延迟和依赖性。
性能:
Git在处理大型项目和大量文件时通常比SVN更快速有效。由于每个开发者都有完整的代码库副本,所以大部分操作可以在本地完成,不需要频繁地与服务器进行通信。同时,在从远程仓库拉取代码时只传输差异部分,减少了网络传输负担。
SVN在大型项目和频繁提交的情况下可能会受到性能影响,因为所有的版本历史都存储在中央服务器上,提交和更新操作需要依赖服务器的性能和网络连接。
分支管理:
Git的分支管理功能非常强大灵活,支持轻松创建、合并和切换分支。每个分支可以独立进行开发,并且可以方便地合并到主干或其他分支。这使得团队成员可以同时处理多个任务,更好地组织和协调工作。
SVN的分支操作相对复杂一些,需要手动创建和合并分支,而且分支的管理是集中式的,需要与服务器进行交互。
版本号:
Git使用哈希值作为版本号,可以唯一标识每个代码提交。这使得每个提交都有一个唯一的标识,方便追踪和回溯代码历史。
SVN使用递增数字作为版本号,每次提交都会自动递增,但没有像Git那样唯一标识每个提交的能力。
总体来说,Git具有分布式架构、高效性能、强大的分支管理和灵活的工作流程等特点,适用于大型项目和分布式团队协作。SVN则更适用于小型项目和集中式团队协作,较为简单易用。选择使用哪种版本控制系统取决于具体的项目需求和团队情况。
1.3.Git工作流程
Git的工作流程通常包括以下几个主要步骤:
克隆(Clone)代码库:
开始一个新项目或参与一个已存在的项目,首先需要将远程代码库克隆到本地。使用git clone 命令可以在本地创建一个与远程代码库相同的副本。
修改代码:
在本地代码库中进行开发工作,对代码进行修改、添加新功能等操作。
提交代码:
将修改的代码提交(Commit)到本地代码库。使用git add 命令将指定文件添加到暂存区,然后使用git commit -m ""命令将暂存区的修改提交到本地代码库,并附上提交消息说明。
推送代码:
将本地代码推送(Push)到远程代码库,使得其他团队成员可以看到和获取最新的代码。使用git push命令将本地代码库的修改推送到远程代码库。
拉取代码:
如果有其他人对同一份代码进行了修改,为了保持代码的同步,您可以执行拉取(Pull)操作,将远程代码库的最新代码拉取到本地。使用git pull命令可以从远程代码库拉取最新的代码更新。
以上是Git的基本工作流程,通过这些步骤,多人协作开发时可以更好地管理和追踪代码的变更,并确保团队成员之间的代码同步。同时,Git还提供了强大的分支管理功能,允许并行开发和合并不同的代码分支,从而进一步优化工作流程。
下载安装程序:
首先,您需要从Git官方网站(https://git-scm.com/)下载适用于您操作系统的Git安装程序。根据您的操作系统选择合适的版本(Windows、Mac、Linux等)。
运行安装程序:
下载完成后,运行Git安装程序。按照提示进行安装,可以接受默认设置,也可以根据个人需求进行自定义安装。
选择安装选项:
在安装过程中,您会看到一些选项供您选择。这些选项可能涉及安装路径、编辑器选择、环境变量等,您可以根据个人偏好进行选择和配置。
完成安装:
安装程序将会在您选择的安装目录中安装Git,并配置相关的环境变量和系统设置。安装完成后,您就可以使用Git命令行工具了。
验证安装:
打开命令行终端(或Git Bash),输入git --version命令,检查是否成功安装并显示当前Git的版本号。如果能够正常显示版本号,则说明Git已成功安装。
3.1.注册账号
使用Git进行代码上传和下载的流程如下:
上传代码:
在本地创建一个新的Git仓库,或者克隆(Clone)一个已存在的远程仓库到本地。
在本地进行代码修改和开发。
使用以下命令将修改的代码提交到本地仓库:
git add :将文件添加到暂存区。
git commit -m “”:提交暂存区的修改到本地仓库,并添加提交消息。
如果需要,可以使用git push命令将本地仓库的修改推送到远程仓库。这样其他团队成员就可以看到和获取最新的代码。
下载代码:
在本地选择一个目录,用于存储要下载的代码。
使用git clone 命令将远程仓库克隆到本地。是远程仓库的URL。
Git会自动将远程仓库的所有代码下载到指定的本地目录。您可以在本地对代码进行修改和开发。
更新代码:
如果有其他人对远程仓库进行了修改,为了保持代码同步,您可以执行拉取(Pull)操作,将远程仓库的最新代码拉取到本地。
使用git pull命令可以从远程仓库拉取最新的代码更新。Git会自动合并远程分支和本地分支的代码。
通过使用Git进行上传和下载代码,团队成员可以方便地协作开发,并确保每个人都拥有最新的代码。同时,Git还提供了强大的分支管理功能,允许并行开发和合并不同的代码分支。这样可以更好地组织和协调工作,提高团队的整体效率。
1.git冲突的场景(主要演示情景三)
情景一:多个分支代码合并到一个分支时;
情景二:多个分支向同一个远端分支推送代码时;
情景三:同一分支,同一文件修改后的提交(即为多个程序员修改了同一个文件)
实际上,push操作和pull操作其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支,所以这两个过程中也可能存在冲突。
分别在同一项目的两个不同本地仓库修改a.txt并提交,则会报出以下错误:
! [rejected] master -> master (fetch first) error: failed to push some refs to ’ 。。。’
拒绝错误:无法推送某些引用
2.解决方案
1.将代码copy出来
2.先从远程仓库pull代码至本地,再修改冲突代码,
注1:git status查看仓库状态,会显示红色的错误提示消息“ both modified: a.txt”
3.打开a.txt,手动修改冲突部分的代码
<<<<<<< HEAD
ww add 18:42 from e:\temp\test1
=======
ls add 123 at 18:17 from d:\temp\test1
>>>>>>> 63c73e5933bb7d3d2bed04b06c37a74602d65b2e
注1:<<<<<<< HEAD >>>>>>>之间的即为冲突的代码,手动修改即可
3.依次add/commit/push代码至远程仓库
commit执行完生,重新查看仓库状态git status,红色的错误提示消息“ both modified: a.txt”
已经没有,表示冲突已解决
初始化:
git init:在当前目录初始化一个新的Git仓库。
克隆和远程操作:
git clone :克隆(Clone)远程仓库到本地。
git remote add :添加一个远程仓库。
git pull :从远程仓库拉取最新的代码更新。
git push :将本地的代码推送到远程仓库。
添加和提交:
git add :将文件添加到暂存区。
git commit -m “”:提交暂存区的修改到本地仓库,并添加提交消息。
分支管理:
git branch:查看分支列表。
git branch
git checkout :切换到指定分支。
git merge :合并指定分支到当前分支。
git stash:将当前工作保存到一个临时存储区,以便切换分支或恢复后再应用。
查看和比较:
git status:查看文件状态。
git log:查看提交历史记录。
git diff:查看文件的修改差异。
git show :显示特定提交的详细信息。