news 2026/9/30 4:09:40

Git入门笔记(二):连接GitHub、分支管理,以及踩过的坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git入门笔记(二):连接GitHub、分支管理,以及踩过的坑

上一篇跑通了本地Git的基本流程,这篇接着学怎么把代码推到GitHub上,以及分支是怎么回事。中间踩了几个坑,都记下来了。

一、注册GitHub账号

GitHub 是一个代码托管网站,相当于"代码的云盘"。你本地用 Git 管理好的代码,可以推送到 GitHub 上存着,别人也能看到。

去 github.com 注册一个账号,用邮箱注册就行。注册完之后你会看到一个章鱼猫(Octocat)的 logo,那就是 GitHub 的标志。


二、在GitHub上创建仓库

登录之后,点右上角的 + 号,选 New repository,进入创建页面。需要填的选项:

Repository name(仓库名):给你的仓库取个名字,比如 practice-git。

Public / Private:

  • Public:公开的,所有人都能看到你的代码。学习用的话选这个就行。
  • Private:私有的,只有你自己(和你邀请的人)能看到。公司项目一般选这个。

Initialize this repository with:下面有三个勾选项——README、.gitignore、License。学习阶段全部不勾,保持空仓库就行。后面会单独讲 .gitignore 是什么。

填好之后点 Create repository,就建好了。

建好之后页面会显示一段命令,告诉你怎么把本地代码推上来。先别急,往下看。


三、把本地代码推到GitHub

假设你上一篇已经建好了本地仓库,里面有提交记录。现在要把它和 GitHub 上的仓库连起来,然后推送上去。

一共三步:

git remote add origin https://github.com/你的用户名/仓库名.git git branch -M main git push -u origin main

逐行解释:

git remote add origin https://github.com/tangtangyi/practice-git.git

  • git remote — 管理"远程仓库"。远程仓库就是不在你电脑上的仓库,比如在 GitHub 上的那个。
  • add — 添加一个。
  • origin — 这是你给远程仓库起的别名。就像你给联系人存名字一样,origin 就是 "practice-git.git · github.com" 这个长地址的简称。以后你不用每次都打完整地址,说 origin 就行。
  • 后面的 URL — 就是你在 GitHub 上建的那个仓库的地址。

git branch -M main

  • 把主分支的名字从 master 改成 main。GitHub 现在默认主分支叫 main,以前叫 master。改一下名字,保持一致。

git push -u origin main

  • git push — 推送,把本地的代码上传到远程仓库。
  • -u — 第一次推送时加上这个,意思是"记住这个对应关系"。以后你在这个分支上再 push,直接打 git push 就行,不用每次写 origin main。
  • origin — 推到哪里,就是刚才设置的那个远程仓库。
  • main — 推哪个分支。

正常成功的输出长这样:

Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done. To https://github.com/********/practice-git.git * [new branch] main -> main branch 'main' set up to track 'origin/main'.

看到 new branch 和 set up to track 就说明成功了。去 GitHub 刷新页面,就能看到你的文件了。


四、踩坑记录

坑1:push 没有任何输出

执行 git push 之后,命令行直接返回了,没有报错也没有成功提示。这种情况大概率是网络被拦截了。

很多公司的网络有 DLP(数据防泄漏)系统,检测到你在往外部 Git 仓库推代码,会直接掐断连接。表现就是 push 命令静默失败——不报错,但也没推上去。

解决办法:

  • 切手机热点再 push
  • 或者回家用自己的网络 push

代码在本地不会丢,什么时候推都行。

坑2:GitHub 页面打不开 / 加载很慢

国内访问 GitHub 经常抽风,页面加载不出来或者特别慢。这是正常的,多刷新几次,或者等网络好的时候再操作。


五、分支(branch)

分支是什么?

想象你在写一份文档(main 分支),突然老板说"你试一下用另一种格式排版"。你不会直接在原文档上改,万一改坏了就全完了。你会复制一份出来,在副本上折腾。这个副本就是新分支。

在 Git 里:

  • 主分支叫 main(以前叫 master),是你的"正式文档"
  • 你可以新建分支来试验新功能,试验完了合并回 main
  • 试验失败了,直接丢掉这个分支,main 完全不受影响
分支长什么样?

main: A --- B --- C --- F(bug修复合并回来) \ / dev: D --- E(新功能,还没做完)

字母代表每次提交。你在 B 的时候开了 dev 分支,在 dev 上做了 D 和 E。同时 main 上继续做了 C,然后发现 bug 修了 F。最后把 dev 合并回 main。

常用分支命令
命令作用通俗理解
git branch查看所有分支看看桌上有几份文档
git branch 名字新建分支(不切换)复制一份文档放在桌上,但还在看原件
git checkout -b 名字新建分支并切换过去复制+打开副本,一步到位
git merge 名字把另一个分支合并到当前分支副本改好了,把改动合回原件
git branch -d 名字删除分支(安全删除)副本没用了,丢掉(没合并的不让删)
git branch -D 名字强制删除分支不管合没合并都删

举个例子:

# 查看当前分支,带 * 的是你所在的分支 git branch * main # 新建一个叫 dev 的分支,并且切换过去 git checkout -b dev Switched to a new branch 'dev' # 这时候你再 git branch,会看到: # main # * dev # 星号在 dev 前面,说明你现在在 dev 分支上 # 在 dev 上改代码、提交... echo "新功能代码" >> test.txt git add . git commit -m "在dev分支上新增功能" # 改完了,切回 main git checkout main # 把 dev 的改动合并到 main git merge dev # dev 没用了,删掉 git branch -d dev
合并冲突(conflict)

如果两个分支改了同一个文件的同一行,Git 不知道该听谁的,就会报冲突。

