开发常用流程
git checkout -b search
基于main
分支在本地创建search
子分支,用来开发搜索相关的功能git add . git commit -m
完成了搜索功能的开发,将search
分支进行本地提交git push -u origin search
将本地的search
分支推送到码云 仓库名origin
git checkout master git merge search git push
将本地search
分支中的代码合并到main
分支git branch -d search
删除本地的search
分支
git相关操作命令如下:
1. clone(克隆): 从远程仓库中克隆代码到本地仓库
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
3. add(添加): 在提交前先将代码提交到暂存区
4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
Git的基本操作
获取 Git 仓库的两种方式
-
执行
git init
命令将当前的目录转化为 Git 仓库git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分。
-
从其它服务器克隆一个已存在的 Git 仓库
检查文件的状态
git status -s
以精简的方式显示文件的状态(未跟踪文件前面有红色的??
标记)
跟踪新文件
git add XX
提交更新
git commit -m "对提交的内容做描述"
对已提交的文件进行修改
- 修改文件后运行
git status
或git status -s
:
{width=52%} - 暂存这次修改,再次运行 git add 命令后,上面白框内容都变绿了
- 再次运行 git commit -m “提交消息” 命令即可
撤销对文件的修改
git checkout -- index.html
把对工作区中对应文件的修改,还原成 Git 仓库中所保存的版本。- 操作的结果:所有的修改会丢失,且无法恢复!
危险
性比较高,请慎重操作!
取消暂存
的文件
git reset HEAD 要移除的文件名称
跳过使用暂存区域
- 直接将工作区中的修改提交到 Git 仓库,Git 工作的流程简化为了工作区 → Git 仓库
- 只要在提交的时候,给
git commit
加上-a
选项,Git 就会自动把
所有已经跟踪过
的文件暂存起来一并提交,从而跳过 git add 步骤
移除文件
从 Git 仓库中移除文件的方式有两种:
- 从 Git 仓库和工作区中同时移除对应的文件
git rm -f index.js
- 只从 Git 仓库中移除指定的文件,但保留工作区中对应的文件
git rm --cached index.css
(即工作区中的这个文件将不被跟踪了)
忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为.gitignore
的配置文件,列出要忽略的文件的匹配模式。文件 .gitignore 的格式规范如下:
- 以
# 开头
的是注释 - 以
/ 结尾
的是目录 - 以
/ 开头
防止递归 - 以
! 开头
表示取反 - 可以使用
glob 模式
进行文件和文件夹的匹配(glob 指简化了的正则表达式)
glob 模式
所谓的 glob
模式是指简化了的正则表达式:
星号 *
匹配零个或多个任意字符
[abc]
匹配任何一个方括号中的字符
问号 ?
只匹配一个任意字符
- 在方括号中使用
短划线
分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配
所有 0 到 9 的数字) 两个星号 **
表示匹配任意中间目录
(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)
{width=71% height=71%}
查看提交历史
回退到指定的版本
git reset --hard <CommitID>
开源项目托管平台
专门用于免费存放开源项目源代码的网站,叫做开源项目托管平台。目前世界上比较出名的开源项目托管平台主要有以下 3 个:
- Github(全球最牛的开源项目托管平台,没有之一)
- Gitlab(对代码私有性支持较好,因此企业用户较多)
- Gitee(又叫做码云,是国产的开源项目托管平台。访问速度快、纯中文界面、使用友好
Github
远程仓库的两种访问方式
Github 上的远程仓库,有两种访问方式,分别是 HTTPS
和 SSH
。它们的区别是:
HTTPS
:零配置;但是每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功- [实际开发推荐]
SSH
:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入 Github 的账号和密码
除第一次外,以后再推送代码到远程仓库,只需要
git push
就行了
SSH key
SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输。
SSH key 的好处:免登录身份认证、数据加密传输。
SSH key 由两部分组成,分别是:
- id_rsa(私钥文件,存放于客户端的电脑中即可)
- id_rsa.pub(公钥文件,需要配置到 Github 中)
生成 SSH key
- 打开 Git Bash
- 粘贴如下的命令,并将 your_email@example.com 替换为注册 Github 账号时填写的邮箱:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 连续敲击 3 次回车,即可在
C:\Users\用户名文件夹\.ssh
目录中生成 id_rsa 和 id_rsa.pub 两个文件
配置 SSH key
- 使用记事本打开
id_rsa.pub
文件,复制里面的文本内容 - 在浏览器中登录 Github,
点击头像 -> Settings -> SSH and GPG Keys -> New SSH key
- 将 id_rsa.pub 文件中的内容,
粘贴到 Key 对应的文本框中
- 在 Title 文本框中任意填写一个名称,来标识这个 Key 从何而来
检测 Github 的 SSH key 是否配置成功
ssh -T git@github.com
基于 SSH 将本地仓库上传到 Github
将远程仓库克隆到本地
git clone 远程仓库的地址
{width=52%}
Git分支
master 主分支
- 在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master的分支。通常我们把这个master 分支叫做主分支。
- 在实际工作中,
master 主分支的作用是:用来保存和记录整个项目已完成的功能代码
- 因此,不允许程序员直接在master分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。
功能分支
- 由于程序员不能直接在 master 分支上进行功能的开发,所以就有了功能分支的概念。
- 功能分支指的是专门用来开发新功能的分支,它是临时从master主分支上分叉出来的,
当新功能开发且测试完毕后,最终需要合并到 master 主分支上
查看分支列表
git branch
- 分支名字前面的
*
号表示当前所处的分支
创建新分支
- 使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样
git branch 分支名称
- 但是创建新分支后,并没有自动切换到新分支上,即还是在原分支上。
切换分支
git checkout login
分支的快速创建和切换
- 创建指定名称的新分支,并立即切换到新分支上
git checkout -b 分支名称
合并分支(注意合并分支只是合并到主分支,但没有删除分支)
功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上
- 1.切换到master分支
git checkout master
- 2.在master分支上运行git merge命令,将login分支的代码合并到master分支
git merge login
删除分支
- 当把功能分支的代码合并到 master主分支上以后,就可以使用如下的命令,删除对应的功能分支
git branch -d 分支名称
遇到冲突时的分支合并
- 如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要
手动打开这些包含冲突的文件然后手动解决冲突
远程分支操作
将本地分支推送到远程仓库
- 如果是第一次将本地分支推送到远程仓库,需要运行如下的命令
- 注意:
第一次推送分支需要带 -u 参数
,此后可以直接使用git push
推送代码到远程分支 git push -u origin tabbar
意思是将本地的 tabbar 分支推送到远程仓库进行保存:
查看远程仓库中所有的分支列表
git remote show 远程仓库名称
跟踪分支
从远程仓库中,把远程分支下载到本地仓库中
拉取远程分支的最新的代码
可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中
git pull
- 这里很坑的是,如果你测试的时候,把本地那个xin(之前推送过远程仓库的分支)删了,再在本地新建xin就直接git pull 是不行的。git pull 需要在该分支git push过远程仓库后才能进行
删除远程分支
- 注意区别删除本地仓库分支的命令
git branch -d 分支名字
(强制删除用-D)