git

版本控制-版本迭代

Git和SVN的区别

SVN

svn是集中式版本控制系统, 版本库是集中放在中央服务器的,而工作的时候用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后把自己的改动推送到中央服务器,集中式版本控制系统必须联网才能工作,对网络宽带要求较高。

Git

git是分布式版本控制系统,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上。协同方法为:自己在电脑上改了文件A,其他人也改动了文件A,这个时候,只需两个人把自己的修改推送给对方,就可以互相看到对方的修改。Git可以直接看到更新了哪些代码和文件。

Git环境配置

git安装

官网:http://git-scm.com/

官网下载较慢,可以使用淘宝镜像:http://npm.taobao.org/mirrors/git-for-windows/

按照提示默认安装就行

alt

  • Git Bash:Unix和Linux风格的命令行,使用最多,推荐
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面的git,不建议初学者使用

基本的Linux命令

cd : 改变目录
cd .. :返回上一目录
pwd :显示当前路径
ll :列出所有文件
touch :新建一个文件
rm :删除文件
mkdir :创建文件夹
rm -r :删除文件夹
mv ./xxx ../  :移动文件夹
reset :重新初始化终端
clear :清屏
history :查看历史命令
help :帮助
exit :退出
# 注释

git配置

$ git config -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=E:/developTools/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=xxx
user.email=xxxxxxxxx@qq.com
gui.recentrepo=F:/git_repository
gui.encoding=utf-8

$ git config --system --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=E:/developTools/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master

$ git config --global --list
user.name=xxx
user.email=xxxxxxxx@qq.com
gui.recentrepo=F:/git_repository
gui.encoding=utf-8

###############################设置用户名和邮箱
git config --global user.name "kaka"
git config --global user.email "kaka@163.com"

系统配置

alt

用户配置

alt

Git基本理论

参考:https://www.jianshu.com/p/109e38f395aa

工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果再加上远程的Git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

alt

  • Workspace:工作区,就是平时存放项目代码的地方。
  • Index/Stage:暂存区,用于临时存放新的改动。事实上它只是一个文件,保存到即将提交到文件列表信息。
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置。这里面有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
  • Remote:远程仓库,托管代码的服务器。可以简单的认为是项目组中的一台电脑用于远程数据交换。

工作流程

  1. 在工作目录中添加、修改文件。
  2. 将需要进行版本管理的文件放入暂存区域。
git add .
  1. 将暂存区域的文件提交到Git仓库。
git commit

因此,Git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。

alt

Git分支

分支在Git中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的世界也没啥影响。不过,如果在某个时间点,两个平行宇宙合并了,就需要处理一些问题了。

Git分支中的常用指令
# 列出所有本地分支 
git branch 
# 列出所有远程分支 
git branch -r 
# 新建一个分支,但依然停留在当前分支 
git branch [branch-name] 
# 新建一个分支,并切换到该分支 
git checkout -b [branch] 
# 合并指定分支到当前分支 
$ git merge [branch] 
# 删除分支 
$ git branch -d [branch-name] 
# 删除远程分支 
$ git push origin --delete [branch-name] 
$ git branch -dr [remote/branch]

如果同一个文件在合并分支时都被修改了,则会引起冲突。解决的办法是可以修改冲突文件后重新提交。 master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作。一般情况下在新建的dev分支上工作。工作完后,比如要上新发布,或者说dev分支代码稳定后,可以合并到主分支master上来。

Git项目搭建

alt

仓库搭建

1)创建全新的仓库,需要使用Git管理的项目的根目录执行:

git init  

alt

2)克隆远程目录,是将远程服务器上的仓库完全镜像一份至本地!

git clone https://gitee.com/xxxx/xxxxx.git

git文件状态

  • Untracked:未跟踪,此文件在文件夹中,但是没有加入到git仓库,不参与版本控制,通过git add状态变为Staged
  • Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改,而变为Modified如果使用git rm移除版本库,则成为Untracked文件
  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过git add可进入Staged状态,使用git checkout则丢弃修改过,回到unmodify状态,这个git checkout即从库取出文件,覆盖当前修改。
  • Staged:暂存状态,执行git commited则修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。执行git reset HEAD filename取消暂存,文件状态为Modified
git status

git add .

git commit -m "注释内容"

IDEA使用git

导入Git中的项目

alt

alt

alt

输入账号密码即可

代码的拉取、提交和推送

alt

分支操作

alt