From e977efaff5ee60b95a9d2eaa31fee669ccaada99 Mon Sep 17 00:00:00 2001 From: mfg5tzm6n <2758975851@qq.com> Date: Sat, 27 Apr 2024 22:25:41 +0800 Subject: [PATCH 1/3] ADD file via upload --- git-learn | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 git-learn diff --git a/git-learn b/git-learn new file mode 100644 index 0000000..1c351f9 --- /dev/null +++ b/git-learn @@ -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,拉回本地时在转化为对应系统的换行方式。 + +​ (2)git add也被称为跟踪文件,可以用git add .来一次性添加所有的文件("."与add之间要有空格) + +5. git commmit -- 进行文件的提交(先跟踪后才可以提交) + + (1)直接使用该命令在vim界面中写,最后用一个空行留白。这里可以直接写多行提交。 + + (2)用git -m "message"进行提交,如果是多行 + + ``` + git commit -m "fix:bi标题 + 1、你好 + 2、世界" + ``` + + 也可以用多个-m + + (3)git 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 + + (1)git checkout 分支名 切换到相应的分支 + + (2)git checkout -b 分支名 创建并切换到该分支 + + (3)git checkout - 切换回上一个分支。 + +3. 特性分支 + + ​ 通常master(main)分支作为主分支,存放已经开发好的代码,在master的基础上创建其他特性分支,里面是创建中的代码。 + +4. git merge --合并分支 + +(1)git 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 的使用 + + (1)rm:只删除工作区的文件,如果需要删除版本库文件,还需要再追踪。(不推荐使用) + + 如图是一次删除3.md文件的过程: + + ![image-20240427121725488](https://telegraph-image-5jy.pages.dev/file/64005d7bb09a42b50b8f8.png) + + (2)git 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 推送到远程仓库 + + (1)git 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) \ No newline at end of file From badd9dbc5a936d2d2248094e0ac3d61625df8129 Mon Sep 17 00:00:00 2001 From: XYYR-C <2758975851@qq.com> Date: Sat, 27 Apr 2024 22:36:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-learn | 180 ------------------------------------------------------ 1 file changed, 180 deletions(-) delete mode 100644 git-learn diff --git a/git-learn b/git-learn deleted file mode 100644 index 1c351f9..0000000 --- a/git-learn +++ /dev/null @@ -1,180 +0,0 @@ -#### 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,拉回本地时在转化为对应系统的换行方式。 - -​ (2)git add也被称为跟踪文件,可以用git add .来一次性添加所有的文件("."与add之间要有空格) - -5. git commmit -- 进行文件的提交(先跟踪后才可以提交) - - (1)直接使用该命令在vim界面中写,最后用一个空行留白。这里可以直接写多行提交。 - - (2)用git -m "message"进行提交,如果是多行 - - ``` - git commit -m "fix:bi标题 - 1、你好 - 2、世界" - ``` - - 也可以用多个-m - - (3)git 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 - - (1)git checkout 分支名 切换到相应的分支 - - (2)git checkout -b 分支名 创建并切换到该分支 - - (3)git checkout - 切换回上一个分支。 - -3. 特性分支 - - ​ 通常master(main)分支作为主分支,存放已经开发好的代码,在master的基础上创建其他特性分支,里面是创建中的代码。 - -4. git merge --合并分支 - -(1)git 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 的使用 - - (1)rm:只删除工作区的文件,如果需要删除版本库文件,还需要再追踪。(不推荐使用) - - 如图是一次删除3.md文件的过程: - - ![image-20240427121725488](https://telegraph-image-5jy.pages.dev/file/64005d7bb09a42b50b8f8.png) - - (2)git 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 推送到远程仓库 - - (1)git 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) \ No newline at end of file From 46a94e3383c7b25f68fe04d8a460e764e1b9d52b Mon Sep 17 00:00:00 2001 From: XYYR-C <2758975851@qq.com> Date: Sat, 27 Apr 2024 22:41:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fire=E7=9A=84=E4=BD=BF=E7=94=A8=E5=92=8Cgit?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E7=9A=84=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fire-test/fire-calculate.py | 25 +++++ fire-test/fire-random game.py | 30 ++++++ fire-test/fire的使用.md | 33 ++++++ git-learn/git的学习笔记.md | 180 ++++++++++++++++++++++++++++++++ 4 files changed, 268 insertions(+) create mode 100644 fire-test/fire-calculate.py create mode 100644 fire-test/fire-random game.py create mode 100644 fire-test/fire的使用.md create mode 100644 git-learn/git的学习笔记.md diff --git a/fire-test/fire-calculate.py b/fire-test/fire-calculate.py new file mode 100644 index 0000000..0c997bb --- /dev/null +++ b/fire-test/fire-calculate.py @@ -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) diff --git a/fire-test/fire-random game.py b/fire-test/fire-random game.py new file mode 100644 index 0000000..afc3846 --- /dev/null +++ b/fire-test/fire-random game.py @@ -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) diff --git a/fire-test/fire的使用.md b/fire-test/fire的使用.md new file mode 100644 index 0000000..1c84d7d --- /dev/null +++ b/fire-test/fire的使用.md @@ -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) \ No newline at end of file diff --git a/git-learn/git的学习笔记.md b/git-learn/git的学习笔记.md new file mode 100644 index 0000000..d9c2750 --- /dev/null +++ b/git-learn/git的学习笔记.md @@ -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,拉回本地时在转化为对应系统的换行方式。 + +​ (2)git add也被称为跟踪文件,可以用git add .来一次性添加所有的文件("."与add之间要有空格) + +5. git commmit -- 进行文件的提交(先跟踪后才可以提交) + + (1)直接使用该命令在vim界面中写,最后用一个空行留白。这里可以直接写多行提交。 + + (2)用git -m "message"进行提交,如果是多行 + + ``` + git commit -m "fix:bi标题 + 1、你好 + 2、世界" + ``` + + 也可以用多个-m + + (3)git 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 + + (1)git checkout 分支名 切换到相应的分支 + + (2)git checkout -b 分支名 创建并切换到该分支 + + (3)git checkout - 切换回上一个分支。 + +3. 特性分支 + + ​ 通常master(main)分支作为主分支,存放已经开发好的代码,在master的基础上创建其他特性分支,里面是创建中的代码。 + +4. git merge --合并分支 + +(1)git 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 的使用 + + (1)rm:只删除工作区的文件,如果需要删除版本库文件,还需要再追踪。(不推荐使用) + + 如图是一次删除3.md文件的过程: + + ![image-20240427121725488](https://telegraph-image-5jy.pages.dev/file/64005d7bb09a42b50b8f8.png) + + (2)git 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 推送到远程仓库 + + (1)git 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) \ No newline at end of file