赞
踩
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,
方便版本切换。
集中式版本控制工具 SVN(Subversion)
分布式版本控制工具 Git
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
历史版本是删除不了的,就算在之后的版本覆盖了,还是能切换回未删除时的版本
本地库push到远程库
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
。
mac已经自带git
命令名称 | 作用 |
---|---|
git config -l | 查看所有配置 |
git config --globaluser.name用户名 | 设置用户签名 |
git config --globaluser.email邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add文件名 | 添加到暂存区 |
git commit -m"日志信息"文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard版本号 | 版本穿梭 |
说明:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任
何关系。
git init
添加一个文件后,检测到未追踪的文件
添加暂存区
这个时候文件还是可以删除的,删除的只是暂存区的文件,工作区文件还是在的
将暂存区提交本地库,形成历史版本
查看版本库
修改文件
修改文件后显示modified add 后 commit 显示一个文件改变,一行插入,一行删除,因为git中是按照行来维护文件,那一行被删除后在添加上去,指针指向第二个版本
版本穿梭,切换到指定版本,文件内容也会退回或前进到指定版本的内容
Git 切换版本,底层其实是移动的 HEAD 指针
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败
的分支删除重新开始即可。
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
创建了一个分支后(相当于复制当前指针所指的版本),修改分支的文件,切换回其他分支,发现对其他分支不会产生影响
git merge 分支名
hot-fix分支在master最新节点上复制而来,切换至hot-fix分支修改并commit,切换回master马上进行合并则不会产生冲突,因为两个分支都是在同一个节点基础上(master还未产生新的提交)
冲突只会产生在两个分支相同的一个文件之内,新增的文件不会产生冲突。
自动合并失败
上一步的基础上,切换回master后,更改了master再合并,此时回产生冲突,因为git不知道该以那个分支的为准,此时手动去除git在文件中做的冲突标记就可以合并了
需要手动解决冲突,删除标记符号,手动修改到希望留下来的代码
再 git add。这时 git commit 不能带文件名,否则会报错
跨团队协作,其他人可以fork复制一个远程库,再从复制的远程库clone到本地,修改后push到复制的远程库,最后将复制的远程库pull request 推送到被复制人的远程库
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
git push 别名 分支
小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名
邀请加入团队,只有在团队的人才能往远程库推送代码
填入想要合作的人
复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 该 用 户 , 复 制 内 容 如 下 :
复制的连接发送给需要邀请到的人,同意后就加入了团队
进入其他人的仓库点击forkfork就可以将仓库叉过来,对代码进行编写了
正常commit后,pull request推送到被叉的仓库
被叉的仓库管理员收到pull,点击后审核,点击Merge pull request 合并到当前仓库
1)Eclipse 特定文件
2)IDEA 特定文件
.idea目录 、.iml文件、maven的target目录
问题 1:为什么要忽略他们?
答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。
问题 2:怎么忽略?
1)创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下
git.ignore 文件模版内容如下:
# 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 # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target .idea *.iml
新建了一个工程后,选择VCS就可以将当前工程进行git init 初始化
如在master分支上 合并hot-fix分支,则
修改了hot-fix分支,没修改master所以没有冲突,正常合并
在master分支上 合并hot-fix分支
修改了hot-fix分支,也修改了master所冲突,正常合并
左侧是master分支代码,右侧是hot-fix分支代码,中间是没有冲突的代码,箭头是保留,叉是丢弃。完成后点apply就能自动提交
idea安装码云插件
添加码云账号
向码云推送
点击push就能推送成功
在吗云在线编辑后提交了
重新拉取
复制git的https地址就可以导入了
强制同步,同步github的更新过来
GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有
wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
GitLab 由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它使用 Ruby 语言写
成。后来,一些部分用 Go 语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以及 2000 多名开源贡献者。GitLab 被 IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX 等组织使用。
GitLab 官网地址
官网地址:https://about.gitlab.com/
安装说明:https://about.gitlab.com/installation/
准备一台虚拟机,关闭防火墙、能访问外网、配置好ip
Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。直接将此包上传到服务器/opt/module 目录下即可。
下载地址:
https://packages.gitlab.com/gitlab/gitlabce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
安装 gitlab 步骤比较繁琐,因此我们可以参考官网编写 gitlab 的安装脚本。
直接用vim创建一个脚本,注意第一行安装文件的目录
vim gitlab-install.sh
sudo rpm -ivh /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install -y postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlabce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlabce
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。