黑马程序员技术交流社区

标题: 【广州python】分布式VCS-Git的使用 [打印本页]

作者: 杰哥,我就服你    时间: 2019-1-10 14:02
标题: 【广州python】分布式VCS-Git的使用
版本控制系统(VCS: Version Control System)
E:①解决:版本对比,恢复,管理,备份,合并等版本问题
②记录每个文件的历史修改,可以恢复到任意的历史版本
③解决团队开发时的代码同步问题

版本控制软件
集中式(代表: SVN)
D:版本库只保存在中央服务器,联网工作,有严格的权限控制管理。
分布式(代表:Git)
D:每个用户本地都有完整的版本库,可离线工作,倾向开源项目管理。

Git版本库(本地仓库)
常用命令:
安装git
sudo apt-get install git
设置git用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
创建版本库
进入该项目下:git init
提交代码(代码修改)到 暂存区
git add .提交当前目录
git add 文件名   提交该文件
提交 暂存区 的代码到 本地仓库
git commit -m "代码修改说明"
查看历史版本
git log
单行美观查看
git log --graph --pretty=oneline
查看工作区修改
git status
对比本地工作区某文件修改
git diff 文件名
查看所有版本
git reflog

回退,撤销命令:
状态
操作
命令
当前版本
让本地仓库回到历史版本
git reset --hard 版本号

当前版本
让本地仓库回到未来版本
git reflog查看全部
git reset --hard 版本号
当前版本
版本回退上一个
git reset --hard HEAD^
当前版本
版本回退上上个
git reset --hard HEAD^^
工作区修改了
重置工作区和本地一样
git checkout  文件名(撤销某个文件的修改)
git checkout .(撤销目录下全部修改)
工作区修改了,add提交到暂存区了
重置暂存区和本地一样
git reset HEAD
工作区修改了,add提交到暂存区了
重置工作区和暂存区和本地一样
git reset --hard HEAD


分支
D:分支就是一条独立的版本线,在此分支开发一个单独的功能,提交和下载代码,不会对其它分支造成任何影响。
包括:master 主分支,dev 开发分支,featrue 功能分支
分支的常用命令操作:
创建分支
git branch 分支名
切换分支
git checkout 分支名
创建且切换分支
git checkout -b 分支名
查看当前所处分支
git branch
合并分支
git merge 分支名      ---先切换到合并到那里的分支
删除已合并分支
Git branch -d 分支名 (无法删除自己)
强行删除没合并的分支
Git branch -D 分支名 (-d会报异常)

解决分支冲突:
1.查看冲突:git status
2.通过vim查看合并冲突的文件 vi xxx.py
3.选择要合并的内容,删掉<<<<<<<,=======,>>>>>>>
4.提交解决冲突后的代码:git add .          和git commit -m "冲突解决"
误入GNO nano文件解决:
输入提交注释,ctrl+O保存,回车确定,ctrl+X退出

Github(远程仓库)
D:世界最知名的开源项目免费托管平台,有海量的开源代码
缺点:私有收费,速度慢,免费托管项目只能自己修改,只支持git版本控制

配置SSH密钥对
①创建SSH密钥对,首次的话
ssh-keygen -t rsa -C youremail@example.com     
-----按三次回车生成id_rsa (私钥)和id_rsa.pub (公钥)
查看生成的:id_rsa.pub公钥:cat ~/.ssh/id_rsa.pub
②登陆GitHub,点击 头像 -> settings -> SSH And GPG keys -> New SSH Keys:
输入生成的公钥,提交
终端验证是否配置成功:ssh -T git@github.com,如果出现successfully即成功了

上传本地项目
①创建远程仓库:右上角“+”>> New repository>> 输入Repository name>>
create repsository提交>> 获取刚创建的Github远程仓库的地址,选择SSH的
②添加Git远程仓库地址,示例:
git remote add origin git@github.com:islet1010/PlaneGame.git
如果提示fatal: 远程 origin 已经存在,要删掉远程配置git remote rm origin ,再重新添加
③推送代码到服务器:git push -u origin master

克隆项目
D:下载服务端上的项目到本地
U:实现步骤:
①获取要clone项目的地址
②进入ubuntu的某一个目录下
③执行clone命令:git clone git@github.com:islet1010/PlaneGame.git

推送分支
D:把本地仓库该分支所有的修改,推送到远程仓库对应的分支上,以便团队人员看到
U:实现步骤
①创建并切换分支f1:git checkout -b f1
②修改代码并提交:git add .   和git commit -m “注释”
③把本地分支的代码推送到服务器:git push origin f1
④到github上查看,会看到有新增了分支

跟踪远程分支
U:跟踪远程分支后,能够看到本地分支与远程分支的版本情况
①推送本地分支代码到服务器
# 第一次推送应该加上 -u 表示设置本地分支跟踪远程分支git push -u origin f1  # 非第一次: git push origin f1
②设置本地分支跟踪远程分支:git branch --set-upstream-to=origin/<branch> dev

拉取分支
U:团队开发时,更新服务器上别人提交的代码到本地
①要拉取的分支本地已经存在:git pull
②要拉取的分支本地不存在:
查看远程分支情况:git remote show origin
如果要拉取的分支为“已跟踪”,则git checkout -b 本地分支 origin/服务器分支
如果要拉取的分支为“新的”,则先执行git remote update  再执行git checkout -b 本地 origin/服务器

扩展资料
忽略特殊文件
D:某些文件需要放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件等
U:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
.gitignore
# Python:*.py[cod]*.so*.egg*.egg-infodistbuild.idea# Windows:Thumbs.dbehthumbs.dbDesktop.ini# My configurations:db.ini

工作状态保存栈命令
保存当前工作现场
git stash
查看有哪些临时现场
git stash list  输出结果:
stash@{0}: WIP on dev: 6224937 add merge
恢复某个临时现场
git stash apply stash@{0}
恢复最近保存的工作现场
git stash pop
清空工作状态保存栈
git stash clear











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2