git
版本控制-版本迭代
Git和SVN的区别
SVN
svn是集中式版本控制系统, 版本库是集中放在中央服务器的,而工作的时候用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后把自己的改动推送到中央服务器,集中式版本控制系统必须联网才能工作,对网络宽带要求较高。
Git
git是分布式版本控制系统,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上。协同方法为:自己在电脑上改了文件A,其他人也改动了文件A,这个时候,只需两个人把自己的修改推送给对方,就可以互相看到对方的修改。Git可以直接看到更新了哪些代码和文件。
Git环境配置
git安装
官网下载较慢,可以使用淘宝镜像:http://npm.taobao.org/mirrors/git-for-windows/
按照提示默认安装就行
- 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"
系统配置
用户配置
Git基本理论
参考:https://www.jianshu.com/p/109e38f395aa
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果再加上远程的Git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,就是平时存放项目代码的地方。
- Index/Stage:暂存区,用于临时存放新的改动。事实上它只是一个文件,保存到即将提交到文件列表信息。
- Repository:仓库区(或本地仓库),就是安全存放数据的位置。这里面有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
- Remote:远程仓库,托管代码的服务器。可以简单的认为是项目组中的一台电脑用于远程数据交换。
工作流程
- 在工作目录中添加、修改文件。
- 将需要进行版本管理的文件放入暂存区域。
git add .
- 将暂存区域的文件提交到Git仓库。
git commit
因此,Git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。
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项目搭建
仓库搭建
1)创建全新的仓库,需要使用Git管理的项目的根目录执行:
git init
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中的项目
输入账号密码即可