如何在Linux环境下建立Git Server并设置用户

如何在Linux环境下建立Git Server并设置用户,第1张

我的演示环境是一个Amazon EC2的instance,安装好了Ubuntu 1604,并且已经安装有git。
我们想达到的目的是这样的:
建立一个名为/srv/git的文件夹,对于我们当前项目,会有一个相应的my_projectgit文件夹,我们可以在本地使用git push origin master或者git pull origin master命令来推送或者取回相应的文件。
首先git是存在多种protocol的,我们使用的是ssh。所以在建立用户的时候,我们需要建立相应的public key及private key,并且将public key添加到服务器端ssh/authorized_keys文件中(稍后会介绍如何 *** 作)。

 Git是一款开源分布式版本控制系统,能够帮助Linux管理内核开发,那么Linux要如何使用Git,下面就是Linux使用Git的方法:

初始化git仓库,使用git init命令

 添加文件到git仓库分两步:

1、使用git add filename ;可分多次使用,添加多个文件到暂存区

2、使用git commit -m “说明” ;完成提交到分支

查看工作区状态,使用git status 命令;如果提示有修改可使用git diff filename 查看修改内容

HEAD指向当前版本,HEAD^表示上一个版本,HEAD^^上上一个版本……HEAD~100指向之前第100个版本。

回退版本:使用git log查看提交历史;使用git log --pretty=oneline 精简显示

使用git reset --hard commit_id 回退到版本号为commit_id的版本

回退版本之后如果想再看改回来,可以使用git reflog 查看历史命令,找出想改回的版本号,再使用git reset hard commit_id 返回即可。

注意:git跟踪并管理的是修改,而不是文件,如果一个文件修改并add之后,再次修改,如果不再次add就提交的话,只会提交第一次的修改。

撤销修改:

1、如果文件还在工作区,即没有add也没有commit,则使用git checkout -- filename 还原到服务器版即可;

2、如果已经add到暂存区,首先使用git reset HEAD filename从暂存区取回工作区,再按照1进行 *** 作即可;

3、如果已经提交到版本库,则按照版本回退的方式进行修改即可;

4、如果已经push到远程仓库,就麻烦了

删除使用以下命令:

1、git rm filename 从工作区删除

2、git commit -m ”说明“ 更新分支中文件进行删除

将在工作区的文件删除之后,可以使用git checkout -- filename 从分支中取回,但是只能恢复文件到最新版本,最后一次提交之后的修改则不能恢复。

分支:

1、创建分支

git checkout -b branchname 创建并切换到改分区,相当于一下两个命令:

git branch branchname 创建分支

git checkout branchname 切换到分区

2、查看当前指向的分支:git branch 会列出所有分支,当前指向的分支之前多了个

3、切换分支就是git checkout branchname

4、合并分支:git merge branchname 合并branchname到当前分支

5、删除分支:git branch -d branchname 删除branchname分支

注意:创建、合并、删除分支都非常快,git鼓励使用分支完成某个任务,合并后删除分支,和直接在master分支上进行工作是一样的效果,但是过程更加安全; 这些之所以快是因为在这些过程中我们只是修改了指向分支的指针,如创建一个branch就是创建了一个指向分支的指针,然后修改HEAD指向该指针;即HEAD指向分支,分支就是提交。

冲突解决:

git无法自动合并分支时,就必须首先解决冲突;解决冲突之后,再提交,即完成了合并

使用git log --graph 可以查看分支合并图。

保存工作现场 git stash 保存之后就可以进行其他工作 而不影响上次的修改

恢复工作现场:

1、git stash apply 恢复时并不删除stash中内容

2、git stash pop 恢复时会删除stash中的内容

远程库信息产看使用git remote (-v)加上-v显示信息更加详细

分支推送到远程库:即将所有本地的提交推送到远程库

git push origin(远程库名) master (要推送的分支)

抓取分支:git pull ; git clone

协作模式:

1、使用git push origin branchname 推送自己的修改

2、如果推送失败,因为远程分支比本地更新,先使用git pull 合并

3、如果合并有冲突,解决冲突,在本地提交

4、再推送

注意:如果使用git pull 合并时提示 ”no tracking information“说明本地分支没有和远程分支建立链接关系,使用以下指令建立关系:git branch --set -upstream branch origin/branchname

在本地创建与远程对应的分支:git branch -b branchname origin/branchname 本地与远程分支的名称最好一致

创建标签

1、打标签git tag name 默认标签打在最新提交的commit上,如果想打在其他版本上,找到commit_id即可

2、显示标签:git log -pretty=oneline --abbrev -commit

git tag tag_name commit_id

3、查看标签:git tag 显示所有标签

4、查看标签信息:git show tag_name

5、创建带有说明的标签: git tag -a tag_name -m ”信息“;-a表示标签名,-m指定说明文字

*** 作标签:git tag -d tag_name 删除标签

推送标签到远程库:git push origin tag_name

一次推送所有标签到远程库:git push origin --tag

上面就是Linux使用Git的方法了。

GitLab是由Ruby语言开发的基于Linux的Git服务器,是我见过的最强大的Git服务器。发现它之后,立即决定将Git服务器换成GitLab。 但安装好GitLab之后面临一个问题,如何将服务器上的git项目直接导入到GitLab,之前的Git服务器是由是git+apache搭建的(详见在Linux上用Apache搭建Git服务器)。 在网上发现了这篇文档——Import bare repositories into your GitLab instance,并按之进行了 *** 作。 1)设置存放代码库的主目录 vi /etc/gitlab/gitlabrb 比如这里设置为:git_data_dir "/gitlab/repos" 2)访问刚搭建的GitLab站点,创建一个group,比如cnblogs。 这时会在 /gitlab/repos 下创建 /gitlab/repos/repositories/cnblogs 文件夹。 然后在/gitlab/repos/repositories/创建一个文件夹,比如cnblogs 3)将现有的所有git项目文件复制到这个文件夹 cp -r /data/git/ /gitlab/repos/repositories/cnblogs 4)修改一下复制过来的文件夹的所有者: chown -R git:git /gitlab/repos/repositories/cnblogs 5)运行GitLab导入命令 cd /var/opt/gitlab gitlab-rake gitlab:import:repos 等了一段时间之后,显示done,却一个项目也没导入进来。

linux搭建的gitlab服务器会在重启之后消失
1、由于在Windows Vista之后的版本默认并没有提供Telnet功能。如果需要使用Telnet就必须打开此项功能。以Windows 7为例,首先打开控制面板。
2、然后在控制面板中打开“程序和功能”。
3、再在左上角点击“打开或关闭Windows功能”。
4、在“打开或关闭Windows功能”对话框中勾选“Telnet客户端”,点击确定,系统会自动安装。到此Windows终端的工作已经完成。
5、Linux服务器开启Telnet服务
许多Linux系统在默认情况下是不安装Telnet服务的,如果需要使用就必须安装此项服务。安装的方法有很多,小编在这里只介绍yum安装Telnet服务,它的优点是能够自动检查安装包的依赖文件不用人为干预,当然前提是系统必须联网。在提示符下输入“yum install -y telnet-server”命令安装Telnet服务。最后出现Complete,代表安装完成。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13436765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-06
下一篇 2023-08-06

发表评论

登录后才能评论

评论列表(0条)

保存