Git使用指南
文章目录
- 一、Git 与 GitHub 是什么?
- 1.1、Git:版本控制系统(Version Control System,VCS)
- 1.2、GitHub:代码托管平台
- 1.3、Git 与 GitHub 的协同作用
- 二、Git使用指南
- 2.1、Git下载与安装
- 2.2、Git仓库操作
- 2.3、Git分支管理
- 2.4、Git 与 GitHub 协同使用
- 三、在Pycharm中使用Git
一、Git 与 GitHub 是什么?
Git 是一个离线工具(在本地计算机上),而 GitHub 是一个在线平台(Web端)。
Git
:(1)是一个分布式版本控制系统,用于跟踪和管理代码库的不同版本。开发人员使用 Git 在代码库的不同版本之间进行版本控制,记录更改历史,分支和合并代码。
(2)本地版本控制:可以在本地计算机上创建一个完整的代码库,允许开发人员在没有网络连接的情况下对代码进行版本控制和管理。最后将其与远程存储库同步(如:GitHub)。
(3)命令行工具:使用命令行来执行各种版本控制操作。
GitHub
:(1)是一个基于互联网的代码托管平台,用于协作开发和托管 Git 仓库。开发人员可以将他们的 Git 代码库存储在云端,与他人共享、协作和管理代码。
(2)远程协作和协同开发:提供了一种集中式协作环境,允许多个开发人员协同工作,共享代码库,并通过 Pull Request(PR)进行代码审查、合并代码。它也提供了问题跟踪、维基文档等协作工具。
(3)Web界面:提供了一个基于Web的界面,让开发人员能够轻松地浏览代码、提交问题、管理项目和与其他开发人员互动。
1.1、Git:版本控制系统(Version Control System,VCS)
版本控制系统:用于跟踪和管理文件和代码的更改,以确保团队协作、备份和版本管理。
以下是一些常见的版本控制系统:
Git
: Git 是一种分布式版本控制系统,由Linus Torvalds创建。它是最流行的版本控制系统之一,用于跟踪和管理代码的更改。Git 允许开发者在本地计算机上维护代码的不同版本,然后将更改推送到远程 Git 存储库中。GitHub 和 GitLab 等平台提供了 Git 存储库的托管服务。Subversion (SVN)
: SVN 是一种集中式版本控制系统,也被称为Subversion。它以稳定性和对二进制文件的处理能力而闻名,适用于大型项目和企业级应用程序。SVN 使用中央服务器来存储代码库,开发者从服务器检出代码,然后将更改提交回服务器。
TortoiseSVN
是 Subversion 的一个专为 Windows 桌面环境设计的图形用户界面(GUI)客户端工具,它旨在以用户友好的方式实现与 Subversion 服务器和存储库的交互,从而使用户能够轻松执行 SVN 操作,无需使用命令行。- Mercurial: Mercurial 是另一种分布式版本控制系统,类似于Git。它使用简单的命令和工作流程,适用于小型到中型项目。
- Perforce (Helix Core): Perforce 是一种集中式版本控制系统,特别适用于大型游戏开发和多媒体项目。它具有强大的二进制文件支持和高性能。
- IBM Rational ClearCase: ClearCase 是一个集中式和分布式混合的版本控制系统,适用于大型企业应用程序和硬件开发。
- Apache Subversion (Bloodhound): Apache Subversion 是一个开源版本控制系统,是SVN的开源版本。它提供了与SVN类似的功能。
- Microsoft Team Foundation Server (TFS): TFS 是由Microsoft提供的版本控制和应用程序生命周期管理工具,用于Windows平台上的.NET开发。
- AWS CodeCommit: AWS CodeCommit 是亚马逊 Web 服务 (AWS) 的代码托管服务,支持 Git 版本控制。
- Google Cloud Source Repositories: 这是 Google Cloud 的代码托管服务,允许开发者在 Google Cloud 上托管他们的 Git 存储库。
- SourceForge: SourceForge 是一个老牌的开源项目托管平台,提供版本控制、问题跟踪、论坛和邮件列表等工具。
1.2、GitHub:代码托管平台
代码托管平台:用于存储、管理和协作开发源代码的在线服务。这些平台提供了版本控制、团队协作、代码审查、问题跟踪、自动构建和部署等工具,使开发团队能够更容易地协作和管理项目。
国外代码托管平台:
GitHub
: GitHub 是全球最大的代码托管平台,提供强大的 Git 存储库托管、协作工具、CI/CD支持和问题跟踪。它广泛用于开源和私有项目。GitLab
: GitLab 提供了类似 GitHub 的功能,包括 Git 存储库托管、CI/CD、问题跟踪等。有社区版和企业版。- Bitbucket: Bitbucket 是由 Atlassian 提供的代码托管平台,支持 Git 和 Mercurial 版本控制系统。它还提供了协作和CI/CD工具。
- SourceForge: SourceForge 是老牌的开源项目托管平台,提供代码托管、问题跟踪、邮件列表、论坛等工具。
- Azure DevOps: Azure DevOps(以前称为Visual Studio Team Services或VSTS)是由微软提供的综合开发工具,包括代码托管、CI/CD、问题跟踪、故事板等。
- Launchpad: Launchpad 是由Canonical提供的代码托管平台,主要用于 Ubuntu 项目。它提供了代码托管、问题跟踪、蓝图等功能。
- Google Cloud Source Repositories: 这是 Google Cloud 的代码托管服务,允许开发者在 Google Cloud 上托管他们的 Git 存储库。
- AWS CodeCommit: AWS CodeCommit 是亚马逊 Web 服务 (AWS) 的托管服务,用于存储 Git 存储库。
- Fossil: Fossil 是一种分布式版本控制系统,提供存储库托管和问题跟踪。
- Buddy: Buddy 提供 CI/CD 和自动化部署,支持多个代码托管平台,如 GitHub、GitLab 和 Bitbucket。
国内代码托管平台:
Gitee(码云)
: Gitee 是中国的代码托管平台,提供 Git 存储库托管、协作工具、CI/CD和中文支持。- Coding.net: Coding.net 是中国的开发者社区和代码托管平台,提供代码托管、CI/CD、问题跟踪等功能。
- Tencent Dev Cloud (腾讯云开发者平台): 腾讯云开发者平台提供了代码托管、CI/CD、云资源等功能,与腾讯云云计算服务集成。
- OSChina (开源中国): 开源中国是一个综合开源社区,提供代码托管、开源项目、博客和论坛。
- 码市(MaShi): 码市是中国的开发者平台,提供代码托管、自由职业者服务和项目管理。
- CSDN Code (CSDN码云): CSDN码云是CSDN的代码托管平台,提供代码托管、CI/CD等功能。
- Aliyun Code (阿里云Code): 阿里云Code是阿里云的代码托管平台,提供代码托管和CI/CD。
- 开源中国 Gitee: 开源中国也提供 Gitee 托管服务,支持 Git 存储库、问题跟踪和CI/CD。
- ChinaGit: ChinaGit 是中国的 Git 存储库托管平台,提供代码托管和协作工具。
- DoCoding: DoCoding 是中国的开发者社区,提供代码托管、开源项目和技术文章。
1.3、Git 与 GitHub 的协同作用
开发人员使用 Git 在本地进行版本控制,然后将 Git(代码库) 与 GitHub(代码托管平台) 同步,以便与其他人协作、分享代码和备份代码。因此,Git 和 GitHub 具有不同的功能和用途,但通常一起使用。
二、Git使用指南
推荐专栏 对Git进行了详细介绍,故没有重新整理。在图形化教程学习之后,主要整合了一些资料以及完善的命令行语句。
2.1、Git下载与安装
Git 官方下载地址:https://git-scm.com/
Git 安装教程请看:https://blog.csdn.net/qq_52007481/article/details/127145995
- Git 是一个免费开源的分布式版本控制系统,旨在快速高效地处理从小到大的项目。
- Git 易于学习,占用空间小,性能快如闪电。它凭借廉价的本地分支、方便的暂存区域和 多个工作流程等功能,超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具。
Git 仓库未初始化之前,当前处于一个普通的工作目录状态,没有与 Git 相关的版本控制。以下是一些特征:
(1)没有.git目录: 在工作目录中没有一个名为.git的隐藏目录。.git目录是 Git 仓库的核心,包含了所有的版本控制信息和配置。
(2)没有版本控制历史: 工作目录中的所有文件都是普通文件,没有先前的提交记录、分支或标签。
(3)没有配置:需要在初始化 Git 仓库之后设置 Git 用户名、电子邮件或其他设置。
(4)没有暂存区:需要使用git add将文件添加到暂存区,然后才能进行提交。
(5)没有提交历史: 没有提交过程,因此没有过去的提交记录。当运行
git init
命令初始化一个 Git 仓库,将在工作目录中创建.git目录,此时的项目将开始受到 Git 的版本控制,并可以使用 Git 的各种命令来管理和跟踪您的代码变化。Git 初始化的详细过程:选定需要Git仓库管理的文件夹,鼠标右击选择" Open Git Bash here ",在跳转的界面中输入命令git init。
2.2、Git仓库操作
图形化教程请看:https://blog.csdn.net/qq_52007481/article/details/127159401
"""
(1)初始化和配置
git init: 初始化一个本地Git仓库(将当前目录转化为一个Git仓库。)
(2)查看仓库状态
git status: 查看当前Git仓库中文件的状态,包括已修改、已暂存、未跟踪等信息。
(3)将修改后的文件添加到暂存区
git add <file>: 将修改后的(指定文件)添加到暂存区。
git add .: 将修改后的(所有文件)添加到暂存区(. 表示匹配所有文件)
(4)提交暂存区中的文件修改记录
git commit -m 'commit message': 提交暂存区中的(所有文件)修改记录,并附上提交信息。
git commit -m 'commit message' <file>: 提交暂存区中的(指定文件)修改记录,并附上提交信息。
(5)从Git仓库中移除指定文件
git rm <file>: 同时将其从暂存区和工作目录中删除(即移出版本控制)
git rm --cached <file>: 停止追踪指定文件,但保留文件在工作目录中(即保留版本控制)
git reset <file>: 从暂存区中取消对指定文件的暂存,但保留文件在工作目录中的更改。
git clean -f: 删除工作目录中未被跟踪的文件。
(6)查看提交历史日志
git log: 查看 Git 仓库的提交历史日志。
git reflog: 查看基础的 Git 仓库日志信息,包括 HEAD 移动的历史记录。
git show <commit>: 查看特定提交<commit>的详细信息和更改。
(7)比较差异
git diff: 比较工作目录中的文件和暂存区之间的差异。
"""
2.3、Git分支管理
图形化教程请看:https://blog.csdn.net/qq_52007481/article/details/127159387
"""
(1)列出所有分支
git branch: 列出当前 Git 仓库中的所有分支。
git branch -v: 列出所有分支,并显示它们的最后提交信息。
git branch --merged: 列出已经合并到当前分支的分支。
git branch --no-merged: 列出未合并到当前分支的分支。
(2)创新新的分支
git branch <name>: <name>是新分支的名称
(3)切换到指定分支
git checkout <name>: <name>是要切换到的分支的名称
git switch <name>: 与git checkout类似
(4)创建一个新分支并立即切换到它
git checkout -b <name>: <name> 是新分支的名称
git switch -c <name>: 与git checkout -b类似
(5)将指定分支合并到当前分支
git merge <name>: <name>是待合并分支的名称
(6)删除指定分支<name>
git branch -d <name>: 安全删除分支,只有当删除不会导致数据丢失时才会成功。如果分支中存在未合并的更改,该命令将阻止删除。
git branch -D <name>: 强制删除分支,即使存在未合并的更改。这将强制删除分支,潜在地导致数据丢失,因此谨慎使用。
"""
2.4、Git 与 GitHub 协同使用
图形化教程请看:https://blog.csdn.net/qq_52007481/article/details/127181194
"""
Git 远程操作:
(1) git clone <远程仓库URL>: 从远程仓库克隆一个副本到本地。
(3)远程仓库查看
git remote: 查看远程仓库的列表。
git remote -v: 查看远程仓库的详细信息,包括URL。
git remote show <远程仓库名称>: 查看指定的远程仓库的详细信息。
(3)远程仓库操作
git remote add <远程仓库名称> <远程仓库URL>: 添加一个新的远程仓库到配置中。
git remote rename <old_别名> <new_别名>: 重命名一个已配置的远程仓库。
git remote set-url <远程仓库名称> <新的远程仓库URL>: 修改已配置的远程仓库的URL。
git remote remove <远程仓库名称> 移除一个已配置的远程仓库。
git remote rm <远程仓库名称>: 移除一个已配置的远程仓库。
(4) git push <远程仓库名称> <分支名称>: 将本地分支的变更推送到远程仓库。
git push -u <远程仓库名称> <本地分支>: 将本地分支的代码推送到远程仓库,并将本地分支与远程分支关联起来。
git push <远程仓库名称> --delete <分支名称> 删除远程仓库上的一个分支。
(5) git fetch <远程仓库名称>: 从远程仓库获取最新的提交,但不合并到当前分支。
(6) git pull <远程仓库名称> <分支名称>: 从远程仓库获取最新的变更,并将其合并到当前分支。
################################################################
生成 SSH 密钥:
(7) ssh-keygen -t rsa -C <邮箱>: 用于生成 SSH 的公钥和私钥对,其中 -t rsa 指定使用 RSA 密钥, -C 后跟电子邮件地址用于标识密钥。
"""
三、在Pycharm中使用Git
Pycharm中使用Git
都2022年了,你还不会在PyCharm中使用Git ?