一、Git概述
Git 是一个免费开源的分布式版本控制系统,管理代码的工具,具有廉价的本地库,可以储存在本地磁盘上,方便的暂存区域和多个工作分支等特性,性能由于Subversion,CVS,Perforce,和ClearCase等版本控制工具
- 版本控制: 记录文件内容变化,以便将来查阅特定版本的修订情况,记录文件修改历史记录,方便版本切换
- 集中式版本控制系统
CVS、SVN等,有一个中央服务器,保存所有文件的修订版本,开发者通过客户端连到服务器获取最新文件或提交更新,管理员可以掌控每个开发者的权限,只需维护中央服务器控制版本,每个开发者可以在一定程度上看到其他人的工作。一旦中央服务器出现单点故障,则其他开发者无法提交更新,无法协同工作
-
- 分布式版本控制工具
Git、Mercurial、Bazaar、Darc...客户端提取镜像生产本地库,每个客户端都记录的是完整的项目,服务器断网时也可以进行开发, 本地进行版本控制
- Git发展历史
- 代码托管中心--远程仓库
基于网络服务器的远程代码仓库,在局域网下--GItLab(公司搭建属于自己的远程仓库), 在互联网上---GitHub ,Gitee
本地仓库工作如图所示
二、 Git使用
1. 设置用户签名
git首次安装必须设置用户签名,否则无法提交代码,签名用于区分不同操作者身份,与登录的Github或其他代码托管中心的账号没有关系
2. 初始化本地库查看状态
在需要管理的地方进行初始化 git init建立本地仓库
查看仓库状态(现在的分支以及提交的历史) git status
·目前红色的hello.txt文件存在于工作区,需要使用git add 命令提交到暂存区,git commit提交到本地仓库
3. 提交到暂存区、本地库
- git add 文件 提交文件到暂存区
- git rm --cached 文件 删除暂存区的文件
- git commit -m "版本日志信息" 提交到本地库,7位的字符码是简短版本号
- git reflog 查看版本日志信息
- git log 查看详细日志信息,有一个完整的版本号
4. 修改文件
修改--提交到暂存区--提交本地库
5. 版本信息维护
版本查看 git reflog; git log
版本穿梭 git reset --hard 版本号,此时master 分支移到了这个版本号上,可以看到git/refs/heads/master
三、Git分支操作
- 查看当前分支 git branch
- 新建分支 git branch 分支名
- 切换分支 git checkout 分支名
- 修改分支 : 修改文件--提交到暂存区--提交到本地库分支上
- 普通分支合并 git merge 要合并的分支 ,相当于把要合并的分支合并到当前分支上
master 分支没有修改,只有hotfix分支修改了,所以合并的是一个修改
- 冲突分支合并
冲突原因:两个分支在同一个文件的同一个位置有两套完全不同的修改,git无法决定使用哪一个,必须人为指定新代码内容
需要手动解决冲突
分支上保留的是以前的修改,并未改动
五、git远程仓库操作
- github上 创建远程库
- 创建远程仓库别名
- 查看当前所有远程地址别名 git remote -v
- 创建别名 git remote add 别名 远程地址
- 推送本地分支到别名的远程地址上 git push 远程地址/别名 本地分支:远程分支 ,
- -u 记住推送地址及分支,下次推送只需要输入git push即可,第一次输入需要用户名和密码,以后不用,window系统会帮助我们记住用户名和密码,在控制面板的凭据管理器中
- 如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
- 我们本地仓库的版本必须大于远程仓库的版本,否则push失败。
- 拉取远程分支到本地仓库 git pull 远程地址/别名 远程分支:本地分支,拉取动作相当于fetch +merge,将远程分支拉取并与本地分支合并
- 克隆远程仓库到本地仓库 git clone 远程地址 相当于拉取代码,初始化本地仓库并创建别名origin
- 当我们需要clone后想把内容推送到别人的远程仓库时,不可以直接推送,而是需要别人在相应的远程仓库的settings里面操作,填写邀请队友的账号。当我们用git clone的时候,不仅将对方的东西复制过来,而且连对方远程仓库的别名也复制过来
- git clone是在没有本地仓库的基础上clone别人的东西,而git pull则是在有本地仓库的基础上拉取代码到本地。git clone 只是第一次参与开发时用,以后都是用git pull命令
团队内开发协作
A在自己的计算机中创建本地仓库,A在github中创建远程仓库,A将本地仓库推送到远程仓库
B克隆远程仓库到本地进行开发,B将本地仓库中开发的内容推送到远程仓库,A将远程仓库中的最新内容拉去到本地
跨团队开发
程序员 C fork仓库:把对方远程仓库的内容复制到自己的远程仓库, 程序员 C 将远程仓库克隆在本地进行修改,程序员 C 将仓库推送到自己的远程仓库,
程序员 C如果想要把修改内容发给对方,则需要点击pull request命令,然后等待原远程仓库作者审核,原远程仓库作者合并代码即可
SSH免密登录
生成秘钥:ssh-keygen 秘钥存储目录:C:\Users\用户\\.ssh 公钥名称:id_rsa.pub 私钥名称:id_rsa
使用ssh-keygen命令,然后生成秘钥,私钥保存在自己的电脑中,公钥发布在自己的远程仓库中(在settings中找到设置ssh的地方,将公钥的内容复制到那里),然后复制相应仓库的ssh地址,然后正常操作就可以实现免密码登录。
六、 IDEA 集成Git
1. 配置Git忽略文件
忽略原因: 这些文件与项目实际功能无关,不参与服务器上部署运行,忽略以屏蔽IDE工具之间的差异
操作:
创建忽略规则文件xxx.ignore,如git.ignore, 把该文件存放到c:/user/asus/,文件内容如下
# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/# Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar hs_err_pid* .classpath .project .settings target .idea *.iml
在.gitconfig文件中引用忽略配置文件,windows 默认是反斜线需要改为正斜线
2. 定位Git程序
IDEA==>File==>Settings==>Version Control==>Git==> Path to Git executable 找到Git安装目录bin下的git.exe==>test得到版本信息==》ok
3. IDEA 初始化本地仓库并提交到暂存区
- 初始化本地库:VCS==>Input into Version Control==>Create Git Repository==>选中自身项目的根目录
- 提交到暂存区:选中提交文件==》右键==》Git==》Add
- 提交到本地仓库:选中文件==》右键==》Git==》 Commit Directory==》填写提交信息并提交
4. 查看版本信息,切换版本
- IDEA左下角 Version Control==>log 查看提交版本信息,HEAD表明当前所在分支
- 切换版本:选中版本右键==》checkout Revision 版本号
5. 分支操作
- 创建分支: Git==>Repository ==> Branches==>New Branch或者 IDEA 右下角选择Git:当前分支 建立新分支
- 普通分支合并
- 冲突分支合并:需要手动修改以解决冲突并提交
6. IDEA进行Github远程仓库操作
- IDEA==》settings==》pluguins==》选择Git/GIthub/Gitee插件
- 设置Github账号:使用口令登录成功几率大 , IDEA==File==Setting==Github==use Token (使用Github的账号生成一个口令:Setting==Developer settings==Personal access token==权限全选==generate token ==复制口令,口令一旦刷新就会消失,所以需要尽快保存)==粘贴口令==login
- 分享本地仓库到远程仓库: VCS==Import into Version Control==Share project on github ==输入远程库的名字,别名,描述信息==share
- 推送代码:VCS==>Git==>Push或者右键==》Git==》repository ==》push 默认用的是http传输,可以更改为ssh,需要复制ssh 命令,然后将push的远程分支地址改为ssh口令
- 拉取代码:VCS==>Git==>Pull
- 克隆代码:打开IDEA==》get from version control ==>选择Repository输入URL和存放位置
注意:push 是将本地库代码推送到远程库,如果本地库代码和远程库代码版本不一致,push操作失败,因此push操作一定要保证本地库的版本比远程库的版本高
在改本地代码之前,需要先拉取pull一下远程仓库的最新版本在进行修改推送操作
如果远程代码和本地代码不一致,pull会自动合并,如果自动合并失败,需要手动解决冲突
七、自建代码托管平台GitLab
GitLab 使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能,使用Git作为代码管理工具并在此基础上搭建的web服务
GitLab 官网安装
- 准备一个系统为Centos7以上版本的服务器,内存4G,磁盘50G
- 关闭防火墙,配置好主机名和IP,保证服务器可以上网
初始化gitlab
启动服务
浏览器访问gitlab
- 在浏览器输入IP地址或主机名,访问后有一个默认root账号, 需要修改密码
IDEA集成gitlab
- IDEA安装gitlab插件
- 连接gitlab,其余操作和github一样
标签:git,仓库,Git,概述,本地,远程,分支 From: https://www.cnblogs.com/forever-fate/p/17112021.html