通俗易懂的理解一下git
本文最后更新于245 天前,其中的信息可能已经过时,如有错误请发送邮件到2067863254@qq.com

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),或者之后又买了新东西(修改了文件)寄过去。
  1. ​初始化本地仓库(第一次时):​
    • git init 👉 在你项目的文件夹里喊一声:“Git!以后这个文件夹归你管了!”(创建 .git 隐藏目录)
  2. ​告诉 Git 哪些“行李”要寄:​
    • git add . 👉 “Git!把我这个文件夹里​​所有​​新买的东西(新文件)和整理好的东西(修改过的文件)都打包!” (add . 代表当前目录所有变动)
    • git add 文件名 👉 “Git!只帮我把​​这件​​新买的衣服(特定文件)打包!”
  3. ​把打包好的行李封箱、贴标签:​
    • git commit -m "我买了啥/整理了啥" 👉 “Git!把打包好的箱子封起来,贴个标签写上‘我买了件T恤’(提交信息)。这样我就知道箱子里是啥了。”
  4. ​把箱子寄到远程仓库:​
    • ​第一次寄(仓库是空的):​
      • 先在 GitHub/GitLab 上建个空仓库(地址比如 https://github.com/你的名字/仓库名.git)。
      • git remote add origin 仓库地址 👉 “Git!记一下这个仓库地址,以后我叫它 origin(默认名字)。”
      • git push -u origin main 👉 “Git!把我封好的箱子(commit)寄到 origin 仓库的 main 货架上!以后往这个货架寄东西直接说 git push 就行!” (-u 是记住这个路线)
    • ​后续再寄东西(仓库已有东西):​
      • 修改文件 = 买了新东西或整理了旧东西。
      • 重复 git add .git add 文件名
      • 重复 git commit -m "这次买了啥/整理了啥"
      • git push 👉 “Git!按上次记好的路线(originmain 货架),把新封好的箱子寄过去!” (因为第一次用了 -u,现在直接 push 就行)

🔄 ​​场景二:更新文件(获取别人的改动)​

  • ​比喻:​​ 你的室友/同事也往仓库寄了他们的行李(代码)。你需要把这些新东西拿回自己家(本地电脑),和你自己的东西合并。
  1. ​去仓库取回最新的所有行李:​git remote add origin +你的刚刚复制的链接)​
    • git pull 👉 “Git!去 origin 仓库的 main 货架,把​​所有​​最新的箱子(别人提交的代码)都拿回来,并且直接拆箱放进我家里对应的位置(自动合并到你的本地文件)!”
    • 注意: git pull 其实是两步合一步:git fetch(去仓库看看有什么新箱子) + git merge(把新箱子里的东西和你本地的东西合并)。直接 git pull 最常用。

🗑️ ​​场景三:删除文件(让 Git 不再跟踪)​

  • ​比喻:​​ 你家里有件旧衣服(文件)不想要了,你要告诉 Git 别再管这件衣服了,并且把它从仓库里也扔掉。
  1. ​删除本地文件并告诉 Git:​
    • git rm 文件名 👉 做两件事:
      • 把你电脑上的这个文件删掉(就像你把旧衣服扔进垃圾桶)。
      • 告诉 Git:“这件衣服我不要了,下次打包(commit)时记得处理掉它。”
    • 或者: 你也可以先手动把文件删了(扔进回收站),然后告诉 Git:
      • git add .git add 文件名 👉 Git 会发现文件不见了,这也会被视为一种“修改”,准备记录这次“删除”。
  2. ​封箱贴标签(提交这次“删除”操作):​
    • git commit -m "我扔掉了那件旧T恤" 👉 “Git!把‘扔掉旧衣服’这个操作封箱贴标签。”
  3. ​寄出这个“删除”指令:​
    • git push 👉 “Git!把这个‘扔掉旧衣服’的箱子寄到仓库,告诉仓库那边也把这件衣服删掉!”

📌 超级精简速记流程(日常最常用)

  1. ​开始干活前:​git pull (拿最新代码,避免冲突)
  2. ​改完代码后:​
    • git add .git add 文件名 (告诉 Git 哪些改动要存)
    • git commit -m "做了什么改动" (打包并贴标签)
    • git push (寄出去)
  3. ​要删文件:​
    • git rm 文件名 (删本地文件+告诉 Git) 或 手动删文件 + git add .
    • git commit -m "删除了XX文件"
    • git push

