ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

Git入门笔记(二):连接GitHub、分支管理,以及踩过的坑 上一篇跑通了本地Git的基本流程这篇接着学怎么把代码推到GitHub上以及分支是怎么回事。中间踩了几个坑都记下来了。一、注册GitHub账号GitHub 是一个代码托管网站相当于代码的云盘。你本地用 Git 管理好的代码可以推送到 GitHub 上存着别人也能看到。去 github.com 注册一个账号用邮箱注册就行。注册完之后你会看到一个章鱼猫Octocat的 logo那就是 GitHub 的标志。二、在GitHub上创建仓库登录之后点右上角的 号选 New repository进入创建页面。需要填的选项Repository name仓库名给你的仓库取个名字比如 practice-git。Public / PrivatePublic公开的所有人都能看到你的代码。学习用的话选这个就行。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.gitgit 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 maingit 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 刷新页面就能看到你的文件了。四、踩坑记录坑1push 没有任何输出执行 git push 之后命令行直接返回了没有报错也没有成功提示。这种情况大概率是网络被拦截了。很多公司的网络有 DLP数据防泄漏系统检测到你在往外部 Git 仓库推代码会直接掐断连接。表现就是 push 命令静默失败——不报错但也没推上去。解决办法切手机热点再 push或者回家用自己的网络 push代码在本地不会丢什么时候推都行。坑2GitHub 页面打不开 / 加载很慢国内访问 GitHub 经常抽风页面加载不出来或者特别慢。这是正常的多刷新几次或者等网络好的时候再操作。五、分支branch分支是什么想象你在写一份文档main 分支突然老板说你试一下用另一种格式排版。你不会直接在原文档上改万一改坏了就全完了。你会复制一份出来在副本上折腾。这个副本就是新分支。在 Git 里主分支叫 main以前叫 master是你的正式文档你可以新建分支来试验新功能试验完了合并回 main试验失败了直接丢掉这个分支main 完全不受影响分支长什么样main: A --- B --- C --- Fbug修复合并回来 \ / 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 改成了 版本Adev 上你把同一行改成了 版本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 和提交撤回把基础补齐。共勉。
返回列表