草庐IT

linux环境下,一步步教你命令行搭建自己的git服务器和客户端

只是个~小不点 2024-02-16 原文

前言:        

        先说下我的git服务器环境,git服务端的搭建我用的是阿里的ubantu云服务器,毕竟云服务器上可以在任何联网的电脑上访问嘛,方便。局域网也可以,svn和git这两种最常用的代码管理系统,在企业中基本用的都是公司的局域网相互共享,更安全。

        客户端用什么系统都可以,能装git就行了,我用的是国产(深度)deepin系统,也就是linux系统。接下来开始从git服务端开始一步步搭建。


一、搭建git服务器

第一步:安装git

先确保是否安装了git,在命令行下输入命令

git --version

 我的已经安装了,没安装的一行命令就可以安装了,很简单的

 yum -y install git  或者 sudo apt-get install git 安装就行了

安装好了之后,就可以开始搭建git服务器了,用来共享管理文件或者代码

第二步:开始搭建

1.新建一个git账户,为了安全,不添加也可以,可以跳过这步

adduser git

切换到git账户:

su git

2.在指定目录新建一个目录,如gitTest,我在git账户目录下新建一个gitTest文件夹,然后进入文件中,然后在gitTest文件夹中在建立一个gitServer的文件夹,如下图所示

 3.在进入gitServer的文件夹中,建立.git的文件夹,这是github对仓库名称的一个命名规则,所以我们也遵守github的命名规则。我这里新建一个了一个myFile.git,用来当做我想要上传的文件仓库,这样我就能在有git能联网的地方随时随地的拿取啦

 4.进入myFile.git仓库中,初始化git仓库,命令

git init

 5.然后配置一下git仓库的接收配置,否则我们在git客户端上传文件到服务端会报错

配置方法有两种:

方法一:在myFile.git文件夹下命令行如下命令

git config receive.denyCurrentBranch ignore

 方法二:直接修改.git/config添加如下代码:

  [receive]
        denyCurrentBranch = ignore

然后在配置用户的信息,自定义的邮箱和用户名

	[user]
		email = 1504925137@qq.com
		user  = yidiandian

    命令如下:

vim .git/config

配置好后如下图所示

 服务端到此已经配置好了

然后pwd获取一下.git仓库的位置,等会要用到

一、搭建git客户端

同样确保,客户端的电脑安装了git

1. 我在我的脑上新建一个git文件夹,进入文件夹里面,然后用git init初始化命令初始化git仓库

2.然后配置要远程的git服务器的源,也就是我们的git服务器,等会我们就从这个服务器拿东西,推送文件,删除文件,更新文件等

git remote add origin git@47.98.173.9

解释下这 git@47.98.173.9

这个就是我的git账户,如果你的git服务器在root账户上,那就是root@47.98.173.9,格式为 账户@账户的地址

然后我们获取git服务器上的文件 ,命令,命令格式:

git clone 账户@账户地址:要获取的.git文件位置,上面说的.git仓库的位置,如下所示,很好理解吧

git clone git@47.98.173.9:/home/git/gitTest/gitServer/myFile.git

 然后输入git账户的密码,然后提示,我们复制了一个空仓库,因为我们的仓库没有东西,确实是空的,所以不用理会

 然后查看当前目录,有了一个myFile的文件,就是我们获取的git服务器上的myFile文件

然后我们进入myFile文件夹中,编辑一个hello.c的文件 

随便输入点内容,保存退出

 然后使用命令git status来查看仓库当前文件提交状态

 可以看到改动为:新建了两个文件,但没有提交

然后使用命令 git add 文件名 来建立跟踪,如果使用git add -Agit add . 可以提交当前仓库的所有改动,就是跟踪所有的改动文件

这里我就用git add . 来跟踪所有改动文件

 然后再次使用git status命令查看,我们的改动文件已经跟踪了,而且提示两个改动文件为新文件

然后使用命令

git commit -m "新建了两个新文件"

从Git的暂存区提交版本到仓库,参数-m后为当次提交的备注信息

 然后将本地的Git仓库信息推送上传到服务器分支上

git push origin master

命令格式: git push <上传的git服务器仓库位置> <要上传的本地分支名>

这个origin就是前面前面加的仓库源,以后在这个仓库里,就不用在写远程主机名了,效果如下

git push git@47.98.173.9:/home/git/gitTest/gitServer/myFile.git master

然后输入git账户的密码即可

 到此文件已经上传到git服务器了,我们试着一下同步,用另一台有装git的电脑,或者本机的另一个位置,拿去最新文件,在试一下同步,并改变一下里面的文件

我用的是虚拟机里面的windows10系统,里面安装的git,进行以下步骤,直接获取服务器的最新文件

这里已经获取到了

 

 接下来修改一下里面的hello.c文件,然后用git status,查看文件状态,检测到hello.c已经被修改了

再用命令git diff 文件名git diff,查看改动的地方有哪里

 然后我们git add hello.c, git commit hello.c -m "修改了hello.c",提交到本机git仓库

 这里提示我们要写下邮箱,有两种方法,第一种,提示里已经明确了

  git config --global user.email "你的邮箱"
  git config --global user.name "你的用户名"

在命令行输入即可,他就会写入.git的config文件中

在这里我用第二种,直接修改.git的config文件,如下

 然后在commit提交,push推送到git服务器上,因为是git服务器上获取的,会在config文件中保存有地址,可以不用写后面的参数,在上面.git/config文件中也能看到

然后用git log命令查看git推送日志

 然后在我之前的电脑上进行 git pull 拉取最新文件,就是更新下,如下,看到了更新文件名,文件内容是添加了3行

 如果git pull上传文件后,后面发现上传错了,想要删除它,怎么办呢?

直接用命令删除,然后commit提交到本地git仓库,然后,push推送回服务器删除

git rm 文件名

操作如下所示

 好了,到此git的客户端操作就完成了,还有很多命令不了解的,可以去百度一下,或者去这里看一下。Git 仓库基础操作 - Gitee.com

有关linux环境下,一步步教你命令行搭建自己的git服务器和客户端的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  8. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  9. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  10. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

随机推荐