三个区
-工作区 存放文件的地方
-暂存区 工作区的变更,提交到暂存区
-版本库 暂存区的内容,提交到版本库
git常用命令
1 文件夹想被git管理,文件夹作为仓库
先来到某个文件夹下敲
git init
初始化仓库 ,当前文件夹多出 .git 文件夹,这个文件夹不要删,如果删除,这就不是git仓库了,之前的版本再也找不回来了,也不能被git管理
2 查看文件变化
git status
-红色:工作区变化了,但是没有提交到暂存区
-绿色:已经提交到暂存区,没有提交到版本库
-没有:所有东西都在版本库中了[所有文件都被git管理起来了]
3 把工作区变更提交到暂存区
git add 文件夹
git add . # 当前路径下所有变更都提交
5设置作者(全局,局部)
全局的意思是当前操作系统下所有仓库,提交到版本库时,都用这个作者
局部只针对于当前仓库
git config --global user.email "306334678@qq.com"
git config --global user.name "liuqingzheng"
6 查看版本库版本信息
-git log
-git reflog # 更精简一些
7 把工作区的变更,回退 【还没有放到暂存区】
-增加的内容,删除
git checkout .
8 把暂存区,拉回到工作区[由绿变红]
git reset HEAD
9 回到某个版本
-只要被版本管理了,可以回退到任意版本
git reset --hard 版本号
git忽略文件
使用步骤
-1 在仓库目录下 .git 所在目录下 新建 .gitignore
-2 在里面写忽略文件
mode_models
.idea
*.pyc
*.log
-3 写的就会被忽略
-4 已经被管理过的不会被忽略
忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
git分支
# 分支操作
-分支查看
git branch
-分支创建
git branch 分支名
git branch dev
-分支切换
git checkout dev # 切换到dev分支
-分支删除
git branch -d dev
-合并分支:(重要)
-把dev合并进master
-先来到master分支:git branch checkout master
-执行合并命令:git merge dev # 把dev合并到我(master)身上
# 分支合并可能会出冲突
# 公司里分支方案:小公司
-master分支,dev分支,bug分支 ,所有人在dev分支开发,开发完成合并到主分支
-master分支,dev分支,bug分支 ,个人分支,个人在个人分支上开发,开发完成合并到dev分支
git远程仓库
# 把本地的版本提交到远程仓库
# gitee,github,gitlab。。。。
# gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715
# luffy_api 写好了一部分功能,要把代码提交到远程仓库
# 操作步骤:
本地:
1 在luffy_api 敲git init
2 设置忽略文件(.gitignore)
3 git add .
4 git commit -m '第一次提交'
------提交到了本地版本库-------被版本管理了
远程:
1 远程要创建仓库:gitee上创建仓库,右上角 +
2 填一些信息,保证仓库是空的
本地:
1 安装远端提示的步骤操作
2 设置用户和邮箱
3 咱们是已有仓库
cd luffy_api
# 添加一个远程仓库地址名字叫origin,地址是xxx
git remote add origin https://gitee.com/liuqingzheng/luffy_api.git
# 把本地的版本库推送到远程仓库
# 把本地当前所在分支,推送到 origin对应的远程的master上
git push origin master
# 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)
# 如果提交了,再写忽略文件的步骤
luffy.log--->暂存区---》版本库
.gitignore---》写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到
删除luffy.log---》会被监控到---》add,commit---》版本库中已经没有luffy.log
再出的luffy.log,就不会被管理了
ssh方式连接远程仓库
# 刚刚提交代码---》输入了用户名密码---》才可以提交上去----》使用的是https的协议提交的代码
-它需要输入用户名和密码
# 咱们要使用ssh方案:需要公钥和私钥 ---》公司里这种方式多
-私钥在本地保存
-公钥配置到gitee上
-以后再提交代码,不需要其他任何认证了,一路绿灯
# 使用步骤:
- 生成公钥私钥:https://gitee.com/help/articles/4181
-在命令窗口中执行,一路回车
ssh-keygen -t ed25519 -C "306334678@qq.com"
-生成在:C:\Users\Administrator\.ssh 两个文件,一个公钥,一个私钥
-把公钥,配置在gitee上
-之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
git remote remove origin
git remote add origin git@gitee.com:liuqingzheng/luffy_api.git