Git
什么是git?
git 是一个免费,开源的版本控制软件
GitHub与git的是什么关系
git是版本控制软件
GitHub是项目代码托管的的平台,借助的是git来管理项目代码
Git
版本控制,各行各业都在用
版本控制工具
----svn
----git
git可以帮助使用者进行版本的管理
Git步骤
- 1、 在新建的项目下右击选中 Git Bash
- 2、 命令:1.git init 初始化
- 2.git config --global user.email ''
- 3.git config --global user.name ''
- 4.git add . 提交
- 5.git commit -m '描述信息'
- 6.git log 查看提交记录
- 页面有改动,执行下面
- 7.git add templates/index.html
- 8.git commit -m '写具体改动的内容'
- 不想要上一次改动的执行以下
- 9.git reset --hard 版本号
- 如果有想要上一次功能
- 10.git reflog 版本号
- 11.git reset --hard 版本号
- 12.git status 查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
出现bug,修复bug
方案一:stash
stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
特别的:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。
stash常用的操作:
- 12.git stash 暂是存储
- 13.git stash pop 取出存储的内容 (可能有冲突)
- 14.git stash list 查看“某个地方”存储的所有记录
- 15.git stash clear 清空“某个地方”
- 16.git stash apply 将指定编号记录从“某的地方”重新拿到工作区(可能有冲突)
- 17.git stash drop 删除指定编号的记录
方案二:branch
分支学习:branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。
- 1、创建一个修复bug的分支:git branch bug ,bug分支是在master分支上建的 即:拷贝一份当前所在分支代码到新分支
- 2、查看一共有几个分支 : git branch
- 3、跳转到bug分支:git checkout bug git status 查看状态
- 4、跳转到master分支:git branch master
- 5、创建一个修复bug的分支:git branch dev #只做开发的版本现在就有三个分支了,每个分支都是不一样的,bug修复完了,现在就要合并在master上了。
- 6、master和bug分支合并:git merge bug
- 7、删除bug分支:git branch -d bug
- 8、继续开发,切到dev:git branch dev
- 9、开发完毕,master和dev合并:git merge dev
- 合并的时候可能出现冲突,可能不出现,出现冲突了就得手动解决
MacBook-Pro-4:pondo wupeiqi$ git branch dev # 创建新分支,即:拷贝一份当前所在分支代码到新分支 MacBook-Pro-4:pondo wupeiqi$ git checkout dev # 切换到dev分支 MacBook-Pro-4:pondo wupeiqi$ vim app01/views.py # 开发功能 MacBook-Pro-4:pondo wupeiqi$ git status # 查看状态,即:在dev分支修改了app01/views.py文件 On branch dev 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: app01/views.py no changes added to commit (use "git add" and/or "git commit -a") MacBook-Pro-4:pondo wupeiqi$ git add . # 将修改文件添加到版本库的暂存区 MacBook-Pro-4:pondo wupeiqi$ git commit -m '新功能开发完毕' # 将暂存区的内容提交到当前所在分支,即:dev分支 [dev 32b40cd] 新功能开发完毕 file changed, 2 insertions(+) MacBook-Pro-4:pondo wupeiqi$ git checkout master # 切换回master分支 Switched to branch 'master' MacBook-Pro-4:pondo wupeiqi$ git merge dev # 将dev分支内容合并到master分支 Updating 0972f4b..32b40cd Fast-forward app01/views.py | 2 ++ file changed, 2 insertions(+) 一般流程示例(上图)
MacBook-Pro-4:pondo wupeiqi$ git branch # 当前在master分支 * master MacBook-Pro-4:pondo wupeiqi$ git branch dev # 创建dev分支用于开发新功能 MacBook-Pro-4:pondo wupeiqi$ git checkout dev # 切换到dev分支 Switched to branch 'dev' MacBook-Pro-4:pondo wupeiqi$ vim app01/views.py # 开发新功能到一半,需要紧急修复Bug MacBook-Pro-4:pondo wupeiqi$ git add . MacBook-Pro-4:pondo wupeiqi$ git commit -m '新功能开发一半' [dev b3ac2cb] 新功能开发一半 1 file changed, 2 insertions(+) MacBook-Pro-4:pondo wupeiqi$ git checkout master # 切换回master分支 Switched to branch 'master' MacBook-Pro-4:pondo wupeiqi$ git branch bug # 创建bug分支 MacBook-Pro-4:pondo wupeiqi$ git checkout bug # 切换到bug分支 Switched to branch 'bug' MacBook-Pro-4:pondo wupeiqi$ vim pondo/settings.py # 修改bug MacBook-Pro-4:pondo wupeiqi$ git add . # 提交bug MacBook-Pro-4:pondo wupeiqi$ git commit -m '紧急修复bug' # 提交bug [bug f42f386] 紧急修复bug 1 file changed, 1 insertion(+), 1 deletion(-) MacBook-Pro-4:pondo wupeiqi$ git checkout master # 切换会master Switched to branch 'master' MacBook-Pro-4:pondo wupeiqi$ git merge bug # 将bug分支内容合并到master分支,表示bug修复完毕,可以上线 Updating 0972f4b..f42f386 Fast-forward pondo/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) MacBook-Pro-4:pondo wupeiqi$ git checkout dev # 切换到dev分支,继续开发新功能 Switched to branch 'dev' MacBook-Pro-4:pondo wupeiqi$ vim app01/views.py # 继续开发其他一半功能 MacBook-Pro-4:pondo wupeiqi$ git add . # 提交新功能 MacBook-Pro-4:pondo wupeiqi$ git commit -m '继续开发完成' # 提交功能 [dev c0bfb27] 继续开发完成 1 file changed, 1 insertion(+) MacBook-Pro-4:pondo wupeiqi$ git checkout master # 切换回master分支 Switched to branch 'master' MacBook-Pro-4:pondo wupeiqi$ git merge dev # 将dev分支合并到master分支 Merge made by the 'recursive' strategy. app01/views.py | 3 +++ 1 file changed, 3 insertions(+)
4、修复Bug流程:
- git branch dev
- git checkout dev
# 写代码
- git add .
- git commit -m 'xxx'
- git checkout master
- git branch bug
- git chekcout bug
# 修复bug
- git add .
- git commit -m '紧急修复bug'
- git checkout master
- git merge bug
- git branch -d bug
- git checkout dev
5.家里(将代码推送到github):
先注册一个github
git可以是用该URL进行向远程推送版本信息或获取版本信息
将代码推送到github
- git add .
- git commit -m 'xx'
- git remote add origin https://github.com/WuPeiqi/greenlu.git
- git push origin master
6.公司( 新公司第一次获取代码):
方式一
git clone https://github.com/WuPeiqi/greenlu.git 直接克隆
方式二
git init
git remote add origin https://github.com/WuPeiqi/greenlu.git
git pull origin master 直接拿回来
方式三
git init
git remote add origin https://github.com/WuPeiqi/greenlu.git
git fetch origin master 拿到分支上了
git merge origin/master 合并在一起
git fetch origin master, git merge origin/master这的两句相当于git pull origin master 这一句
7.、阶段三:
协同开发:
-----项目协作者
-----组织
8、注意事项:
--- .gitignore 文件
9、用户认证:
由于Git和Github交互操作可能会很频繁,那么一定少了用户授权的操作,为了防止每次操作重复输入用户名和密码,Git提供了两种解决方法:
1.密钥:
首先创建一对秘钥 ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。
注意:这种方式需要使用GIt中 git@github.com:WuPeiqi/xxxxx.git 格式地址。
使用Git下载指定分支命令为:git clone -b 分支名仓库地址
使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git
如下图所示:
解释一下这个命令:-b表示要从分支下载,v2.8.1就是具体的某个分支的名称,https://git.oschina.net/oschina/android-app.git这是app源码的git仓库地址
协同开发是从分支上clone下来,提交到clone下来的的那个分支上,如下: