版本控制工具Git

git的安装与配置

  • 集中式管理工具SVN
    大家拷贝同一份文件,如果有人占用则等待。
    中央服务器被销毁代码将会消失
    与服务器通信出现故障,则无法继续修改代码。

  • 分布式代码工具Git
    将服务器的代码拷贝至本地,不需要频繁与服务器通信,并且能解决服务器代码销毁的情况。

  • git的思想

    • 分布式
    • 快照
    • 状态区
    • 分支
  • git的安装与配置
    下载git客户端
    https://git-scm.com/downloads
    查看git版本

    git --version
    

    查看git的配置信息

    git config --list 
    git config --global user.name xxx
    gir config --global user.email xxx
    

    删除git配置

    git config --global --unset user.name xys
    

    查看git的设置,可以到项目文件夹,查看隐藏文件,有一个.git的文件夹,里面保存着所有git项目的配置信息,个人配置信息保存在Git的个人配置。

    配置别名 Alias

    git config --global alias.st status
    

常用git的指令

创建 提交 查看状态

   git init   
   //将远程仓库拷贝到本地
   git clone
   //创建一个readme文件
   touch README
   //打开readme文件
   vim README
   //使用查看仓库状态 
   git status
   //将文件提交到暂存仓库
   git add README
   //将文件提交到本地仓库,并添加注释
   git commit -m “add README”
   //查看提交记录
   git log
   //根据提交者的名字,查看提交记录,方便写日志使用
   git shortlog
   //追加修改
   git commit -amend -m "追加修改的内容"
   //git diff查看文件的具体变化
   git diff README
   //查看不同节点的版本差异
   git diff HEAD 或者git diff HEAD^  
   //git diff 可以借助第三方的工具查看 比如beyond compare
   //查看每行代码的历史修改人 
   git blame +文件

Git回退

//修改完软件,然后使用git checkout 文件,修改完文件以后,然后使用git status 将会提示文件被修改,然后使用git checkout 回退文件,此时文件将会变为未修改状态。
git status 
git checkout  
//将文件移出暂存区
git reset HEAD<flie> to unstage 
//撤销commit的提交记录,不修改本地工作区
git reset <last commit SHA> <file> 
//HEAD表示当前版本,HEAD^表示上一个版本HEAD~100表示上100个版本 。
git reset --hard HEAD^
git commit id回到对应的版本
查看所有的提交历史记录
git reflog 

git文件操作

//删除文件
git rm 
//暂存文件
git stash 
//恢复暂存文件(前者不会删除记录)
git stash apply 和 git stash pop 
//删除记录
git stash drop

Git远程仓库

个人搭建一个远程服务器可以使用 OSChina或者Gitee,企业端开发可以搭建Gitlab作为代码仓库。

//本地仓库和远程仓库进行通信的时候需要使用SSH进行身份认证生成id_ras和idras.pub文件
ssh-keygen -t rsa -C"you@email.com"

id_ras是私钥用于验证自己得身份,id_rsa.pub公钥用于在Git远程服务器上标明自己的身份。

将公钥复制到远程服务器上,然后创建一个repo代码仓库,将会出现提示如何使用这个repo。

echo "textGit" >>README.md
git init 
git add README.md
git commit -m "frist commit"
git remote add origin "git仓库的地址"
git push -u origin master

其中origin表示的是远程仓库的名字, -u参数会将本地分支和远程分支进行关联。后面提交可以不用添加-u参数。
协助时遇到的问题,使用git pull拉取最新的修改,会留下一个Merge History,可以用使用git pull --rebase指令拉取最新的修改,该指令的作用是将未提交的代码添加到最新版本中,避免过多的Merge History

//拉取远程最新的代码,如果代码没有冲突,远程代码和本地代码将会自动Marge
git pull origin master
//git clone 是拉取远程代码
git clone <git 地址>

使用https的方式会要求输入账号密码,SSH通过对称加密的方式来验证,比较方便。

分支管理

发布一个版本,开发新功能的时候,可以先建一个分支,新功能开发完毕后,额可以通过合并分支将新功能merge到其他开发者的分支中。
//创建并切换到一个分支上
git checkout -b dev
//-b参数是创建并切换,相当于如下指令
git branch dev
git checkout dev 
在切换分支的时候,如果有未提交的代码,是无法进行切换分支的。可以使用git statsh将代码进行暂存,然后使用git pop指令将代码调出。

//查看分支
git branch
//合并代码(出现冲突的话,冲突代码会在文件中显示,需要自己解决冲突)
git merge dev
//使用git rebase合并分支,时间线会被合并,而merge操作不会。
git rebase dev
//删除分支
git branch -d dev
//没有合并的分支在删除的时候,使用
git branch -D dev
//查看远程分支
git remote
//查看分支信息
git remote -v
//推送分支
git check out -b dev
git push origin dev

中央服务器称之为origin,主分支称为master,一般开发不会在主分支上进行,主分支用于打tag和发布relase版本,leader以上的级别开发者将其他分支merge到主分支。开发的时候需要建立一个develop分支,提交的时候提交到develop分支。分支使用完毕后,可以删除,避免管理混乱。

tag的作用是标记master的节点记录。通常打在master分支上,保证代码的准确性。

//创建tag
git tag version 1
//指定id创建tag
git tag version0 +指定sha1code id 
//创建带标签的tag
git tag -a v1 -m "version1" +codeid
//查看tag
git tag 
//查看指定tag的详细信息
git show <tagnamae>
//删除标签
git tag -d version
//删除本地tag,重新push到远程仓库
git push origin:refs/tags/version0

Git图形化工具

Git for windows

Github Desktop(只能管理github上的服务)

SourceTress

Androidstudio Git
当一个项目被添加到Git Root后,就可以VCS菜单进行版本控制管理了。

在项目中多操作,多思考,才能逐渐掌握git的使用技巧。也可以通过在线网站的游戏练习的方式进行熟悉git工具的使用。

实践

//创建tag
git clone  仓库地址
//切换git分支
git checkout 分支
//提交到暂存库
git add .
//提交到本地库
git commit -m "备注" 
//提交到远程仓库
git push origin :refs/for/分支

容易发生的错误

1、git add 的时候,将不需要的资源文件add到暂存仓库了,或者漏Add文件。
2、git pull的时候,如果出现代码冲突,先要解决冲突,再push上去。

重装系统后从零开始配置

  • 登录到gerrit_readme网页,然后得到账号密码,跳转到代码仓库平台,此时没有权限,在设置当中设置名字和绑定邮箱号,然后叫管理员开放一下权限。下载git工具,点击安装。
  • 配置一下git的用户名和邮箱,使用ssh命令生产公钥,添加到gerrit上面去。
  • 然后在git bush中就可以将代码clone下来,在as上添加git的插件。提交的时候使用pull commit push 命令。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