参考:地址
Git
之前总结了集中式版本控制工具:SVN,这次总结一下 Git 相关的使用。
Git与SVN的区别
集中版本控制 SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改:
分布式版本控制 Git
所有版本信息仓库全部同步到本地的每个用户,可以在本地查看所有版本历史,也可以离线在本地提交:
区别
-
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
-
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!
相关配置
右键打开GitBash:
git config -l //所有配置
git config --system --list //系统设置clear
git config --global --list //用户配置
Git的配置文件都在本地:
-
Git\etc\gitconfig:Git 安装目录下的 gitconfig【系统级】
-
C:\Users\Administrator\ .gitconfig:只适用于当前登录用户的配置【全局】
修改配置
比如修改用户配置
git config --global user.name “moke_test”
基本理论
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、仓库区(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
操作流程
git的工作流程一般是这样的:
-
在工作目录中添加、修改文件
demo.java
-
将需要进行版本管理的文件放入暂存区域
git add .
-
将暂存区域的文件提交到git仓库
git commit xxx -m “text”
-
将git仓库推送到远程仓库
git push
项目搭建
除了上文操作流程中提到的的命令外,还有一些其他的常用操作。
创建本地仓库
git init
克隆远程仓库
git clone [url]
文件的四种状态
查看指定文件状态:
git status [filename]
-
Untracked: 未跟踪。
此文件在文件夹中, 但并没有加入到git库,不参与版本控制。
-
Unmodify: 文件已经入库, 未修改.。
这种类型的文件有两种去处,如果它被修改,而变为Modified;
如果使用git rm移出版本库,则成为Untracked文件。
-
Modified: 文件已修改。
这个文件也有两个去处,通过git add可进入暂存staged状态;
使用git checkout 则丢弃修改过,返回到unmodify状态。
-
Staged: 暂存状态。
执行git commit则将修改同步到库中,,这时库中的文件和本地文件又变为一致,文件为Unmodify状态.。
执行git reset HEAD filename取消暂存, 文件状态为Modified
忽略文件
项目中有些文件(.idea、iml等)不想纳入版本控制,在主目录下建立 .gitignore 文件:
*.txt #忽略所有 .txt结尾的文件
!lib.txt #lib.txt文件除外
/temp #仅忽略项目根目录下的TODO文件,不包括目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt
免密登录
在我们本地仓库修改后推送到远程仓库,如果没配置免密登录,每次都需要输入相关平台(GitHUb、Gitee)的账号密码。
# 进入 C:\Users\Administrator\.ssh 目录
# 使用如下命令生成公钥
ssh-keygen -t rsa
之后,将生成公钥信息 public key 添加到相关平台中。
IDEA 使用 Git
暂时不用插件,随便打开一个本地仓库,在IDE的右上角可以看到IDEA集成的git基本操作按钮:
此外,还提供了一个控制台,可以看到仓库的一些信息:
而push等所有操作,可以在命令行完成:
分支操作
不使用分支可以进行多人之间的协作,而分支开发则是团队或小组间的协作。在版本控制过程中,可以通过多个分支同时推进项目多个不同功能的开发,任何一个分支上功能开发失败都不会对其他分支造成影响。
分支常用命令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支
git branch [name]
# 新建一个分支,并切换到新建的分支分支
git checkout -b [name]
# 合并指定分支到当前分支
git merge [other-branch]
# 删除分支
git branch -d [name]
# 删除远程分支
git push origin --delete [name]
git branch -dr [remote/branch]