Git

GIT介绍  

Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,

GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

  • 无GitHub:在本地 .git 文件夹内维护历时文件
  • 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

基本流程

  1.进入到git

  进入项目的文件夹,右键git bash hrer

  2.初始化   

  git init

    会在当前目录自动创建 .git 文件夹(默认隐藏的),该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中

  3.配置信息

  如果你第一次使用git的时候,需要配置一下。如果你已经配置了,以后就不用配置了

  

  4. 查看、添加、提交文件

  1.git status   查看文件的git状态(未添加的、更新过的文件显示红色;添加过的显示绿色;提交到版本库的显色白色)

  2.  git add 文件名   添加当前目录下的文件到版本库

     git add .      添加当前目录下的所有文件到版本库

    3.    git commit -m “描述信息(一定要准确)”    提交添加到版本库的文件

 5.代码回滚

  1.    git log     查看版本记录(日志记录)   英文状态下按Q 退出

  2.    git reset --hard "版本号"     回滚到指定版本

  每一次生成的时候commit后面都会随机的生成版本号

  

  3. git reflog    git reset --hard 71e1846       (回滚到指定版本后,又想返回去)

  

  6.版本区和缓存区

  Git把管理的文件分为了两个区域四个状态。

  工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。

  版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。

7.线上代码操作

问题一:在开发新的功能同时,线上的代码出现了bug,需要修复:

方案一:stash

stash相关常用命令:

  • git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
  • git stash list        查看“某个地方”存储的所有记录
  • git stash clear     清空“某个地方”
  • git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
  • git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
  • git stash drop      编号,删除指定编号的记录

stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。

1.git stash  # 将开发到一半的直播功能,临时存储到“某个地方”

2.找到对应的版本修复bug并且提交到版本库

3.git stash pop    # 将开发到一半的直播功能从“某个地方”再次拿会工作区继续开发

注意:执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。(关闭pycharm在文件夹中修改)

方案二:branch

分支学习:branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。

 流程:

1. git branch dev     # 创建新分支,即:拷贝一份当前所在分支代码到新分支

2. git checkout dev   #切换到新分支

3.开发新功能,如果线上代码有bug,则先保存git add .

4.切换 git checkout master.  修改bug

5.修改bug时,最好先创建一个新bug分支,进入bug分支  git bouch  文件名 (创建文件)修复bug 最后添加、提交

6.切换到master分支

7. 合并分支 git merge bug

注意:git merge 时也可能会出现冲突,解决冲突的方式上述stash相同,即:找到冲突文件,手动修改冲突并提交

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(+)
详细操作

branch相关常用命令:

  • git branch 分支名称             创建分支
  • git checkout 分支名称          切换分支
  • git branch -m 分支名称        创建并切换到指定分支
  • git branch                          查看所有分支
  • git branch -d 分支名称         删除分支
  • git merge 分支名称              将指定分支合并到当前分支

 git rebase 合并分支

  git rebase 合并+将提交记录合并到一条主线=> 提交记录整洁

  如果产生冲突:
    解决完冲突后加git rebase --skip继续走

github

  giehub版本存储仓库:
    公共:
      - github
      - 码云
    自己搭建:
      - gitlab

  

a.  创建项目 + 拷贝地址 https://gitee.com/wupeiqi/xianglong.git

b. 家,本地代码推送远程
cd 项目目录
git remote add origin https://gitee.com/wupeiqi/xianglong.git
(origin 别名)
git push origin master
git push origin dev

继续写代码
git add .
git commit -m '提交记录'
git push origin dev


c. 第一次公司
下载代码
git clone https://gitee.com/wupeiqi/xianglong.git (如果文件夹是空的则直接clone)

或创建目录

git init 

git remote add origin https://gitee.com/wupeiqi/xianglong.git
git pull origin maste    拉分支(master默认拉下来了)

git branch 查看分支

ls 查看文件

touch 文件名
cd 目录 

git
创建dev分支
git checkout dev
git pull origin dev


继续写代码
git add .
git commit -m '提交记录'
git push origin dev   (第一次提交会让你输入信息  输入i 写信息 在Esc :wq即可)
d. 回家
拉代码:
git pull origin dev

继续写:

继续写代码
git add .
git commit -m '提交记录'
git push origin dev

  

posted @ 2018-04-13 19:31  无名!  阅读(253)  评论(0编辑  收藏  举报