git指南
烦人的git
首先我们下载一个git
https://git-scm.com/到这里下
首先我们要知道什么是版本
版本就好比,我们画一个小人,当我们画好第一个版本的时候,我们进行了一次保存,
我们给他发送给我们的老板,第一次发过去后我们老板说不好看,在加上一朵花会好看一些
这是我们就会保存原来的版本
起名叫(画小人第一版)
当我们画好了一朵花 给老板时候,老板说在手里在放个苹果吧,这时我们需要保存
(画小人在加朵花)
然后画好了苹果再发给老板,老板说都不要了,给小人上加一个帽子吧
然后我们又画了一个帽子,你会发现好多代码啊
好多重复的啊这可如何是好啊,如果我们后期在弄出个别的怎么办啊。
这就是我说的版本,和版本的问题
多而杂,乱
git我们可以理解为一个版本的管理工具
首先我们进行一个创建
进入一个我们想要做git的文件夹内,
git init
这个文件夹下会多一个隐藏文件.git
今日内容概要:
1. Django内容补充
- FBV&CBV
- 中间件
2. Git使用
- 什么是GIT,
- 张开的故事:资源共享网站
- 小弟弟系列
- 小芳系列
- 第一个版本:进入程序目录:
git init 初始化
git add . 当前目录中所有文件添加到【某个地方】
git commit -m '描述信息' 第一版本git已经生成
git status
- 新功能: 李浩专区
开发到了一半,紧急修复线上BUG
git stash
解决bug
git add .
git commit -m '修复bug完毕'
git stash pop
可能出现冲突,出现之后不要着急,手动解决冲突
Auto-merging templates/index.html
CONFLICT (content): Merge conflict in templates/index.html
开发功能完毕
git add .
git commit -m '解决冲突后,继续开发后续功能'
PS:
git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash list 查看“某个地方”存储的所有记录
git stash clear 清空“某个地方”
git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop 编号,删除指定编号的记录
- 疑问:
git log
git reset --hard 3ee80517425148b9d87591c9bd29a77e3db89ff2
git reflog
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan
$ git init 第一次创建.git文件夹
Initialized empty Git repository in C:/Users/wang/PycharmProjects/teacheryuan/BlogYuan/.git/
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git status 查看git的版本
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
.idea/
BlogYuan/
blog/
db.sqlite3
egon.jpg
manage.py
templates/
nothing added to commit but untracked files present (use "git add" to track)
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git add . 将代码保存到git文件夹下临时保存
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in blog/static/kindeditor-4.1.10/kindeditor-min.js.
The file will have its original line endings in your working directory.
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git commit -m '第一次提交' 将临时保存的文件加上描述信息正式保存到版本库里
[master (root-commit) 8aa00d8] 第一次提交
345 files changed, 78179 insertions(+)
create mode 100644 .idea/BlogYuan.iml
create mode 100644 .idea/dataSources.ids
create mode 100644 .idea/dataSources.local.xml
create mode 100644 blog/static/kindeditor-4.1.10/examples/qqstyle.html
create mode 100644 templates/reg.html
create mode 100644 templates/showContent.html
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ ls 查看当前文件文件夹
blog/ BlogYuan/ db.sqlite3 egon.jpg manage.py* templates/
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git status
On branch master
nothing to commit, working tree clean
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git log 查看保存过的版本和保存描述信息
commit 8aa00d8207656e8ee8abd3c36804a6d6d889781c 唯一的版本号
Author: wang935415150 <935415150@qq.com>
Date: Mon Sep 18 14:38:32 2017 +0800
第一次提交
我们修改了一些文件的代码后
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git status 再次查看
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: manage.py 自动检测到修改的文件并且为红色
no changes added to commit (use "git add" and/or "git commit -a")
$ git add * 将manage.py更新到临时库中 *代表全部更新 加上文件名字代表只更新哪一个文件
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git commit -m "加了个time模块" 降临时更新到库中
[master 78cd09d] 加了个time模块
1 file changed, 1 insertion(+)
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git status
On branch master
nothing to commit, working tree clean
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git log
commit 78cd09dce1f838b30302d1b74cbfd02d70a3f7fb
Author: wang935415150 <935415150@qq.com>
Date: Mon Sep 18 15:24:20 2017 +0800
加了个time模块
commit 8aa00d8207656e8ee8abd3c36804a6d6d889781c
Author: wang935415150 <935415150@qq.com>
Date: Mon Sep 18 14:38:32 2017 +0800
第一次提交
wang@DESKTOP-L6U2NU7 MINGW32 ~/PycharmProjects/teacheryuan/BlogYuan (master)
$ git reset --hard 8aa00d8207656e8ee8abd3c36804a6d6d889781c 版本回滚到想要的版本中 后面的一长串代表唯一版本号
HEAD is now at 8aa00d8 第一次提交
代码开发了一半,上线功能有bug的时候
开发一半的代码我们要做一个暂存
git stash 进行暂存
git stash pop 我的bug改完了也提交分支了,然后我们在取回来
会做一个新的合并
如果修改了一个地方不能自动合并因为有可能修改一个地方出现冲突
提示你templates/index下进行修复
我们有1,2,3,4版本
如果我们直接回到2版本
那么我们3和4就找不到了
这则么办呢
git reflog就可以查看到3和4和所有的版本
我们
这时候我们就可以回到想要的版本
git reset --hard 版本号
进阶版本
1. Git
工作区 版本库 远程仓库
未修改 已修改【红色】 暂存【绿色】 分支
上节回顾Git:【master】
git status
git add 文件名
git add .
git commit -m 'xxxxx'
git log
git reflog
git reset --hard xxxxdfasdf
git stash
git stash pop
分支:
提交master分支已经修改的问题,或者回到原始状态
git branch dev
git checkout dev
Dev
# 开发一半...
# git branch
git add .
git commit -m 'xasdf'
# 继续开发
git add .
git commit -m 'xasdf'
Master:
git checkout master
git merge dev
通过Bug分支紧急修复Bug
GitHub(代码托管)
GitLab(公司自己搭建代码托管)
公司:
创建远程仓库
写readme
git add .
git commit ...
git push origin master
下班
家:
git clone https://github.com/WuPeiqi/s5day83.git
git add .
git commit ...
git push origin master
到公司:
git pull origin master
# 继续开发,开发到一半,留点代码回家做
git add .
git commit -m 'xxx'
# git push github master
家:
根据自己的记忆继续写代码:
在家完成后续功能
git add .
git commit -m 'xxx'
git push origin master
公司:
git pull github master
git fetch github master
git merge github/master <=> git rebase github/master
解决冲突
# 继续写代码
git add .
git commit -m 'xxx'
git push github master
协同开发:【点点点】
分支:
master
review
dev
协同:
3个人:dev
组长:代码review,合并完成后,
你有没有给不牛逼的代码修改过Bug?【点点点】
- 么有
常用点点点操作:
- 合作开发
- 项目:添加合作者
- 组织:创建人,开发项目
- Fork
- pull request
头疼问题:连接远程仓库
Https
- 手动输入用户名密码
SSH
- 生成一对秘钥 cd ~/.ssh/
- 公钥拷贝到GitHub
- git add remote origin git@github.com:WuPeiqi/Tyrion.git
git pull origin master
git push oriing master
忽略文件 : .gitignore
创建这个目录需要在.git同级目录下进行制作
命令是linux下的命令 vim .gitignore
然后在里面添加下面这样子的或者正则表达式就可以
a.* 代表着含有a的文件
test/[abc].py代表 test文件夹下a.py b.py c.py 都会停止
test/* 代表test下的所有文件都不要了
!test/a.py 代表除了test/a.py 其他都不要检测了
.idea/* 这是pycharm自带的功能建议不要了
*.pyc 这是python的编译文件建议不要了
*.excel 这是文本文件如果重要就可以不传了
PS: git命令只能在: .git 文件的路径