码迷,mamicode.com
首页 > 编程语言 > 详细

python-django项目基础-git相关_20191118

时间:2019-11-18 20:09:33      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:tco   ade   推送   结束   工作区   现在   集中式   修复   port   

python-django项目基础-git相关

git简介:

  • svn是集中式的管理系统,
  • git是分布式的管理系统,现在使用的非常广泛,
  • github在2008年上线,提供开源项目的免费git存储,

git特点:

  • 版本控制,这是第一个特点,可以解决多人开发代码的问题,
  • 分布式,这是第二个特点,同一个git代码,可以分布到不同的机器上面
  • 有一个中央服务器,会保存一个代码的完整版本,其他人开发的时候,
  • 先从中央服务器copy一份到自己的电脑上,你就可以工作了,你改完代码,再放上去,
  • 这个服务器你可以自己搭建,也可以使用github网站,
  • 中央服务器挂了你也可以工作,但是集中式的挂掉了,你就不能用了,

git安装和配置,

  • 安装:sudo apt-get install git
  • 输入git,输出一堆命令,就是装好了,
  • 新建一个git_test目录,在这个下面创建一个版本库,
  • 在该文件夹内,输入git init
  • 多了一个.git,这个就是一个空的仓库,

创建版本

  • vi code.txt,新建了一个文件,然后提交,
  • 创建版本有两步:
  • 1,git add code.txt
  • 2,git commit -m ‘版本1‘  这两句命令一起做,说明信息实际工作中要输入有意义,
  • git log,可以看提交的记录,记录里有commitid

版本回退:

  • 1,在git_test下面创建了一个文件,code.txt,提交之后是版本1,
  • 2,修改了code.txt,提交之后是版本2,
  • 这两个版本是后面的是依赖前面的版本的,这不是完整的copy的,是,修改的部分
  • 我想要回到版本1,怎么回退:
  • HEAD会指向最新的版本,HEAD^这是前一个版本,HEAD^^这是前两个版本
  • 还有一种表示方法,HEAD~1,前一个版本,HEAD~100,前100个版本,
  • 命令:
  • git reset --hard HEAD^,这就是回到上一个版本,
  • 这个时候并没有把版本2,删除,那怎么回到版本2:
  • git reset --hard 832657f,后面跟版本号,很长不需全部复制,可以使用前六位,
  • 其实这个很快,因为只是指针移动了一下,版本已经存在了,
  • 但是如果提交的版本看不到了怎么办?
  • git reflog,这个可以看历史的所有的版本操作记录,前面就是短的版本号,
  • 这些非常的有用!

工作区和暂存区,

  • 工作区,编辑文件的目录就是工作区,gittest就是工作区,
  • 版本库,隐藏的目录.git 就是版本库, 它在git_test下面
  • 版本库里面,有一个区域叫暂存区,
  • 创建版本分为两步,git add,就是就是把文件修改添加到了暂存区了,
  • gitcommit就是把暂存区的所有内容提交到分支,创建了一个版本记录
  • git status,这个可以看到各个文件的状态,
  • 状态修改,就是修改过,
  • 状态未跟踪,就是没有提交过,
  • 提交了之后,工作区就是干净的了,就是都已经提交了,

git版本管理

  • 一定要把修改都加入暂存区,然后再修改,否则,还是会提示已经修改过,
  • git checkout  --  code.txt 这个就是已经取消了修改,丢弃改动,这是没加入暂存区的取消
  • 如果已经加入暂存区了,怎么取消修改?
  • git reset HEAD code.txt ,这就是取消了暂存区的修改,
  • 如果你都提交成本版了,就只能回退了

git对比文件不同,

  • 这是开发中经常使用的,
  • 对比工作区的和版本库的一个文件对比,
  • git diff HEAD -- code.txt
  • 有+ - 就是代表某一个文件特有的,
  • -号代表的是HEAD这个版本的
  • +号代表工作区里面的,
  • 对比两个版本之间的不同,
  • git diff HEAD HEAD^ -- code.txt,这是在比较上一个版本和这个版本,

git删除文件,

  • rm 文件名,在工作区删除一个文件,
  • 如果你想要撤销删除呢?
  • git checkout  --  code.txt ,这样可以把删除的文件,回来,
  • 如果你真的想要删除呢?
  • git rm code2.txt,这是把删除提交到了暂存区,
  • 如果你想要撤销呢?git reset HEAD code.txt,取消暂存区的修改,
  • 如果你就是想要修改,就可以git commit -m ‘版本记录说明‘
  • 技巧,版本记录过长,怎么简短显示
  • git log --pretty=oneline
  • 你还可以回滚,找回删除的内容,

删除文件补充

  • 如果你编辑文件之后,从来没有提交过,然后你删除了,就找不回来了,

##########################################

上面就是最基本的操作了,

############################################

git分支管理

git分支简介:

  • 一个线就是分支,分支就是流水线,分支之间是互不干扰的,
  • 线重合了,就是分支合并,
  • 开发一个功能不是一天两天开发玩的,为了不影响别人,你可以开一个分支,开发结束之后,你可以一次性合并到原来的分支,这样安全也不影响别人工作,

git创建和合并分支

  • 上面讲的都是在一个分支,这就是一个主分支,master分支,默认的分支,
  • HEAD先指向分支,然后指向分支最新的版本,
  • 每次提交,master这个线都往前移动一次,提交越多,线越长,
  • git创建分支非常的快,比如创建一个dev分支,
  • 比如你在一个位置创建一个分支,就是创建一个指针也指向这个记录,同时让HEAD指向dev,这就是新分支了,这个和master分支是有关系的
  • 你提交dev分支,就和master分支没有关系了,
  • 怎么合并:
  • 合并很快,就是指向同一个地方,
  • 删除分支很快,就是删除指针,就剩下一个分支了,
  • 查看分支:git branch