比如 main 上你把 test.txt 改成了 "版本A",dev 上你把同一行改成了 "版本B",合并的时候 Git 就会说:

CONFLICT (content): Merge conflict in test.txt

这时候打开 test.txt,你会看到类似这样的内容:

<<<<<<< HEAD 版本A ======= 版本B >>>>>>> dev

<<<<<<< HEAD 到 ======= 之间是当前分支(main)的内容,======= 到 >>>>>>> dev 之间是 dev 分支的内容。你手动删掉不要的那部分,保留想要的,然后重新 add + commit 就行了。

实际工作中怎么避免冲突?

  • 各改各的文件,尽量别两个人同时改同一个文件
  • 合并之前先 pull 一下最新的代码
  • 冲突了别慌,看清楚两边改了什么,跟同事沟通一下再决定留哪个

六、远程分支

你 push 到 GitHub 的 main 分支,在 Git 里叫 origin/main,是远程分支。本地的 main 和远程的 origin/main 是两个东西:

  • main— 你电脑上的分支
  • origin/main— GitHub 上的分支

git push 就是把本地的 main 同步到远程的 origin/main。

反过来,git pull 是把远程的 origin/main 拉下来同步到本地的 main。比如同事往 GitHub 推了新代码,你用 git pull 就能拿到最新的。


七、Git知识地图:还剩下什么要学?

到这里,你已经覆盖了日常开发 80% 的 Git 场景了。剩下的按需学就行:

马上要学的(基础必备):

  • .gitignore — 告诉 Git 哪些文件不用管(比如编译产生的临时文件、密码配置文件)
  • git reset / git revert — 提交错了怎么撤回

工作中遇到了再学:

  • git stash — 临时存一下手头没做完的改动,切分支去干别的事
  • git rebase — 让提交历史更干净,比 merge 高级一点
  • git cherry-pick — 只拿另一个分支的某一次提交,不是全部合并
  • git tag — 给重要版本打标签,比如 v1.0、v2.0

基本用不到的(碰到了再查):

  • git submodule、git bisect、git hook

八、常用命令总结(第一篇 + 这篇)

命令作用
git init新建仓库
git add .把所有改动准备好要提交
git commit -m "说明"提交并写说明
git log --oneline查看提交历史(简洁版)
git checkout 编号 -- 文件名把文件恢复到某个历史版本
git remote add origin 地址关联远程仓库
git push -u origin main推送到远程仓库
git pull从远程拉取最新代码
git branch查看分支
git checkout -b 名字新建并切换分支
git merge 名字合并分支
git branch -d 名字删除分支

九、写在最后

学 Git 不需要什么基础,会打字就行。关键是动手练,光看教程没用。

第一篇跑通了本地流程,这篇学会了推送到 GitHub 和分支管理。下一篇讲 .gitignore 和提交撤回,把基础补齐。

共勉。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 4:09:33

TensorFlow本质:生产级AI系统的计算图操作系统

1. 这不是“又一个深度学习框架”——TensorFlow 的真实定位与误用起点很多人第一次听说 TensorFlow&#xff0c;是在某篇“2024年AI工程师必学工具”清单里&#xff0c;和 PyTorch 并列排在第一行&#xff1b;也有人是在安装时卡在pip install tensorflow命令后长达17分钟的编…

作者头像 李华
网站建设 2026/9/30 4:09:02

Self Searcher绿色版下载与配置:自动化隐私自查实操指南

你有没有试过在搜索引擎里输入自己的名字&#xff1f;我一开始只是出于好奇&#xff0c;结果翻出好几页和自己同名同姓的人&#xff0c;真正跟“我”有关的反而沉在底下。后来做自媒体&#xff0c;开始在意自己的公开形象&#xff0c;也需要定期检查有没有人未经授权用我的图或…

作者头像 李华
网站建设 2026/9/30 4:08:19

HER经验回放:把失败变成成功,破解稀疏奖励难题

hindsight&#xff0c;英文直译叫“后见之明”&#xff0c;通俗点说就是“事后聪明”。在日常生活里它常常带着点贬义&#xff0c;比如“我早说过会这样”、“早知道就……”这类话&#xff0c;听多了总觉得像马后炮。但如果你钻进强化学习&#xff08;Reinforcement Learning&…

作者头像 李华
网站建设 2026/9/30 4:07:28

hindsight实战:为LLM Agent构建长期记忆系统

1. 从“hindsight”说起&#xff1a;为什么我们需要给Agent装上“后视镜”第一次看到“hindsight”这个词&#xff0c;我脑子里蹦出来的不是词典里的“事后聪明”&#xff0c;而是做Agent开发时最头疼的一个场景&#xff1a;用户三天前让我帮忙查过一份合同里的违约条款&#x…

作者头像 李华
网站建设 2026/9/30 4:07:05

开源能源管理系统MyEMS部署实战:从数据采集到计量计费

做能源管理系统这几年&#xff0c;大大小小的项目碰了不少&#xff0c;从工厂车间到商业楼宇再到数据中心&#xff0c;甲方要的核心东西其实一直没变&#xff1a;用哪个平台、怎么把电水气热这些数据稳定采集上来&#xff0c;再把账单和报表做清楚。市面上的商业能源管理平台&a…

作者头像 李华
网站建设 2026/9/30 4:06:57

ECharts没有pie3D:custom series手绘真实3D饼图

1. ECharts 里到底有没有现成的 3D 饼图先把话说在前头&#xff1a;ECharts 官方从 3.x 到现在的 5.x&#xff0c;都没有pie3D这个系列类型。你在配置里写type: pie3D&#xff0c;控制台会直接告诉你Series pie3D is not exists。而echarts-gl扩展包里提供的是bar3D、scatter3D…

作者头像 李华