分布式VCS-Git的使用

206 阅读5分钟
版本控制系统(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


更多技术资讯可关注:gzitcast