type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 24, 2024 05:44 AM
Parent item
领域
使用git管理issue
比较简单,参考官方文档即可:
使用git管理代码
加速github访问
- GitHub 镜像访问
这里提供两个最常用的镜像地址(别登录账号):
也就是说上面的镜像就是一个克隆版的Github,你可以访问上面的镜像网站,网站的内容跟Github是完整同步的镜像,然后在这个网站里面进行下载克隆等操作。
- GitHub文件加速
利用 Cloudflare Workers 对 github release 、archive 以及项目文件进行加速,部署无需服务器且自带CDN.
以上网站为演示站点,如无法打开可以查看开源项目:gh-proxy-GitHub 文件加速自行部署。
- Github 加速下载
只需要复制当前 GitHub 地址粘贴到输入框中就可以代理加速下载!
github免密码push和pull代码
将一个已存在的目录转换为一个 GIT 项目并托管
把已经被版本管理track的文件加入.gitignore
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
切换分支后清除多余的文件
更新本地的所有分支和远端保持同步
代码写一半,忘记切分支/新建分支/修改其他分支的bug
stash常用命令:
git stash
:能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash list
:查看当前 stash 的列表,因为有些时候会存多个暂存区
git stash pop
:将当前 stash 中的内容弹出,并应用到当前工作目录上。
git stash apply
:将堆栈中的内容应用到当前目录,不同于git stash pop
,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
git stash clear
:除堆栈中的所有内容
通过rebase和merge合入开发分支的代码到主分支
将更改在本地分支上进行,在需要合并时,切换到 master 分支拉取最新代码后,根据拉取的内容,再去合并分支。同时这种方式也是更受大家推崇的。
git支持很多种工作流程,我们采用的一般是这样,远程创建一个
主分支
,本地每人创建功能分支
,日常工作流程如下:- 去自己的工作分支
$ git checkout work
- 工作....
- 提交工作分支的修改
$ git commit -a
- 回到主分支
$ git checkout master
- 获取远程最新的修改,此时不会产生冲突
$ git pull
- 回到工作分支
$ git checkout work
- 用
rebase
合并主干的修改,如果有冲突在此时解决$ git rebase master
- 回到主分支
$ git checkout master
- 用merge合并工作分支的修改,此时不会产生冲突。
$ git merge work
- 提交到远程主干
$ git push
这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突。
同步fork的原仓库提交代码
- 克隆代码到本地:
git clone
https://github.com/shiqinfeng1/xxx.git
- 添加原仓库为upstream: 例如
git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git
- 获取原仓库的最新代码:
git fetch upstream
- 合并:
git merge upstream/main
- 如果有冲突,则解决冲突,例如在vscode中编辑处理
- 提交合并的修改:
git push
仓库代码压缩打包
打包后的代码不包含git先关的文件。在一个项目中如果要拷贝另一个项目的代码,那需要先打包再复制,如果直接clone否则会导致git冲突。
代码回滚
标签操作
打标签
删除本地仓库标签
列出标签
推送标签
删除远程仓库标签
注:tagName 为待删除标签名称
代码合并多个中间多个提交commit
下面是合并最新的4个提交:
git rebase -i HEAD~4
这一步需要在编辑框中选择, 一般选s或f合并完成并推送到远端之后, 如果另一端电脑也在使用该分支,那么需要执行:
git reset --hard origin/main
同步刚才的rebase 如果
push --force
失败,那么需要到仓库中设置该分支允许强制push。举例:
- 存在如下commit的git
现在想要把 second, third, fourth commits合并成一个新的commit,把seventh, eighth commits合并成一个新的commit
- 输入指令
- i表示交互性操作
- d25154d0f3138 6e77559cec6 表示将要操作的commit区间,该区间为前开后闭,代表从d25154d0f3138后面的commit: 4d475036216f9a 开始到6e77559cec6
- 后面的闭合区间也可以省略:
- 如果知道需要操作的具体commits个数为7,也可以这样:
代表操作区间从d25154d0f3138后面的commit: 4d475036216f9a到当前commit
- 输入上面的指令后出现如下界面:
为了合并second ,third ,fourth,合并seventh, eighth我们需要做如下改动:
保存并退出该文件,弹出如下界面:
这个界面表示需要输入为合并second third fourth commits的描述,我们做如下修改:
保存退出后,继续自动弹出弹出seventh eighth commits合并对话框:
同理作如下修改:
保存退出后,可以看到rebase成功,并且可以查看rebase后新的提交记录: