将pythonfire的使用以及git的学习合并到主项目

Merge branch 'git-learn'
main
XYYR-C 7 months ago
commit 96c60878bd

@ -0,0 +1,25 @@
import fire
import datetime
class DateStr(object):
def cal_days(self, date_str1, date_str2):
"""计算两个日期之间的天数"""
date_str1 = str(date_str1)
date_str2 = str(date_str2)
d1 = datetime.datetime.strptime(date_str1, '%Y%m%d')
d2 = datetime.datetime.strptime(date_str2, '%Y%m%d')
delta = d1 - d2
return delta.days
def days2today(self, date_str):
"""计算某天距离今天的天数"""
date_str = str(date_str)
d = datetime.datetime.strptime(date_str, '%Y%m%d')
delta = datetime.datetime.now() - d
return delta.days
if __name__ == '__main__':
fire.Fire(DateStr)

@ -0,0 +1,30 @@
import fire
import random
class GuessingGame:
def __init__(self, max_number=100):
"""初始化数据"""
self.number = random.randint(1, max_number)
self.max_number = max_number
self.guesses = 0
def play(self):
"""猜数游戏"""
print(f"猜一个介于1和{self.max_number}之间的数。")
while True:
guess = int(input("你的猜测是:"))
self.guesses += 1
if guess < self.number:
print("太小了,请继续猜。")
elif guess > self.number:
print("太大了,请继续猜。")
else:
print(f"恭喜你,猜对了!你一共猜了{self.guesses}次。")
break
if __name__ == '__main__':
fire.Fire(GuessingGame)

