Git
记录使用Git过程中的总结,主要包括Git命令,GIt与各种IDE的配置,Git与GitHub远程仓库连接
当然使用Git的前提是,设置了SHH,教程指路
Git配置
Git官网下载并安装,配置邮箱、
配置邮箱和姓名
查看邮箱和姓名
Git基础命令
初始化一个仓库
查看远程信息
储存
不常用,主要是为了处理冲突
添加文件
以下内容来自 Claude
y
- 暂存这个块n
- 不暂存这个块q
- 退出,不暂存这个块及之后的块a
- 暂存这个块及之后的所有块d
- 不暂存这个块及之后的所有块j
- 暂存这个块及向下移动到下一个未暂存块J
- 暂存这个块及放弃暂存区的其余部分g
- 选择一个块边界中的另一个块/
- 搜索一个块匹配的模式s
- 拆分这个块为更小的块e
- 手动编辑这个块的内容?
- 显示列表帮助
查看被管理的所有文件
查看是否有变动
pick
将其他分支上的提交,
pick
到当前分支上,相当于,copy
了文件的变动到当前分支提交
与
Pycharm
不同,提交前都需要add
绑定远程仓库,需要先配置SSH并在远程创建好仓库
或者请在GitHub创建完仓库后,自己观察页面,上述代码可以直接复制到
推送
如果远程没有这个分支,第二种方式
第三种方式会将remote倒退至hash commit
查看提交记录
git reflog 显示的内容更多
Git显示中文乱码
step1
设置config
中的引用路径
将终端设置为utf-8
编码
step2
在git bash
的界面中右击空白处,弹出菜单,选择选项->文本->本地Locale
,设置为zh_CN
,而旁边的字符集选框选为UTF-8
。
Git使用新设备打开时,无法显示提交记录
Git无法Push,显示超时
需要删除git
的全局代理后重新Push
有时候是因为SSL证书问题,需执行
一般来说,如果实在解决不了的话,可以挂梯子后使用github desktop解决
建议从以下几个方面排查
检查协议
一般远程仓库的连接有两种方式,git或者http,直接检测远程链接即可
返回值开头是啥就是啥协议
不同协议超时有不同的排除流程
git对应的是ssh协议,检查自己的电脑的ssh私钥和github网站上的公钥是否配置好
http协议则是因为墙,试试代理
建议使用git ssh协议,兼容性更好
使用Pycharm
创建Git仓库
本地创建
Pycharm
的VCS
支持一键创建,就没啥好说的了,一般情况下,是需要使用git命令行创建的,命令好像是 git init
,因为git我是好久以前就配置好了的,ssh
那些都弄好了,所以就记得不太清楚了,在此就只写目前我的工作流
远程创建
此前一直使用GitHub
,我也是它的忠实用户,但是无奈某些原因连接实在是不稳定,所以使用Gitee
临时替代。Pycharm
默认的就是GitHub
,所以直接在Git
窗口中登录Github
账号,然后设置一下远程仓库的名字就好了,因为我已经在Github
中添加了电脑的ssh
,所以后续的推送都很顺利
Gitee
与GitHub
就是大同小异的,也就是登录、创建再提交就成
分享本地项目至远程
使用Pycharm
可以很方便分享,根据提示做好仓库命名和介绍就成,另外要注意可以在在.git
中的config
文件中修改url
为https://{username}:{password}@github{username}/project.git
格式,这样的话可以避免推送的时候让你再次登录
提交与推送
这块就是勾选要提交的文件,然后写一些说明就提交就好了,一段时间后我会推送到远程
一般最开始推送的时候,我会不推送导出数据文件,以及一些设置文件,这样在最后提交项目的时候,就可以直接从GitHub
或者Gitee
上下载压缩包,会比较方便一点,因为确实提交项目的时候那些个人设置文件,一起运行程序的导出文件都是不必要的,会使得压缩包冗大,设置文件甚至出现不知名错误
一旦推送后,最好不要进行修正,因为会导致需要先拉取远程更新,早进行提交推送,是Git
流程出现合并分支的记录(主要是不美观)
分支与合并
这个功能是我新学的,很好用,在已有稳定版本的情况下,如果想做一些尝试性的修改,那么创建一个分支,在分支上修改并测试稳定后,将分支合并到原分支上,然后删除分支就可以了,这个功能真是让我赞不绝口
删除分支
本地的分支合并后,就可以直接删除了,但是远程的分支必须保证该分支表示master
(主要)分支后,才能删除 ,如果是主要分支,那需要在GitHub
或者Gitee
上进入该仓库进行修改后再删除
Git中的一些命名
新分支的时候,可以根据分支需要进行命名(可以为汉字)
使用VsCode
近期的工作都在Vscode中开展, 主要是连接服务器开发, Vscode更方便, 顺便记录一下VsCode中的git管理
Git Graph插件
VsCode中热度最大的git插件应该是git lens, 但是需要收费, Git Graph是一款非常类似Pycharm自带git管理的插件
得益于Git Graph这款插件, 使得在VsCode中进行git管理, 非常方便。有非常清晰的可视化分支, 并可以通过右键方式进行诸如, checkout, merge, rebase等操作
merge or rebase ?
merge 和 rebase为git中进行分支合并时非常常见的操作, 网络上各种介绍很多, 不再班门弄斧
merge 和 rebase有着不同的常见, rebase会使得git历史呈现一条直线. 尽可能整洁, 并在PR时不会冲突(因为在rebase中已经提前解决); 而merge会使得分支溯源更为容易, 会清晰记录分支的走向
对我个人而言, 公司的项目多人参与且contribute较为严格, 使用rebase; 个人项目往往各种奇思妙想比较多, 故使用merge
如何借助Git Graph进行merge ?
定心丸: 只要不push到远程, 无论何种操作都能通过reset复原, 可大胆操作
后悔药: 如果在进行merge, 或者正在解决冲突途中, 想退出, 执行
git merge --abort
即可
确保自己处于master分支上, 选择dev分支右键进行merge into current branch
, 如果有冲突(出现合并冲突), 则解决冲突, 完成后实现merge
如何借助Git Graph进行rebase ?
与merge一样, 仍旧有定心丸和后悔药可以吃, rebase途中退出, 执行
git rebase --abort
即可
确保自己处于dev分支上, 选择master分支右键进行rebase current branch on Branch
, 一般来说都会遇到冲突, 有冲突解决冲突即可, 完成后实现rebase
参数-i可以在交互窗口中实现pick
tipis
后悔药reflog
reflog
只要没被push
到远程,本地的所有操作都可以通过reflog
进行恢复
查看操作历史记录
demo中展示了此repo的最近几条操作记录,寻找出你需要回退的记录对应的hash头
进行回退
需要说明的是,进行回退后,将回到此条操作结束后的状态
PR更新
提交了PR,还没来得及merge, master却发生了更新, 怎么办
将PR rebase 到 remote master
force 提交
其他机器进行pull
其他
修改项目文件的~.git\config中的远程地址,可以直接修改http协议为ssh协议
远端已删除,但是本地还显示有,需要对照
remote
进行修建关于 git submodule
最后更新于