
Git连接远程仓库:1,git remote add origin git@github.com:yourName/repositoryname.git
2,git remote add origin https://github.com/yourName/repositoryname.git
咱们把 Git 想象成一个超级智能的「文件时光机」和「团队协作小助手」。它的核心工作就是帮你管理文件的不同版本,并且让大家能一起愉快地改代码。下面用最生活化的方式解释上传、更新、删除:
🚀 场景一:上传文件(首次 & 后续)
- 比喻: 就像你第一次把整理好的行李(项目文件)打包寄到仓库(远程服务器如 GitHub),或者之后又买了新东西(修改了文件)寄过去。
- 初始化本地仓库(第一次时):
git init👉 在你项目的文件夹里喊一声:“Git!以后这个文件夹归你管了!”(创建.git隐藏目录)
- 告诉 Git 哪些“行李”要寄:
git add .👉 “Git!把我这个文件夹里所有新买的东西(新文件)和整理好的东西(修改过的文件)都打包!” (add .代表当前目录所有变动)git add 文件名👉 “Git!只帮我把这件新买的衣服(特定文件)打包!”
- 把打包好的行李封箱、贴标签:
git commit -m "我买了啥/整理了啥"👉 “Git!把打包好的箱子封起来,贴个标签写上‘我买了件T恤’(提交信息)。这样我就知道箱子里是啥了。”
- 把箱子寄到远程仓库:
- 第一次寄(仓库是空的):
- 先在 GitHub/GitLab 上建个空仓库(地址比如
https://github.com/你的名字/仓库名.git)。 git remote add origin 仓库地址👉 “Git!记一下这个仓库地址,以后我叫它origin(默认名字)。”git push -u origin main👉 “Git!把我封好的箱子(commit)寄到origin仓库的main货架上!以后往这个货架寄东西直接说git push就行!” (-u是记住这个路线)
- 先在 GitHub/GitLab 上建个空仓库(地址比如
- 后续再寄东西(仓库已有东西):
- 修改文件 = 买了新东西或整理了旧东西。
- 重复
git add .或git add 文件名。 - 重复
git commit -m "这次买了啥/整理了啥"。 git push👉 “Git!按上次记好的路线(origin的main货架),把新封好的箱子寄过去!” (因为第一次用了-u,现在直接push就行)
- 第一次寄(仓库是空的):
🔄 场景二:更新文件(获取别人的改动)
- 比喻: 你的室友/同事也往仓库寄了他们的行李(代码)。你需要把这些新东西拿回自己家(本地电脑),和你自己的东西合并。
- 去仓库取回最新的所有行李:(git remote add origin +你的刚刚复制的链接)
git pull👉 “Git!去origin仓库的main货架,把所有最新的箱子(别人提交的代码)都拿回来,并且直接拆箱放进我家里对应的位置(自动合并到你的本地文件)!”- 注意:
git pull其实是两步合一步:git fetch(去仓库看看有什么新箱子) +git merge(把新箱子里的东西和你本地的东西合并)。直接git pull最常用。
🗑️ 场景三:删除文件(让 Git 不再跟踪)
- 比喻: 你家里有件旧衣服(文件)不想要了,你要告诉 Git 别再管这件衣服了,并且把它从仓库里也扔掉。
- 删除本地文件并告诉 Git:
git rm 文件名👉 做两件事:- 把你电脑上的这个文件删掉(就像你把旧衣服扔进垃圾桶)。
- 告诉 Git:“这件衣服我不要了,下次打包(commit)时记得处理掉它。”
- 或者: 你也可以先手动把文件删了(扔进回收站),然后告诉 Git:
git add .或git add 文件名👉 Git 会发现文件不见了,这也会被视为一种“修改”,准备记录这次“删除”。
- 封箱贴标签(提交这次“删除”操作):
git commit -m "我扔掉了那件旧T恤"👉 “Git!把‘扔掉旧衣服’这个操作封箱贴标签。”
- 寄出这个“删除”指令:
git push👉 “Git!把这个‘扔掉旧衣服’的箱子寄到仓库,告诉仓库那边也把这件衣服删掉!”
📌 超级精简速记流程(日常最常用)
- 开始干活前:
git pull(拿最新代码,避免冲突) - 改完代码后:
git add .或git add 文件名(告诉 Git 哪些改动要存)git commit -m "做了什么改动"(打包并贴标签)git push(寄出去)
- 要删文件:
git rm 文件名(删本地文件+告诉 Git) 或 手动删文件 +git add .git commit -m "删除了XX文件"git push
💡 关键理解点
-
add: 不是真的上传,只是把改动放入暂存区(想象成打包区),准备提交。 -
commit: 是在本地创建一个历史记录点(快照),记录当前暂存区的状态。还没传到网上! -
push: 才是真正把你的本地记录点上传到远程仓库(如 GitHub),让别人能看到。 -
pull: 是把别人上传到远程仓库的改动下载并合并到你的本地。 -
rm: 删除文件并让 Git 知道,需要后续commit和push才能真正在远程仓库删除。
记住这个「快递流程」,多操作几次就熟练了!Git 很强大,但这些基础命令足以应付大部分个人和小团队开发了。遇到问题随时再问!
常用命令速查表
| 命令 | 作用 | 常用场景 |
|---|---|---|
git init | 初始化一个新的本地仓库 | 项目开始时 |
git clone <url> | 下载一个已存在的远程仓库 | 参与已有项目 |
git add <file> | 将文件更改添加到暂存区 | 准备提交前 |
git commit -m "msg" | 创建一个提交,记录暂存区的快照 | 保存一个逻辑更改单元 |
git push | 将本地提交推送到远程仓库 | 分享你的工作成果 |
git pull | 从远程仓库拉取更新并合并到本地 | 开始工作前,获取他人最新代码 |
git status | 查看工作区和暂存区的状态 | 随时查看,了解当前情况 |
git log | 显示当前分支的提交历史 | 查看项目历史记录 |
太好了!我们接着用「文件时光机」和「团队协作」的比喻,来深入讲解 Git 的分支、拉取和更多高级但必备的知识。这会让你的团队协作能力大大提升!
🌳 核心概念:分支(Branch)—— 平行宇宙
想象你的项目是一条时间线(主分支,通常是 main或 master),上面记录着一个个稳定的版本。现在你想开发一个新功能(比如“用户登录”),但又怕把现在稳定的代码改坏。
怎么办?Git 分支就是你的「平行宇宙制造机」。
- 创建新分支:
git branch login-feature- 这就像从当前时间点分裂出了一个平行的“登录功能宇宙”。你在这个新宇宙里无论怎么折腾,都不会影响主宇宙。
- 切换到新分支:
git checkout login-feature(或更简单的git switch login-feature)- 这就像你走进了“登录功能宇宙”的大门,现在你所有的修改都在这个宇宙里进行。
日常最常用的一句命令:创建并立即切换过去
git checkout -b login-feature
# 或者
git switch -c login-feature
查看所有分支:git branch(当前所在分支前面会有个 *号)
🔄 拉取指定分支(与远程仓库同步)
还记得 git pull是下载最新代码吗?但远程仓库上可能有很多分支(平行宇宙),你需要指定拉取哪一个。
比喻:远程仓库就像中央图书馆,有很多本书(分支)。你不能只说“给我拿本书”,得说清楚要哪本。
- 首先,获取远程所有分支的信息(看看图书馆有哪些书):
git fetch这条命令会悄悄更新你本地关于“远程图书馆有什么”的信息,但不会动你的文件。 - 拉取并切换到指定的远程分支(把图书馆的某本书借回来,并开始阅读):
git checkout -b dev origin/dev- 意思是:基于远程分支
origin/dev,在本地创建一个同名的dev分支,并切换过去。 - 之后在这个分支上,直接
git pull就是拉取origin/dev的更新,git push就是推送到origin/dev。
- 意思是:基于远程分支
简单情况:如果你本地已经有一个 dev分支,并且之前已经和 origin/dev关联好了,那你只需要:
git checkout dev # 切换到本地dev分支
git pull # 拉取远程origin/dev的最新内容到本地dev分支
🚀 上传到指定分支(推送到特定的远程分支)
你在这个平行宇宙(分支)里完成了工作,现在要把它寄回中央图书馆的对应书架上。
基本命令:git push <远程仓库名> <本地分支名>:<远程分支名>
- 最常用的情况:把你当前的本地分支,推送到同名的远程分支。
git push origin login-feature- 意思是:把我本地这个
login-feature宇宙的成果,寄到origin仓库,也创建一个叫login-feature的平行宇宙(如果远程没有,会自动创建)。
- 意思是:把我本地这个
- 推送到不同名的远程分支(比较少用):
git push origin login-feature:my-login-on-server
重要提示:当你第一次推送一个新建的本地分支时,最好用 -u设置上游跟踪:
git push -u origin login-feature
设置后,以后在这个分支上,直接 git push就行,Git 就知道你要推送到 origin/login-feature。
🧩 其他你必须知道的 Git 知识
1. 合并分支(Merge)—— 宇宙合并
当你的“登录功能宇宙”开发完毕并且测试稳定后,就需要把它合并回“主宇宙”(main分支)。
步骤:
- 切换回主宇宙:
git checkout main - 拉取最新代码:
git pull(确保主宇宙是最新的) - 执行合并:
git merge login-feature- 这时 Git 会尝试把两个宇宙的历史合并在一起。如果你们修改了不同的文件,通常会自动成功。
2. 冲突(Conflict)—— 宇宙碰撞
最刺激的部分来了! 如果你和别人同时修改了同一个文件的同一行代码,Git 就蒙了,它不知道应该听谁的。这时就会发生冲突。
Git 会告诉你:CONFLICT! 然后文件会变成这样:
<<<<<<< HEAD
这是主分支上的代码
=======
这是login-feature分支上的代码
>>>>>>> login-feature
你需要手动解决:
- 打开这个文件。
- 删除
<<<<<<<,=======,>>>>>>>这些标记。 - 决定保留哪一段代码,或者把两段代码整合成你想要的正确样子。
- 保存文件。
- 然后执行
git add 文件名和git commit -m "解决合并冲突"来告诉 Git:“冲突我搞定了,你继续吧。”
3. 查看状态和历史
git status:随时使用! 查看你现在在哪个分支,哪些文件被修改了,处于什么状态。git log:查看当前分支的提交历史,像看一本历史书。git log --oneline --graph:以更简洁的方式,图形化查看分支和合并历史,超级好用!
📋 完整团队协作流程(总结)
假设你要开发一个新功能:
- 开工前:
git checkout main->git pull(切换到主分支,获取最新代码) - 开新分支:
git checkout -b my-new-feature(基于最新的 main 创建功能分支) - 干活:写代码…
- 保存进度:
git add .->git commit -m "完成功能A"(在本地分支上多次提交) - 推送分享:
git push -u origin my-new-feature(第一次推送时建立跟踪) - 后续更新:如果同事有更新,
git pull即可(因为已经用-u设置了跟踪) - 功能完成:在代码托管平台(如 GitHub)上发起 Pull Request 或 Merge Request,请求将
my-new-feature合并回main。 - 代码审查:同事审查你的代码,通过后合并。
- 更新本地主分支:
git checkout main->git pull(把合并后的最新代码拉取到本地) - 删除旧分支(可选):
git branch -d my-new-feature(功能已合并,本地分支可删除)
掌握了这些,你就已经能应对 90% 以上的日常开发场景了!多练习几次,很快就会得心应手。遇到问题随时来问!


git clone 和git pull 的区别
git clone
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做git clone。简单讲,git clone就是将一个库复制到本地,是一个本地从无到有的过程。包括里面的日志信息,git项目里的分支,你也可以直接切换、使用里面的分支等等。
git clone是远程操作的第一步,通常是从远程主机克隆一个版本库,
eg:
$ git clone ‘远程仓库地址(ssh/http)’
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果想要在本地制定不同的目录名,可以使用git clone 命令的第二个参数设置本地目录名。
eg:
$ git clone ‘版本库网址’ ‘本地目录名’
git clone支持多种协议,除了http(s),还有ssh,git,本地协议。
git pull
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做git pull.(pull是指同步一个你在本地有版本的库内容更新的部分到你的本地库)。
git pull 作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的书写格式如下
eg:
$ git pull #远程主机(origin)# #远程分支(next)#:#本地分支(master)#
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
eg:
$ git pull #远程主机(origin)# #远程分支(next)#
该命令相当于 git fetch origin + git merge origin/next
适用场景
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。
本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
在某些场合,git会自动在本地和远程分支之间,建立一种追踪关系。比如,在git clone 的时候,所有本地分支默认与远程主机的同名分支建立追踪关系。也就是,Git 会自动创建一个名为 master 的本地分支来跟踪 origin/master。(如果需要关联不同的分支,使用命令git checkout –track origin/br-2.1.2.1)
当然,git也可以手动建立追踪: git branch –set-upstream master origin/next —>指定master分支追踪到origin/next。
注:将本地分支跟踪服务器分支可以使用下面的命令:
$ git branch –set-upstream-to=origin/远程分支名称 本地分支名称
如果当前分支只有一个追踪分支,连远程主机名都可以省略。$ git pull 表示当前分支自动与唯一一个追踪分支进行合并。




