Git仓库使用
一、推送本地库到远程库
1、新建库,并创建测试文件 test.txt
2、设置用户信息
git config --local user.name 'simple'
git config --local user.mail 'simple@163.com'
3、关联本地库与远程仓库
git remote add origin <远程仓库连接>
添加后,远程库的名字就是origin,这是Git默认的名字,也可以改成别的,但是origin这个名字⼀看就知道是远程库。下一步,就可以把本地库的所有内容推送到远程库上:
git push -u origin master
第一次推送时,远程库和本地库并不同步,需要先拉取远程库到本地库才能推送,远程库默认创建了README.md 和 .gitignore 文件
处理完冲突后,来到这一步
git push -u origin master
第⼀次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master 分支关联起来
只要本地作了提交,就可以通过命令:
git push origin master
把本地 master 分支的最新修改推送至远程仓库
git remote show 查看远程仓库
origin相当于远程仓库的链接别名
git remote show origin 查看远程仓库明细
上面命令展示了origin的详细信息,
Fetch URL:远程拉取的url
Push URL:push推送的url
HEAD branch :头指针指向的 master 分支
Remote branch :同时远程分支是被追踪的状态
Local branch configured for 'git pull':本地 master 分支被配置成 git pull 会拉取并且合并远程 master
Local branch configured for 'git push':本地 master 分支配置成 git push 推送远程 master
4、查看远程分支
origin master关联的是远程的master分支,用于追踪远程分支的状态
git branch -a 查看远程分支
加上参数v可以查看本地分支和远程分支的最后提交
此时,本地 master 和 远程 master 是同步的,都是最新的
修改 a.txt 文件
提交修改后再查看git status,发现本地master分支领先了1次提交。
从分支的详细信息中可以看到,远程分支的提交版本和master的提交版本不同,本地领先了。
把本次修改推送到远程,
远程和本地便保持了版本的同步
二、多人协作
1、项目克隆
把远程项目克隆到本地形成一个本地的仓库
git clone <远程仓库地址> <自定义名字>
发现克隆下来的仓库和远程仓库的名字一致
可以通过命令中的自定义名字的选项定义克隆到本地后,本地仓库的名字
2、多人协作
克隆远程仓库并命名为 testGit1
进入当前仓库,并设置仓库级的用户和邮箱
没有做其他变动,和远程仓库是一致的
3、协作处理
在 testGit 中通过 simple 添加文件 c.txt 并推送到远程
simple 的 push 已经到远程仓库
在testGit1仓库中 niko 查看远程状态发现已经过期
此时 niko 应该从远程仓库来更新拉取
fast-forward表示不需要手工处理冲突直接合并
4、冲突处理
当两个人修改同一个文件的同一行的时候就会发生冲突
使用 simple 修改 c.txt 内容后,提交并且推送到远程
此刻 niko 也修改 c.txt 内容,提交并且推送远程的时候发现出现冲突,推送失败
此刻 git 要求先拉取更新
提示拉取成功,但是自动合并失败。git建议修改冲突后提交,保留 niko 的
5、分支推送协作
在 simple 下创建 develop 分支
发现 git push 无法把 develop 推送到远程
git push --set-upstream origin develop 把本地的分支推送到远程分支
可以看到远程分支已经推送
同时本地也关联了远程develop分支
除此之外,还可以使用下面命令完成远程分支推送
git push -u origin <分支名>
6、分支拉取协作
由于 simple 已经推送,使用 niko 的账户来拉取,可以看到新建立了分支
发现有远程分支,但是没有本地的develop分支。
这时可以创建本地的 develop 分支,同时也可以修改本地分支的名字
git checkout -b <自定义本地分支名> <远程分支名>
还可以使用另一种方式本地分支的追踪,但是必须要先 git pull
git checkout --track <远程分支名>
7、远程分支的删除
在 simple 仓库删除 develop 分支,删除之后远程的 develop 分支关联还在
删除对应的远程分支
通过 niko 用户来查看本地对应的远程分支的时候,可以看到远程分支的变化
git remote show origin
git remote prune origin 查看 origin 远程对应的分支
三、tag标签远程管理
1、git tag <标签名> 创建标签
新建标签,标签有两种:轻量级标签(lightweight)与带有附注标签(annotated)
创建一个轻量级标签。
创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)
创建一个新文件 v2.txt ,并提交远程仓库
创建一个带有附注的标签
git tag -a v2 -m 'v2 version'
创建 v3 标签,用于删除标签
2、git push origin推送标签
创建一个新文件 v3.txt ,并提交远程仓库
创建v3标签
把三个标签推送到远程
远程仓库可以看到标签信息
3、标签拉取
使用 niko 用户拉取远程仓库中的标签
4、删除远程标签
在 simple 上删除远程标签 v3,此时,本地还存在
simple 和 niko 中删除本地标签
git push origin --delete tag <标签1> <标签2> 批量删除
5、标签检出
git checkout -b <branchName> <tagName>
创建 tx_master_v1.0 标签并且推送到远程
通过此标签来检出分支myfeature:
git checkout -b myfeature tx_master_v1.0
次分支这是本地分支,可以推送到远程
四、Git图形界面
1、gitk
在仓库路径下输入gitk
在界面上可以看到提交的流程。包括分支的合并。同时可以做分支管理和标签管理
2、Git GUI
在命令行中输入git gui
五、Idea 中集合 Git 使用
打开IDEA进入设置界面(可以直接点击工具栏上的,也可以通过快捷键 Ctrl + Alt + S ),搜索git,如下图是我设置好的:
可以看到 Git 是在 VersionControl 选项里
Path to Git executable 就是本地 Git 安装路径中 bin 目录下的 git.exe,选择好路径后点击 Test 按钮,如果正确安装且路径正确,那么会弹出如下对话框,表示配置成功:
创建 git 本地库,克隆 GitHub 上的仓库
通过idea引入代码
可以发现当前代码没有在 idea 的 git 上关联,选中添加即可。
此时 idea 和 git 本地库就已经关联上了。
此刻就可以开发了。
六、GitLab的使用
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
1、安装GitLab
Gitlab的rpm包集成了它需要的软件,简化了安装步骤,所以直接安装rpm包即可,rpm包的获取从官方网站或者国内镜像源(如:清华https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/)获取,gitlab又分为社区版和企业版(收费),这里部署的是社区版本10.8.4
可以使用命令:
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm
进行在线安装
这里使用安装包本地安装
在根目录 / 下创建安装目录,mkdir -p /usr/local/src/gitlab
进入 gitblab 目录 输入命令:
rpm -ivh gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 进行解压
解压后输入命令:
vi /etc/gitlab/gitlab.rb
修改配置,使能够从外界访问
找到 external_url ,修改为云服务器的ip地址
输入命令:
gitlab-ctl reconfigure
重新加载配置
提示已经重新加载了配置
输入命令 :
gitlab-ctl status
查看gitlab运行状态
已经成功安装
2、登录并产生秘钥
访问服务器 ip 地址
重置密码
登录:默认用户名是root,密码使用刚刚重置过的。
创建空白项目
选择项目路径,输入项目名称,项目描述,选择项目等级(私人的,内部的,公开的)
上面有一行黄色的提示,要求我们配置ssh
首先在服务器上生成公钥:
ssh-keygen
使用默认值,需要三次回车,生成类似的内容
输入命令:cat .ssh/id_rsa.pub,查看公钥,将公钥复制到 gitlab 中
我们在远程机器生成私钥
生成新的SSH密钥:ssh-keygen -t rsa -C "your_email@address"
此命令将提示您用于存储密钥对和密码的位置和文件名。当提示输入位置和文件名时,只需按Enter键即可使用默认值。如果使用其他名称,则不会自动使用该密钥。
在C盘下 .ssh 文件夹中会生成 id_rsa 和 id_rsa.pub 两个文件,其中 id_rsa.pub 里面是以ssh-rsa开头并以您的用户名和主机结尾的完整密钥。将密钥复制粘贴到 profile settings中 SSH keys 选项卡下,add an ssh key ,保存。
步骤:
在window系统打开命令行输入
ssh-keygen -t rsa -C "renliangjava@163.com"
打开id_rsa.pub,把所有内容复制
到Gitlab中将密钥复制粘贴到profile settings中 SSH keys 选项卡下,add anssh key ,保存。跟添加公钥的步骤完全一致
仓库的使用和Gitee与Github相同。