@ -0,0 +1,33 @@
#### fire的使用
直接对类的调用
1无初始化数据
![image-20240427210624851](https://telegraph-image-5jy.pages.dev/file/e309aeec0e6233dcafcb0.png)
直接调用时运行文件产生解说help不会显示具体的函数的参数需要对具体的类里的函数描述
![image-20240415152714800](https://telegraph-image-5jy.pages.dev/file/80f0fd009a63d7154036a.png)
当具体对函数来调用help的时候会显示描述和参数
![image-20240415152837332](https://telegraph-image-5jy.pages.dev/file/b63cfccabcbcb00eab00b.png)
2存在初始化数据的猜数游戏
![image-20240427212214775](https://telegraph-image-5jy.pages.dev/file/5b41ff98f543b98141572.png)
运行查看参数这里看到有一个名为play的猜数游戏
![image-20240427212315054](https://telegraph-image-5jy.pages.dev/file/cbbfe178f8da41bef4138.png)
看初始化这里可以看到max_numer可控并且默认为100
![image-20240427212723698](https://telegraph-image-5jy.pages.dev/file/de7f06fdc55db160ad7ce.png)
当选定-m时可以修改max_number参数
![image-20240427212834344](https://telegraph-image-5jy.pages.dev/file/f88531b4b4ebb3a10ff49.png)

@ -0,0 +1,180 @@
#### git的学习使用
##### (一)基本操作:
![image-20240422211553139](https://telegraph-image-5jy.pages.dev/file/f231e32e0e1be20b81df9.png)
1. 安装配置好git
2. 创建目录 init 初始化一个仓库,初始化完成后会出现一个.git文件夹。
3. git status 查看仓库的状态。它会显示所处的分支以及可以提交的内容。包括工作区文件以及缓冲区文件。
4. git add -- 向缓冲区提交文件。
1先创建一个文件然后add一下这里可能会出现一个警告。
![image-20240425222004764](https://telegraph-image-5jy.pages.dev/file/35df80aee19f29fa353e6.png)
这里我们了解一下LF以及CRLF:
> CR是换行符“\r”LF是回车符“\n”windows用CRLF“\r\n“来结束这一行而linux用”\n"来结束这一行。
>
> windows编译器会把行尾转换成“\r\n”
>
> 解决方案git config --global core.autocrlf input 它会在提交时把换行转化为LF拉回本地时在转化为对应系统的换行方式。
2git add也被称为跟踪文件可以用git add .来一次性添加所有的文件("."与add之间要有空格
5. git commmit -- 进行文件的提交(先跟踪后才可以提交)
1直接使用该命令在vim界面中写最后用一个空行留白。这里可以直接写多行提交。
2用git -m "message"进行提交,如果是多行
```
git commit -m "fix:bi标题
1、你好
2、世界"
```
也可以用多个-m
3git commit --amend 修改信息,加上-m 可以不打开vim终端直接进行更改。
![](https://telegraph-image-5jy.pages.dev/file/f6c6c71ec29eb73c2c43a.png)
6. git log 查看提交日志
![image-20240426152334634](https://telegraph-image-5jy.pages.dev/file/b857c324c0384bba4cfa0.png)
git log --graph 可以用图表的形式查看分支
7. git diff -- 查看更改add前后的区别
- 文件被增添的部分用绿色字符,加号来标识;文件被删减的部分用红色字符减号来标识。
- 注意只有文件被add到缓冲区之后才能跟工作区进行比较。
- 可以在后面加文件名来指定查看区别,如果不加,默认输出全部的被修改的文件。
##### (二)分支的操作
> 不同的分支可以同时进行完全不同的任务等到完成后再与master合并分支可以使得团队高效的进行并行开发。
![image-20240426154804775](https://telegraph-image-5jy.pages.dev/file/6a5e24362a8165dc67e42.png)
1. git branch
- git branch + 分支名 创建分支。
- git branch 查看本地分支
- git branch -r 查看远程分支
- git branch -a 查看本地和远程分支
- git branch -d 分支名 删除本地的分支
- git push origin --delete 远程分支名 删除远程对应的分支
- git branch -vv 查看本地和远程分支的关系
2. git checkout
1git checkout 分支名 切换到相应的分支
2git checkout -b 分支名 创建并切换到该分支
3git checkout - 切换回上一个分支。
3. 特性分支
通常master(main)分支作为主分支存放已经开发好的代码在master的基础上创建其他特性分支里面是创建中的代码。
4. git merge --合并分支
1git merge 的指令有三种,--ff --no-ff,--ff-only
2-ff代表可以快速合并fast-forward采用快速合并的方式不能快速合并时采用--no-ff(non-fast-forward),即非快速合并。--ff-only代表只能使用快速合并如果无法快速合并就会拒绝该请求。
- 注意:只有被跟踪,提交后的库发生合并时才会提示记录。需要先将新的分支跟踪,然后再合并;如果是快速合并不会有记录,只有选择--no-ff时真正发生结点的合并才会提示写记录。
![image-20240427110248207](https://telegraph-image-5jy.pages.dev/file/74071ce6acf07a01ed485.png)
- 用git log --graph可以更鲜明的看出合并的方式。
![image-20240427110500682](https://telegraph-image-5jy.pages.dev/file/f685c6cc5587f49927c51.png)
将mater合并到test的最简单流程
```
git checkout test
git merge master
不可简化为一句话git merge master test经测试会提示已执行但是不会真正执行
```
![image-20240427123247023](https://telegraph-image-5jy.pages.dev/file/49604771c66f9dcae733d.png)
> 关于fast -forward 与non-fast-forward的区别
下图便是一次fast forward的流程它本质上是直接移动了指针。
![流程](https://telegraph-image-5jy.pages.dev/file/dcac780cc9e17f2f75a41.png)
而non-fast-forward会创建出一个新的结点合并差异后将其置于头部再把master对应过去。
5. git rm 的使用
1rm只删除工作区的文件如果需要删除版本库文件还需要再追踪。不推荐使用
如图是一次删除3.md文件的过程
![image-20240427121725488](https://telegraph-image-5jy.pages.dev/file/64005d7bb09a42b50b8f8.png)
2git rm删除工作区和缓存区的文件还需要commit才能删除版本库。如果工作区文件与版本库文件不同需要加参数-f。
6. 使用git reset回退版本
1先用git log 查询删除前的hash值
![image-20240427121929088](https://telegraph-image-5jy.pages.dev/file/36b90458612bf4de1d77a.png)
2利用该值进行回退![image-20240427122014829](https://telegraph-image-5jy.pages.dev/file/f284bc53d47d4017d7b44.png)
3查看状态用git restore 恢复文件
![image-20240427122108249](https://telegraph-image-5jy.pages.dev/file/f0aa0f4f729c60a40b0cd.png)
由于git log 只能查看以当前状态为终点的历史所以可以用git reflog查看仓库的操作日志。
##### (三)推送至远程仓库
1. 用git remote add 添加远程仓库
```
git remote add origin git@github.com:xyyr-c/hello--world.git
```
这里我们用origin作为远程仓库的标识符名称
2. git push 推送到远程仓库
1git push -u origin master 将本地的master推送至远程的master分支并且建立关联关联后直接git push 就会默认选择master。
2-f 指令是强制覆盖不要轻易使用这里是由于原本的库里有README与本地产生冲突所以先强制覆盖了。
![image-20240427140231195](https://telegraph-image-5jy.pages.dev/file/10c12f7d27de08e730b76.png)
3. git clone 直接获取远程的仓库,克隆出一个以仓库名作为名字的文件夹,以及相应的文件。
4. git pull 获取远程的仓库分支
本地修改,然后推送至远端的一次过程。
```
在test分支
git pull origin master //拉取主分支
vim README.md//修改文件
git add . //追踪文件
git commit -m "change README"//提交到版本库
git checkout master //切换回master分支
git merge test //合并分支
git push//推送到远程仓库
```
如果出现下面这个图片,说明推送成功:
![image-20240427142106042](https://telegraph-image-5jy.pages.dev/file/219589a7737b91b8275c4.png)
如果出现这个,不会发生文件的变化,一定有地方错了(比如忘记提交到版本库)
![image-20240427142157444](https://telegraph-image-5jy.pages.dev/file/96ec503cca5adf3bf977e.png)
Loading…
Cancel
Save