Git几个概念与工作流程:
仓库(Repository)
Git是按仓库(Repository)来管理文件和文件夹的。一个仓库内可以有不限数量的文件和文件夹,大小也不限。
一个仓库在用户的机器上的呈现就是一个目录,目录里一般包含两部分内容:
• Git目录(.git directory)
在仓库里有一个’.git’目录,这是Git保存仓库所有历史信息的地方。如:谁在什么时候更改了什么,有哪些分支(Branch),哪些标签(Tag)等。这个目录完全是由Git自己控制的,千万不能修改这个目录的任何内容。Git目录有可能是隐藏目录,你可能在Windows资源管理器中看不到。
• 工作目录(working directory)
仓库目录本身也是你的工作目录,这个目录里就是你当前工作的版本。你可以在这个目录里做你想要的修改。
Git仓库还有一个重要的概念叫做索引(index)。这是你的工作目录和Git目录之间的一个暂存区(staging area)。你在工作目录中的修改首先要保存到暂存区,然后可以一起提交到Git目录。记住你提交的内容是你放在索引(或暂存区)里的内容,而不是你工作目录的内容。这个工作方式给了你灵活性,让你可以有选择的提交你的更改。
工作流程
仓库就是用户使用Git的地方。一般来说,先克隆(clone)一个服务器仓库,从而在本地机器上得到一个本地仓库(目录)。在这个本地仓库(目录)里,用户可以添加、删除、修改文件或文件夹。当用户认为工作到了一定阶段后,可以提交(commit)这些变化到本地仓库。提交变化会生成一个版本,将来可以用于比较或者恢复当时的状态。频繁提交变化是比较鼓励的,并不会带来太多额外的开销,反而是为将来恢复这个状态很有帮助。
所有提交的修改都保存在本地仓库,并没有上传到服务器仓库,因此别人是无法看到你的修改。如果你认为你的工作需要上传到服务器,就通过推送(push)把你在本地仓库的修改上传到服务器。
如果别人也上传了修改到服务器,假如你也想取得他的修改,你需要拉取(pull)服务器上的仓库到你本地仓库。拉取(pull)操作会把服务器上新的变化拿到本地,并跟你的工作合并。如果合并过程中出现Git不能自动解决的冲突,会提示你解决。
一、安装gitlab服务器
- 安装依赖
yum install -y curl policycoreutils-python postfix
systemctl enable postfix
systemctl start postfix
- 下载gitlab包,安装
rpm -ivh gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
- 修改gitlab配置文件指定的IP和端口
vim /etc/gitlab/gitlab.rb
-
- 重置并重启Gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
到此,gitlab服务器安装完成,为管理员账号设定一个密码,使用管理员root即可登录。
二、gitlab使用
- 安装Git客户端
Git有很多不同的客户端软件,在Windows上,推荐使用官方的Git for Windows。下载地址为:https://git-scm.com/downloads,根据自己的Windows版本,选择下载32位或64位的Git版本。然后击安装即可。
- 设置Git for Windows
开始使用Git之前,每个使用者都需要设置自己的个人信息的,包括名字(Name)和邮件(Email)。这个名字和邮件是Git用来记录修改者信息的。这些个人信息只需要在客户端软件进行设置,不会影响使用者对Git项目的访问权限。比如一个使用者的个人信息如下:
名字(Name): acai
邮件(Email): acai@163.com
从Windows的程序中运行“Git Bash”,出现Git窗口。运行如下命令(注意区分大小写)来配置Git个人信息:
git config --global user.name " acai"
git config --global user.email " acai@163.com"
配置SSH密钥
Git使用SSH进行通信加密和账户认证,每台电脑客户端都要生成该电脑专用的SSH密钥。密钥生成需要使用Git Bash命令行工具。生成好的SSH密码要放入GitLab账号中才能生效。
运行Git Bash,打开命令行窗口,运行如下命令(注意大小写)。在接下来提示输入的时候,按回车确认使用缺省的设置(共三次回车)。最终生成SSH密钥(包括私钥和公钥)。
ssh-keygen -t rsa -C "GitLab" -b 4096
找到SSH公钥,在Git Bash命令行中,运行如下命令,找到刚刚生成的SSH公钥(注意大小写及.):
cd .ssh
cat id_rsa.pub
用鼠标选中SSH密钥部分,从ssh-rsa开始,直到GitLab,然后点击右键,复制选中的内容。
打开浏览器,登录gitlan
在GitLab的Web页面,从右上角选择账号的“Profile Settings”。
然后选择“SSH Keys”页面,在Key对应的文本框内粘贴刚才从Git Bash复制的SSH密钥,点击Title下面的文本框,然后单击“Add Key”。
成功后显示如下信息:
如果同一个GitLab账号使用多台电脑操作Git,每台电脑都需要各自生成不同的SSH密钥,然后分别加入GitLab账号中。每个SSH密钥,要采用不同的Title。
- Gitlab基本操作
Git for Windows包括两个Git客户端,一个是基于命令行的Git Bash,一个是基于图形界面的Git GUI。Git常见的基本操作包括:
• 创建新的服务器仓库
• 克隆服务器仓库
• 提交版本
• 推送本地版本到服务器
• 拉取服务器版本
• 查看变更历史
首先,可以创建用户,服务器仓库(适用于仓库管理员),Project创建成功后,出现如下界面。红色标注部分显示该仓库的访问地址。同上使用SSH方式访问。
gitlab仓库创建后,通常工作从克隆服务器仓库开始,从Windows程序中运行Git GUI,
点击“Clone Existing Repository”。“Source Location”填写服务器仓库的链接,格式为:
如果是第一次使用Git,可能会出现如下窗口提示确认服务器SSH的密钥。在输入框中输入“yes”,点击“OK”继续。
注意:通过Windows资源管理器,进入“Target Directory”可以看到仓库的内容。在该目录中可以进行需要的操作,按照原来的Windows目录的操作进行即可,千万不要动“.git”目录。
克隆了服务器仓库后,可以在该目录中完成正常的工作。当工作到达一定阶段后,根据自己的需要,可以提交变更生成版本。新建立的仓库为空,可以直接复制其他部分文件夹的内容到该目录,然后提交。
方法:
打开“Git GUI”, 选择“Open Existing Repository”。选择本地仓库目录,点击“Open”
出现Git GUI窗口。Git GUI窗口分几个部分:
Unsataged Changes:为当前发现变化的文件。
Staged Changes:为已经计入列表准备提交的文件。
右边上半部分为当前选中文件的变化内容。
右边下部分为提交变化时的注释,是提交时必须填写的。
注意:提交仅仅提交到了本地仓库中,并未提交到服务器上,其他人是看不到该版本。工作中,每天可以提交多次到本地。当到一定程度后,需要推送到服务器。一次推送可以把本地多次提交的版本一起推送到服务器。
方法:
“Push”或菜单中 “Remote->Push”。勾选“Include tags”,单击“Push”按钮推送到服务器。
同理:拉取服务器版本主要是为了获得其他人提交并推送到服务器的修改。