创建分支:

  • git checkout -b dev,这是创建并切换到一个分支

  • 切换就是HEAD执行了dev分支,

  • 现在修改文件,提交就是提交到了dev分支了,
  • master指针指向是不动的,dev是有一个新的版本记录了,指向最新的记录

切换分支:

  • git checkout master
  • 切换分支很快,就是指针指向master分支,

合并分支:

  •  git merge dev,这个就是合并分支,就是把指针master和dev指向一个地方了,
  • 这种合并是快速合并,Fast-forward,
  • 这个时候你就可以删除分支了,
  • git branch -d dev,这就是删除分支了,很快就是把指针删除了,
  • 有些时候是不能这么合并的,

解决冲突:

  • 有些时候合并分支不总是成功的,
  • 举例:
  • 先在dev分支,修改code.txt内容,并提交,这是dev分支提交2,
  • 切换回master分支,修改code.txt内容,并提交,这是master分支的提交,
  • 这个时候你再去合并分支就有问题了,合并的时候会报错,有冲突
  • 然后要解决冲突,
  • 冲突提示之后,
  • 你进入文件,vi code.txt
  • 需要你手动进行融合
  • 然后你再去提交代码,就可以提交成功了,
  • 这是又一个新的版本记录了,
  • git log --graph --pretty=oneline,这个可以展示冲突提交到解决冲突的图形,
  • 在两个分支,修改了同一个文件,然后合并分支的时候,就会有冲突,

分支管理策略:

  • 通常的时候,如果可能,会采用快速合并的方式,
  • 但是有些时候并没有冲突,但是也会快速合并失败,这个时候git会帮你合并并作一次新的提交,但是这种方式,删除分支后,会丢失分支信息,
  • 1,首先创建并切换到dev分支下,
  • 2,在dev分支,新建一个文件code3.txt.编辑内容,并且提交一个commit
  • 3,切换回master分支,编辑code.txt,做一个新的commit,
  • 这种合并的时候,两边也是有差异的,怎么合并?
  • 4,合并dev的内容到master,
  • 这个时候不会起冲突,但是快速合并的时候会报错,
  • 跳出一个有很多选项的界面,需要你输入一个解释,
  • 但是这个怎么退出,这不是一个vi,输入ctrl+x ,然后输入y,回车,就出去了, 
  • 这个时候就合并了 ,这个是git帮我们合并的,

    Merge made by the ‘recursive‘ strategy.

  • 这就是把两个分支的合并到一起了,
  • 这又是一次新的提交,可以输入,git log --graph --pretty=oneline,这是图形,

 

  • 有些时候我们还可以强制禁止快速提交模式,fast forward,git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息了,
  • 1,创建并切换到dev分支,
  • 2,在dev分支,code.txt文件添加新行
  • 3,切换到master分支,合并dev分支,
  • 这个时候没有冲突,git会使用快速合并,有些时候,为了保存dev的合并记录,我们会禁止快速合并,
  • 怎么禁止?
  • 命令:git merge --no-ff -m ‘禁止快速提交‘ dev,
  • 这个时候会做一次新的提交,如果快速合并模式,就不会有新的提交了, 

bug分支

  • 软件里面如果遇到bug,每个bug会新建一个临时的分支修复,修复之后,合并之后,会把临时的分支删除,
  • 当你接到一个bug,这个时候你在工作,你手上的工作没有完成,不能提交,怎么办?
  • git提供了一个stash功能,可以把你当前的工作保存起来,等以后bug修复之后恢复现场再开始工作,
  • 1,在dev分支,你在工作,来了bug,你git stash,这是把当前工作保存,
  • 2,切换到master分支,新建一个bug临时分支,

    git checkout -b bug001,

  • 3,

    在这个分支里面,修复代码的错误,然后提交,
  • 4,切换到master分支,合并bug001分支的代码
  • 这个时候为了保存这个bug修改记录,就要禁止快速提交,保留这个记录
  • git merge --no-ff -m ‘修复bug001‘ bug001
  • 这个时候就可以工作了,
  • 5,git stash list,这个是保存的工作现场的列表,
  • 6,git stash pop,恢复工作现场, 这个现场就回来了

###################################

上面都是分支相关的

#########################################

github

  • 有一个中央服务器,你可以在上面拉取代码,
  • 修改了之后,推送上去,
  • 我们就是这么工作的,
  • 这个中央服务器,你可以自己搭建,也可以使用github网站, 

github创建仓库,new repository  新建存储库

  • 登陆github
  • 右上角有一个new repository,点击
  • 项目名称必填,描述可以不填,公有的私有要收费,需要readme文件,忽略.pyc文件,
  • 现在有一个问题,我修改.gitignore文件的时候,不能commit changes,我怀疑是浏览器版本的问题,我现在更新一下,

github添加ssh账户,

  • 后面我们经常要使用自己的电脑,跟这个github的仓库进行交互,
  • 交互之前需要你把电脑上的shh账户,添加到github账户里面,然后才可以和github交互
  • 怎么添加:
  • 进入右上角,settings,点击
  • 然后找到ssh,点击,

 

 

  

python-django项目基础-git相关_20191118

标签:tco   ade   推送   结束   工作区   现在   集中式   修复   port   

原文地址:https://www.cnblogs.com/andy0816/p/11884499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!