文章目录
1项目管理工具
- 编写文档: word ppt excel markdown
- 项目流程图 : xmind visio
- 项目管理 : project
- 代码管理 : svn git
2. GIT和GitHub
-
GIT的特点
-
git是开源的,多在*nix下使用,可以管理各种文件
-
git是分布式的项目管理工具(SVN是集中式的)
-
Linux下GIT安装
sudo apt install git
2.2 GIT使用
- 上面图片从右到左依次为:
- 工作区:项目所在操作目录,实际操作项目的区域
- 暂存区: 用于记录工作区的工作(修改)内容
- 仓库区: 用于备份工作区的内容
- 远程仓库: 远程主机上的GIT仓库
注意: 在本地仓库中,git总是希望工作区的内容与仓库区保持一致,而且只有仓库区的内容才能和其他远程仓库交互。
2.2.1 初始配置
- 配置命令: (一劳永逸,只需要刚开始配置就好了)
- 配置用户名
将用户名设置为zhangbao(zhangbao是可设置的)
sudo git config --global user.name zhangbao
- 配置用户邮箱
将邮箱设置为zhangbaojack@163.com
git config --global user.email zhangbaojack@163.com
- 查看配置信息
git config --list
2.2.2 基本命令
初始化仓库,可以理解把文件夹变成 工作区
git init
意义:将某个项目目录变为git操作目录,生成git本地仓库。即该项目目录可以使用git管理
用ls -a 查看隐藏文件,可以看到有个.git的文件夹,如果不想使用git管理了,就把这个文件夹删了就ok
- 查看本地仓库状态
git status
说明: 初始化仓库后默认工作在master分支,当工作区与仓库区不一致时会有提示。
将工作内容记录到 暂存区
1,git add 文件名
2,也可以多个文件一起提交,文件之间空格隔开
git add 文件1 文件2 文件3
3,将当前目录的所有文件都记录到暂存区,(add空格后面是个点,我理解和4是一样的效果)
git add .
4,将所有文件(不包含隐藏文件)记录到暂存区
git add *
- 取消文件暂存
git rm --cached 文件名
将文件同步到本地仓库
git commit 文件名 -m '备注说明'
说明: -m表示添加一些同步信息,表达同步内容
不加文件名表示同步所有暂存记录的文件
将暂存区所有记录同步到仓库区
git commit -m '备注说明'
设置忽略文件(不受git管理)
在GIT项目中可以在项目根目录添加**.gitignore**文件的方式,规定相应的忽略规则,用来管理当前项目中的文件的忽略行为。.gitignore 文件是可以提交到公有仓库中,这就为该项目下的所有开发者都共享一套定义好的忽略规则。在.gitignore 文件中,遵循相应的语法,在每一行指定一个忽略规则。
上面一堆解释其实很简单,就是,就是创建个.gitignore文件。(别忘记了前面有个点)
然后把文件名n写在.gitignore文件里,件名n就可以不受git管理了。超出三界之外
.gitignore忽略规则简单说明
file 表示忽略file文件
*.a 表示忽略所有 .a 结尾的文件
!lib.a 表示但lib.a除外
build/ 表示忽略 build/目录下的所有文件,过滤整个build文件夹;
-
查看commit 日志记录
git log 他是自上而下显示日志的
将暂存区或者某个commit点文件恢复到工作区
git checkout [commit] -- 文件名
git checkout -- 文件名
将a.jpg文件恢复,不写commit表示恢复最新保存的文件(一般用这个)
git checkout -- a.jpg
移动或者删除文件(这两个操作会修改工作区内容,同时将操作记录提交到暂存区)
git mv [file] [path]
git rm [files]
注意: 这两个操作会修改工作区内容,同时将操作记录提交到暂存区。
2.3 版本控制
退回到commit之前的节点
1,退回到上一个commit节点
git reset --hard HEAD^
说明: 一个^表示回退1个版本,依次类推。当版本回退之后工作区会自动和当前commit版本保持一致
2,退回到指定的commit_id节点
git reset --hard [commit_id]
commitid 取前七位就可了。
commitid可以通过,git reflog 或者 git log查看
- 查看所有操作记录
git reflog 注意:最上面的为最新记录,可以利用commit_id去往任何操作位置
创建标签(版本)
- 标签: 在项目的重要commit位置添加快照,保存当时的工作状态,一般用于版本的迭代。
1,创建标签(版本)
git tag 自己起的标签版本名 [commit_id] -m '备注说明这是版本n'
说明: commit_id可以不写则默认标签表示最新的(上一次)commit_id,备注说明也可以不写,但是最好添加。
在最新的(上一次)commit处添加标签v1.0
git tag v1.0 -m '备注说明这是版本1'
查看标签
1,查看全部标签列表
git tag
2,查看标签详细信息
git show 标签版本名
去往某个标签(版本)节点
git reset --hard 标签版本名
删除标签
git tag -d 标签版本名
2.4 分支管理
2.4.2 基本操作
查看现有分支
git branch
说明: 前面带 * 的分支表示当前工作分支
创建分支
git branch 分支名字
说明: 基于a分支创建b分支,此时b分支会拥有a分支全部内容。在创建b分支时最好保持a分支"干净"状态。
切换工作分支
1,切换分支
git checkout 分支名字
2,创建分支并切换到这个分支
git checkout -b 分支名字
合并分支
git merge 被合并的子分子名字
注意:分支的合并一般都是 在父分支上 去把子分支合并来
- 删除分支
git branch -d 分支名字 删除已经合并过的分支
git branch -D 分支名字 删除没有被合并的分支(强行删除)
2.4.3 分支冲突问题
冲突情形1—— 合并时:原来的分支增加了新文件或者原有文件发生了变化
此时合并可能会出现:
此时只要先摁 ctrl+o 写入,然后回车,再摁ctrl+x 离开就可以了。
也可能出现提示让直行commit合并,那么此时只需要直行commit操作就可以了。这种冲突比较好解决。
冲突情形2—— 子分支和父分支修改了相同的文件
此时会出现:
解决办法:这个时候,冲突的文件会有子分支和父分支 双方修改的全部内容,需要自己手动进入文件进行修改后,再直行add ,git commit -m '备注说明’操作提交
我:注意了,commit不能带文件名,直接git commit -m ‘备注说明’
下面这个就是冲突的文件
-
总结
- 尽量在项目中降低耦合度,不同的分支只编写自己的模块。
- 如果必须修改原来父级分支的文件内容,那么做好分工,不要让多个分支都修改同一个文件。
2.5 GitHub使用
GitHub网址:github.com
2.5.1 获取项目&&创建项目(内容比较多,建议看看如何从零到一)
-
在左上角搜索栏搜索想要的获取的项目
-
选择项目后复制项目git地址
在本地使用git clone方法即可获取
git clone https://github.com/xxxxxxxxx
拉去到这个项目到本地
注意:
- 获取到本地的项目会自动和GitHub远程仓库建立连接。且获取的项目本身也是个git项目。
- GitHub提供两种地址链接方式,http方式和SSH方式。通常访问自己的项目可以使用SSH方式,clone别人的项目使用http方式。
2.5.2 创建自己的项目仓库
-
添加SSH密钥
# 先建立秘钥信任 1. 将自己要连接github的计算机的ssh公钥内容复制 2. github上选择头像下拉菜单,settings-》SSH and GPG keys-》new SSH key
A. 找到自己的公钥位置:
如果A操作没有找到,说明没有生成过公钥
ssh -keygen
执行这个命令生成公钥再看(执行就用输入个y,其他回车就行。自己注点意看)
(好像是重新生成公钥,能把之前的覆盖了??我也不确定)
B:登陆github,选择右上角头像下拉菜单,点击settings。
title随便写。key把公钥复制上去
#################################################################################
C:点击右上角加号下拉菜单,选择新的仓库
D:填写相应的项目信息即可
E1, 第一种情况,创建一个非空厂库。可选项勾选上。只要勾选一个,创建的就是非空厂库
创建一个非空厂库勾选一个两个三个都可以
成功创建非空厂库
复制ssh地址,(如果添加公钥成功了就选择ssh,否则选择http)
来到终端把项目克隆下来,因为加了公钥,所以不用输入密码
1,查看连接的远程仓库名称
git remote
2,断开远程仓库连接
git remote rm [origin]
[origin]是仓库名称
远程仓库操作命令
1,将本地分支推送给远程仓库
# 将master分支推送给origin主机远程仓库,第一次推送分支使用-u表示与远程对应分支 建立自动关联
git push -u origin master
git push origin [:branch] # 删除向远程仓库推送的分支
2,推送代码到远程仓库
# 如果本地的代码有修改项推送给远程仓库
git push
3,推送旧的版本
# 用于本地版本比远程版本旧时强行推送本地版本
git push --force origin
4,从远程获取代码
git pull
#############################################################################
E:第二种情况,创建一个空仓库
(如果添加公钥成功了就选择ssh,否则选择http)
git remote add origin git@github.com:zhangbaojack/zhangbaojack2023A.git
git remote远程库,add添加为origin的仓库名字(一般默认用官方给的),后面就是ssh地址
执行了这一步,origin就是远程仓库的名字了
git branch -M main
这个意思是将主分支重新命名为main,如果不想命名可以不写
git push -u origin main
如果没有命名,就写git push -u origin master
注意注意注意,第三步详细解释
git push -u 仓库名 分支
这是第一次上传时需要执行的,下次就直接用git push就可以了
三步,复制到终端,别分执行
如果是自己的仓库需要删除
-
如果是自己的仓库需要删除,则选择自己的仓库选择settings,在最后可以选择删除仓库。
2.5.3 远程仓库操作命令
-
在本地使用ssh连接仓库
# 后续操作每次上传内容都需要输入密码,比较麻烦,一般用于临时计算机的连接使用 git remote add origin git@github.com:/tarena/aid.git 注意: 如果连接远程时 git remote add origin 后用https地址,那么以后每次上传内容都需要输入用户名密码
-
查看连接的远程仓库名称
git remote
-
断开远程仓库连接
git remote rm [origin]
-
将本地分支推送给远程仓库
# 将master分支推送给origin主机远程仓库,第一次推送分支使用-u表示与远程对应分支 建立自动关联 git push -u origin master git push origin [:branch] # 删除向远程仓库推送的分支
-
推送代码到远程仓库
# 如果本地的代码有修改项推送给远程仓库 git push
-
推送旧的版本
# 用于本地版本比远程版本旧时强行推送本地版本 git push --force origin
-
从远程获取代码
git pull
在pycharm中也能用
推到暂存区1:刚创建文件的时候会提示,直接点add就可以
推到暂存区2,右键
从暂存区提交到本地库1,右键
从暂存区提交到本地库2
退回到commit之前的节点
3. 综合项目案例
3.1 在线词典
- 功能说明
用户可以登录和注册
* 登录凭借用户名和密码登录
* 注册要求用户必须填写用户名,密码,其他内容自定
* 用户名要求不能重复
* 要求用户信息能够长期保存
可以通过基本的图形界面print以提示客户端输入。
* 程序分为服务端和客户端两部分
* 客户端通过print打印简单界面输入命令发起请求
* 服务端主要负责逻辑数据处理
* 启动服务端后应该能满足多个客户端同时操作
客户端启动后即进入一级界面,包含如下功能:登录 注册 退出
* 退出后即退出该软件
* 登录成功即进入二级界面,失败回到一级界面
* 注册成功可以回到一级界面继续登录,也可以直接用注册用户进入二级界面
用户登录后进入二级界面,功能如下:查单词 历史记录 注销
* 选择注销则回到一级界面
* 查单词:循环输入单词,得到单词解释,输入特殊符号退出单词查询状态
* 历史记录:查询当前用户的查词记录,要求记录包含name word time。前10条即可。