尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Git安装与入门:从零开始掌握分布式版本控制

Git安装与入门:从零开始掌握分布式版本控制 1. 从“为什么需要Git”开始聊起如果你刚开始接触编程或者准备进入软件开发这个行当那么“Git”这个名字你肯定绕不过去。它就像一个空气一样的存在无处不在却又常常让新手感到困惑。很多人第一次接触Git可能就是在某个教程里看到一句“先安装Git”然后就去搜索“git安装”照着步骤点点点装完了事。但装完之后面对那个黑乎乎的终端或者Git Bash敲下git --version看到版本号后接下来该干嘛往往就卡壳了。所以这篇内容我们不只讲“怎么装”更要聊聊“为什么装”以及“装完之后第一步该做什么”。Git本质上是一个分布式版本控制系统。这个名词听起来有点唬人我们拆开来看。想象一下你正在写一份重要的报告或者论文你可能会这样操作写完初稿保存为“报告_v1.docx”修改了一些内容另存为“报告_v2.docx”导师提了意见再另存为“报告_最终版.docx”最后交稿前又改了点成了“报告_最终版_不改了.docx”。很快你的文件夹里就堆满了各种版本你自己都分不清哪个是最新的哪个是改过什么的。这就是“版本控制”要解决的问题——帮你清晰、高效地管理文件的所有修改历史。而Git的“分布式”意味着它比传统的“集中式”版本控制系统比如SVN更强大。在集中式系统里历史记录只存放在中央服务器上一旦服务器挂了所有人的工作都可能面临风险。而Git则不同每个参与者的电脑上都有一个完整的仓库副本包含了全部的历史记录。这就像不仅图书馆中央服务器有全套百科全书你家里本地也有一套一模一样的。你可以随时在家查阅、修改然后再把修改同步给图书馆。这种设计带来了极强的灵活性和可靠性也成为了当今开源项目和团队协作的绝对主流工具。因此安装Git是你开启现代软件开发之旅的第一块基石。无论是想参与开源项目、在团队中协作还是仅仅想更好地管理自己的个人代码、文档甚至配置文件Git都是你必须掌握的工具。接下来我们就从最实际的步骤开始手把手带你完成安装并迈出使用的第一步。2. 跨越平台Windows、macOS与Linux的安装选择Git是跨平台的这意味着在主流操作系统上你都能使用它。但不同平台的安装方式和“风味”略有不同了解这些差异能帮你选择最适合自己的入口。2.1 Windows平台Git for Windows 是首选对于Windows用户最官方、最完整的解决方案就是去 Git 官网 下载Git for Windows安装包。这里有个关键点这个安装包提供的不仅仅是Git核心程序它还是一个完整的软件套件。当你运行安装程序时它会询问你一系列配置选项这里有几个决定体验的关键选择选择默认编辑器这是你未来编写提交信息commit message时用的工具。默认是Vim一个功能强大但学习曲线陡峭的编辑器。如果你是纯新手强烈建议在这里下拉选择“Use Visual Studio Code as Gits default editor”或者“Notepad”等你更熟悉的编辑器这能避免你第一次提交时就卡在Vim里不知如何退出。调整PATH环境这是最重要的选项之一。它决定了你如何在命令行中使用Git。Use Git from Git Bash only最安全的选择。Git命令只能在它自带的“Git Bash”终端中使用。不会影响系统原有的命令行环境。Git from the command line and also from 3rd-party software推荐大多数用户选择此项。它会将Git添加到系统的PATH环境变量中。这意味着你不仅可以在Git Bash里用也可以在Windows自带的CMD命令提示符或者PowerShell里直接输入git命令非常方便。Use Git and optional Unix tools from the Command Prompt这个选项会将Git和一些Unix工具覆盖到CMD路径中可能会与系统原有命令冲突一般不推荐。选择HTTPS后端默认的“OpenSSL”就行。另一个选项“Windows Secure Channel”在某些严格的企业网络环境中可能有用但普通用户无需关心。配置行尾转换这是为了处理WindowsCRLF和Linux/macOSLF系统换行符差异的。对于跨平台协作的项目建议选择“Checkout Windows-style, commit Unix-style line endings”。这样在你电脑上签出的文件会是CRLFWindows风格但提交到仓库时会被自动转换为LFUnix风格保证仓库内的一致性。安装完成后你可以在开始菜单找到“Git”文件夹里面会有“Git Bash”、“Git CMD”和“Git GUI”。Git Bash是最常用的它提供了一个模拟Linux终端的环境支持很多常用的Unix命令如ls,cat,grep体验比原生CMD好很多。2.2 macOS平台多种优雅的安装方式macOS用户的选择很丰富因为系统本身基于Unix与Git天然亲和。Homebrew首选如果你是一名开发者大概率已经安装了Homebrew这个强大的包管理器。那么安装Git就是一行命令的事brew install git。Homebrew会自动处理依赖和更新是最推荐的方式。Xcode Command Line Tools如果你安装了Xcode或者曾经在终端里执行过需要编译器的命令比如git或make系统可能会提示你安装命令行工具。这个工具集里就包含了Git。你可以在终端中直接输入git如果未安装系统会引导你安装。官方安装包和Windows一样你也可以从Git官网下载macOS的.pkg安装包进行图形化安装适合不熟悉命令行的用户。2.3 Linux平台包管理器一键搞定Linux是Git的“老家”安装最为简单。几乎所有的发行版都通过其包管理器提供了Git。Debian/Ubuntusudo apt update sudo apt install gitFedora/RHEL/CentOSsudo dnf install git(Fedora 22) 或sudo yum install git(旧版)Arch Linuxsudo pacman -S git安装完成后在任何平台的终端Windows的Git Bash、macOS的Terminal、Linux的任意终端里输入git --version如果能看到类似git version 2.xx.x的输出恭喜你Git已经成功安装到你的系统上了。注意安装过程本身通常很顺利但环境变量PATH是新手最容易踩坑的地方。在Windows上如果选择了只在Git Bash中使用之后想在VSCode的集成终端或系统CMD里用git命令就会报“不是内部或外部命令”。这时需要手动将Git的安装路径如C:\Program Files\Git\cmd添加到系统的PATH环境变量中。3. 安装后的第一件事全局身份配置安装完Git就像买了一把功能强大的瑞士军刀但刀柄上还没刻你的名字。直接开始使用的话你未来的每一次“提交”Commit都会记录一个默认的、无意义的作者信息这在你参与协作时会带来麻烦。所以使用Git前必须做的第一件事就是告诉它你是谁。配置通过git config命令完成分为三个级别优先级从高到低是仓库级--local 全局级--global 系统级--system。对于个人用户我们只需要配置全局级别即可这个配置会应用到你这台电脑上所有的Git仓库除非某个仓库单独覆盖。打开你的终端Git Bash、Terminal等输入以下两条命令git config --global user.name 你的姓名或昵称 git config --global user.email 你的邮箱地址这里有几个非常重要的细节姓名建议使用你真名或常用的网络ID。这在开源项目贡献中尤为重要它是你身份的标识。邮箱这是Git中识别作者身份的唯一关键信息它必须是一个有效的邮箱地址。如果你用GitHub、Gitee等代码托管平台强烈建议使用你在该平台注册时验证过的邮箱。这样你的提交才会被平台正确关联到你的账户计入你的贡献图Contribution Graph。如果你不想公开个人邮箱可以使用平台提供的“私有邮箱”功能。例如GitHub会为每个用户生成一个[用户名]users.noreply.github.com格式的私有邮箱专门用于提交。命令中的引号如果姓名或邮箱地址里有空格必须用英文引号括起来。配置完成后你可以用以下命令检查配置是否生效git config --global --list这会列出你所有的全局配置你应该能看到刚才设置的user.name和user.email。实操心得这个配置是一次性的但很多人会忘记做。我曾经就遇到过同事用公司电脑第一次提交代码作者信息是安装时默认的奇怪名字导致在代码审查工具里无法正确显示责任人。所以养成安装后立刻配置身份的好习惯。另外如果你的工作涉及多个身份比如公司项目用公司邮箱个人项目用个人邮箱可以在不同的仓库目录下使用不带--global参数的git config命令进行局部配置它会覆盖全局设置。4. 理解Git的核心工作区、暂存区与仓库在开始敲具体命令前我们需要在脑子里建立起Git最核心的一个模型三个区域。这是理解Git所有操作的基础很多让新手头晕的“谜之操作”根源都在于没搞清这三个区域的关系。我们可以用一个出版流程来类比工作区 (Working Directory)就是你电脑上能直接看到的那个文件夹。你在这里新增、删除、修改文件。这就像作者的书桌上面堆满了正在创作或修改的手稿。暂存区 (Staging Area / Index)这是一个非常关键的概念是Git区别于其他版本控制系统的一大特色。它不是一个可见的文件夹而是一个逻辑上的“准备区”。你可以把工作区里已经完成、准备提交的改动通过git add命令“挑选”出来放到这个区域。这就像作者从书桌上挑出已经修改满意的章节整理好放在一个“待审阅文件夹”里。仓库 (Repository / .git directory)这里存储了所有提交的历史记录以及指向这些记录的指针分支。当你执行git commit命令时暂存区里所有准备好的内容就会被打包成一个永久的“快照”存入仓库。这就像出版社将“待审阅文件夹”里的最终稿正式印刷成书并归档到图书馆的书架上。这个流程的核心思想是提交Commit不是一蹴而就的而是一个精心准备的过程。暂存区给了你一个缓冲地带让你可以分批次提交改动了10个文件但这次提交只想包含其中相关的5个你可以只add这5个。检查改动在commit之前可以用git diff --staged查看暂存区里的内容确保万无一失。撤销部分修改如果工作区某个文件改坏了但暂存区里是好的你可以从暂存区恢复它。理解这三者关系后Git的基本工作流就清晰了在工作区修改 - 将满意的修改添加到暂存区 (git add) - 将暂存区的内容永久保存到仓库 (git commit)。5. 初始化仓库与基础命令实战理论说完了我们动手创建一个真正的Git仓库来感受一下。5.1 创建你的第一个仓库假设我们要管理一个叫my-project的项目。在电脑上找个合适的位置创建一个文件夹并进入mkdir my-project cd my-project将这个文件夹初始化为一个Git仓库git init执行成功后你会看到提示Initialized empty Git repository in /path/to/your/my-project/.git/。注意观察这个文件夹下会多出一个隐藏的.git文件夹在Linux/macOS的ls -la或Windows的显示隐藏文件后可见。这就是Git仓库的本体里面存储了所有的版本信息、配置等。千万不要手动删除或胡乱修改这个文件夹5.2 感受完整的工作流现在我们在项目里创建一个README.md文件并模拟一次完整的提交。在工作区创建文件用你喜欢的编辑器比如VSCode、Notepad创建一个README.md文件里面随便写点内容比如# My First Git Project。查看状态在终端输入git status。这是你最常用的命令之一用于查看工作区和暂存区的当前状态。你会看到README.md被列为 “Untracked files”未跟踪的文件。Git在告诉你“我注意到这个新文件了但我还没开始管理它。”添加到暂存区执行git add README.md。如果想添加所有变动可以用git add .注意后面有个点。再次运行git status你会看到README.md出现在了 “Changes to be committed” 下面颜色变成了绿色。这意味着它已经从“书桌”被放进了“待审阅文件夹”。提交到仓库执行git commit -m Add README file。-m参数后面跟的是本次提交的说明信息务必写得清晰、简洁、有意义。好的提交信息是良好开发习惯的体现。提交成功后你会看到类似[main (root-commit) xxxxxxx] Add README file的提示其中xxxxxxx是这次提交的唯一哈希值。查看历史执行git log。你会看到一条提交记录包含了提交哈希、作者、日期和你写的提交信息。恭喜你的第一个版本已经安全地保存在Git仓库里了5.3 修改与再次提交现在我们修改README.md增加一行内容比如- Learn Git basics。运行git status你会看到README.md被列为 “Changes not staged for commit”已修改但未暂存颜色是红色。这表示文件在工作区被修改了但还没进入暂存区。再次git add README.md将其加入暂存区。运行git status看到它变绿了准备提交。执行git commit -m Update README with learning goal。再运行git log现在你会看到两条提交记录最新的在最上面。注意事项git add .命令虽然方便但有时会不小心加入一些你不想提交的文件比如编译产生的node_modules/、target/目录或者编辑器生成的临时文件。为了避免这个问题你应该在项目根目录创建一个名为.gitignore的文件在里面列出所有需要Git忽略的文件和文件夹模式。例如一个前端项目的.gitignore可能包含node_modules/、.DS_Store、dist/等。创建并配置好.gitignore是项目开始的另一个好习惯。6. 连接远程仓库从本地到云端到目前为止所有操作都只发生在你的本地电脑上。Git的威力在于分布式协作这就需要引入远程仓库。你可以把它理解为一个大家都能访问的“中央图书馆”虽然Git是分布式的但通常需要一个公认的协作中心。最常用的远程仓库服务是GitHub、GitLab和Gitee。6.1 创建与关联远程仓库我们以GitHub为例其他平台操作类似在GitHub上登录你的账户点击“New repository”创建一个新仓库名字可以也叫my-project或者别的。创建时不要勾选“Initialize this repository with a README”因为我们本地已经有一个了。创建成功后GitHub会显示一个仓库地址通常有两种协议HTTPS和SSH。对于新手建议先使用HTTPS地址格式如https://github.com/yourname/my-project.git。回到你的本地终端在my-project目录下执行以下命令将本地仓库与远程仓库关联起来git remote add origin https://github.com/yourname/my-project.git这里的origin是为这个远程仓库起的一个别名习惯上叫origin你可以改成别的后面那串URL就是它的地址。6.2 推送代码将本地提交同步到远程关联之后你需要把本地的提交“推”送到远程仓库。由于远程仓库是空的而我们本地已经有一个main分支旧版本Git可能是master分支和一些提交我们需要使用-u参数来建立追踪关系git push -u origin main这个命令做了两件事1. 将本地main分支的所有提交推送到远程仓库origin2. 建立本地main分支与远程origin/main分支的追踪关系。建立关系后下次推送只需要简单的git push即可。输入命令后可能会弹窗让你输入GitHub的用户名和密码如果使用HTTPS。注意从2021年8月起GitHub不再支持使用账户密码进行HTTPS操作你需要使用个人访问令牌作为密码。你可以在GitHub的Settings - Developer settings - Personal access tokens 中生成一个令牌并赋予repo权限。推送成功后刷新你的GitHub仓库页面就能看到本地代码已经同步上去了。6.3 拉取与克隆获取他人的代码与push对应的是pull拉取用于将远程仓库的最新更新同步到本地。而clone克隆则是你参与一个已有项目的第一步它相当于init 拉取整个远程仓库。# 克隆一个远程仓库到本地 git clone https://github.com/someone/awesome-project.git # 进入项目目录 cd awesome-project # 拉取远程最新更新在已有仓库中 git pull origin main实操心得push失败最常见的原因有两个一是网络问题或认证失败HTTPS的令牌或SSH密钥配置不对二是本地分支落后于远程分支。如果别人已经向远程仓库推送了新的提交你的本地版本就过时了。直接push会被拒绝。这时你需要先执行git pull将远程的更新拉取下来在本地合并可能会遇到冲突需要解决然后再push。养成在push前先pull的好习惯能避免很多麻烦。7. 分支并行开发的利器分支是Git的“杀手级”功能。你可以把分支想象成一条独立的时间线。默认情况下你工作在main分支上。当你想要开发一个新功能、修复一个bug或者尝试一个可能失败的想法时最好的做法不是直接在main分支上修改而是创建一个新的分支。7.1 分支的基本操作# 查看所有分支当前分支前会标有 * 号 git branch # 创建一个名为 “feature-login” 的新分支 git branch feature-login # 切换到 feature-login 分支 git checkout feature-login # 或者使用更简洁的 switch 命令Git 2.23 git switch feature-login # 创建并立即切换到新分支常用 git checkout -b feature-payment # 或 git switch -c feature-payment创建新分支后你所有的add和commit操作都只在这个分支上进行不会影响main分支。这就像你从主时间线main分叉出去开辟了一条独立的实验线路。7.2 合并分支与解决冲突当你在feature-login分支上的工作完成后需要将它合并回main分支。首先切换回main分支git switch main。然后执行合并git merge feature-login。如果两个分支对同一个文件的同一部分进行了不同的修改Git无法自动决定保留哪个就会产生冲突。这是协作中非常常见的情况。发生冲突时Git会标记出冲突的文件你需要手动打开这些文件会看到类似这样的标记 HEAD 这是 main 分支上的内容。 这是 feature-login 分支上的内容。 feature-login你需要和同事沟通决定保留哪一部分或者进行整合。编辑文件删除这些标记并保留最终想要的内容。然后将解决完冲突的文件add到暂存区并执行一次新的commit来完成这次合并。7.3 分支管理策略一个常见的团队协作策略是Git Flow或它的简化版GitHub Flowmain分支始终保持稳定是可发布的状态。develop分支集成最新开发成果的分支。feature/*分支从develop拉出用于开发单个新功能。release/*分支用于准备发布版本。hotfix/*分支从main拉出用于紧急修复线上bug。对于个人项目或小团队一个简单的mainfeature分支模型就足够了。8. 进阶配置与日常效率工具安装和基础操作只是开始合理的配置和一些辅助工具能极大提升使用Git的效率和体验。8.1 有用的全局配置除了用户名邮箱你还可以配置一些让Git更好用的选项# 设置默认分支名为 main符合现代社区习惯 git config --global init.defaultBranch main # 为 git status 命令启用更简短、更易读的输出格式 git config --global status.short true # 设置一个好看的 log 输出格式单行显示哈希、分支、提交信息 git config --global alias.lg log --oneline --graph --decorate --all # 设置推送行为为 simple推荐它会在推送时检查当前分支名是否与远程分支名匹配更安全 git config --global push.default simple # 启用命令别名例如将 git co 映射为 git checkout git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status配置别名后输入git lg就能看到图形化的提交历史输入git st就能查看状态非常高效。8.2 图形化工具辅助虽然命令行是掌握Git的根本但图形化工具在查看历史、解决冲突、管理分支时非常直观。VS Code内置了强大的Git图形界面。左侧源代码管理图标可以可视化地进行暂存、提交、拉取、推送、查看差异和解决冲突。GitHub Desktop / GitKraken / Sourcetree这些都是功能全面的独立Git图形客户端适合不喜欢命令行的用户或者作为命令行的补充用于可视化分支关系。git guiGit for Windows自带的图形工具适合进行提交操作。我的个人习惯是日常高频操作add, commit, push, pull, checkout用命令行因为更快复杂操作查看历史图谱、解决复杂冲突、交互式变基用图形工具因为更直观。8.3 SSH密钥认证告别每次输入密码如果你厌倦了每次push都输入HTTPS令牌可以配置SSH密钥认证实现免密操作。生成密钥对在终端运行ssh-keygen -t ed25519 -C your_emailexample.com一路回车使用默认路径和空密码。添加公钥到GitHub用文本编辑器打开~/.ssh/id_ed25519.pub文件Windows在C:\Users\你的用户名\.ssh\目录复制全部内容。登录GitHub进入 Settings - SSH and GPG keys - New SSH key粘贴进去。修改远程仓库地址将你本地仓库的远程地址从HTTPS改为SSH格式如gitgithub.com:yourname/my-project.git。git remote set-url origin gitgithub.com:yourname/my-project.git之后再进行git push或git pull就会使用SSH密钥进行认证无需再输入密码或令牌。安装Git只是第一步就像拿到驾照和车钥匙。真正的驾驶乐趣和效率来自于对交通规则Git原理的熟悉以及对车辆功能Git命令与配置的熟练运用。从今天起尝试在你的每一个小项目、每一份文档甚至你的个人笔记中使用Git来管理版本。开始时可能会觉得有点繁琐但一旦习惯你会发现它带来的清晰历史和安心备份是任何“另存为”都无法比拟的。遇到问题别怕git status是你的好朋友git log --oneline --graph --all能帮你理清头绪而搜索引擎和官方文档永远是强大的后盾。
返回列表