💡 关键理解点

  • add:​​ 不是真的上传,只是把改动​​放入暂存区​​(想象成打包区),准备提交。
  • commit:​​ 是在​​本地​​创建一个历史记录点(快照),记录当前暂存区的状态。还没传到网上!
  • push:​​ 才是真正把你的本地记录点​​上传​​到远程仓库(如 GitHub),让别人能看到。
  • pull:​​ 是把别人上传到远程仓库的改动​​下载并合并​​到你的本地。
  • rm:​​ 删除文件并让 Git 知道,需要后续 commitpush 才能真正在远程仓库删除。

记住这个「快递流程」,多操作几次就熟练了!Git 很强大,但这些基础命令足以应付大部分个人和小团队开发了。遇到问题随时再问!

常用命令速查表

命令作用常用场景
git init初始化一个新的本地仓库项目开始时
git clone <url>下载一个已存在的远程仓库参与已有项目
git add <file>将文件更改添加到暂存区准备提交前
git commit -m "msg"创建一个提交,记录暂存区的快照保存一个逻辑更改单元
git push将本地提交推送到远程仓库分享你的工作成果
git pull从远程仓库拉取更新并合并到本地开始工作前,获取他人最新代码
git status查看工作区和暂存区的状态随时查看,了解当前情况
git log显示当前分支的提交历史查看项目历史记录

太好了!我们接着用「文件时光机」和「团队协作」的比喻,来深入讲解 Git 的分支、拉取和更多高级但必备的知识。这会让你的团队协作能力大大提升!


🌳 核心概念:分支(Branch)—— 平行宇宙

想象你的项目是一条​​时间线(主分支,通常是 mainmaster)​​,上面记录着一个个稳定的版本。现在你想开发一个新功能(比如“用户登录”),但又怕把现在稳定的代码改坏。

怎么办?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是下载最新代码吗?但远程仓库上可能有很多分支(平行宇宙),你需要指定拉取哪一个。

​比喻​​:远程仓库就像中央图书馆,有很多本书(分支)。你不能只说“给我拿本书”,得说清楚要哪本。

  1. ​首先,获取远程所有分支的信息​​(看看图书馆有哪些书): git fetch这条命令会悄悄更新你本地关于“远程图书馆有什么”的信息,但不会动你的文件。
  2. ​拉取并切换到指定的远程分支​​(把图书馆的某本书借回来,并开始阅读): 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分支)。

​步骤​​:

  1. 切换回主宇宙:git checkout main
  2. 拉取最新代码:git pull(确保主宇宙是最新的)
  3. 执行合并:git merge login-feature
    • 这时 Git 会尝试把两个宇宙的历史合并在一起。如果你们修改了不同的文件,通常会​​自动成功​​。

2. 冲突(Conflict)—— 宇宙碰撞

​最刺激的部分来了!​​ 如果你和别人​​同时修改了同一个文件的同一行代码​​,Git 就蒙了,它不知道应该听谁的。这时就会发生​​冲突​​。

​Git 会告诉你:CONFLICT! 然后文件会变成这样:​

<<<<<<< HEAD
这是主分支上的代码
=======
这是login-feature分支上的代码
>>>>>>> login-feature

​你需要手动解决​​:

  1. 打开这个文件。
  2. 删除 <<<<<<<, =======, >>>>>>>这些标记。
  3. ​决定保留哪一段代码​​,或者把两段代码整合成你想要的正确样子。
  4. 保存文件。
  5. 然后执行 git add 文件名git commit -m "解决合并冲突"来告诉 Git:“冲突我搞定了,你继续吧。”

3. 查看状态和历史

  • git status:​​随时使用!​​ 查看你现在在哪个分支,哪些文件被修改了,处于什么状态。
  • git log:查看当前分支的提交历史,像看一本历史书。
  • git log --oneline --graph:以更简洁的方式,图形化查看分支和合并历史,超级好用!

📋 完整团队协作流程(总结)

假设你要开发一个新功能:

  1. ​开工前​​:git checkout main-> git pull(切换到主分支,获取最新代码)
  2. ​开新分支​​:git checkout -b my-new-feature(基于最新的 main 创建功能分支)
  3. ​干活​​:写代码…
  4. ​保存进度​​:git add .-> git commit -m "完成功能A"(在本地分支上多次提交)
  5. ​推送分享​​:git push -u origin my-new-feature(第一次推送时建立跟踪)
  6. ​后续更新​​:如果同事有更新,git pull即可(因为已经用 -u设置了跟踪)
  7. ​功能完成​​:在代码托管平台(如 GitHub)上发起 ​​Pull Request​​ 或 ​​Merge Request​​,请求将 my-new-feature合并回 main
  8. ​代码审查​​:同事审查你的代码,通过后合并。
  9. ​更新本地主分支​​:git checkout main-> git pull(把合并后的最新代码拉取到本地)
  10. ​删除旧分支​​(可选):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 表示当前分支自动与唯一一个追踪分支进行合并。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