`
loovle
  • 浏览: 145142 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ubuntu使用git来管理代码

阅读更多
首先安装:
sudo apt-get install git-core
sudo apt-get install openssh-server
sudo apt-get install gitosis
更改python默认版本
sudo rm /usr/bin/python
sudo ln -s python2.6 /usr/bin/python
然后:
增加名为Git的用户,命令行禁用密码
sudo adduser --system --shell /bin/sh  --gecos 'git version control' --group --disabled-password --home /home/git git
因为git需要ssh验证 ,所以在本地机器上生成ssh key
默认会在 ~/.ssh 下生成两个文件
私钥(本地保存) id_rsa
公钥(上传服务器) id_rsa.pub

ssh-keygen -t rsa

ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts
上传公钥到USER用户的根目录下
scp .ssh/id_rsa.pub USER@YOUR_SERVER:
sudo -H -u git gitosis-init < /home/USER/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
如果有密钥,或迁移密钥到本地,会需要下面的步骤,( 默认可忽略此步骤 )
#启动ssh-agent,
ssh-agent
#添加id_rsa到ssh-agent
ssh-add id_rsa
到这一步,基本上都安装好了,可以直接到本地进行测试
git clone git@YOUR_SERVER:gitosis-admin.git

--------------------------

首先我们在服务器上初始化一个git 项目:

[root@li96-10 repository]# mkdir blog.git

[root@li96-10 repository]# cd blog.git/

[root@li96-10 blog.git]# git init --bare #一定要加上--bare,且该目录不能有任何文件和目录,否则报错:fatal: Out of memory? mmap failed: No such device

Initialized empty Git repository in /usr/local/system/repository/blog.git/

接下来我们在创建一个git 项目:

[root@li96-10 blog.git]# cd ..

[root@li96-10 repository]# mkdir test.git

[root@li96-10 repository]# cd test.git/

[root@li96-10 test.git]# echo "some content" >> file

[root@li96-10 test.git]# git add file

fatal: Not a git repository (or any of the parent directories): .git

[root@li96-10 test.git]# git init

Initialized empty Git repository in /usr/local/system/repository/test.git/.git/

[root@li96-10 test.git]# git add file

[root@li96-10 test.git]# git commit -am "first commit"

[master (root-commit) 3ea3176] first commit

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 file

将test.git push到blog.git项目上

[root@li96-10 test.git]# git remote add origin ../blog.git

[root@li96-10 test.git]# git push origin master

Counting objects: 3, done.

Writing objects: 100% (3/3), 213 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (3/3), done.

To ../blog.git

* [new branch]      master -> master

现在我们从blog.git中clone出来:

[root@li96-10 blog.git]# cd ..

[root@li96-10 repository]# git clone blog.git #因为我们的reposi是blog.git,clone下来后就会是blog了

Initialized empty Git repository in /usr/local/system/repository/blog/.git/

[root@li96-10 repository]# cd blog

[root@li96-10 blog]# ll

total 4

-rw-r--r-- 1 root root 13 Jan  4 22:09 file

可以看到项目中果然有个file文件,是刚才我们push进去的
那么下面我们在新clone的branch blog里面增加一个文件看看,

[root@li96-10 blog]# echo 'Second file contents' > file2

[root@li96-10 blog]# git add file2

[root@li96-10 blog]# git commit -am'added second file'

[master 63be855] added second file

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 file2

[root@li96-10 blog]# git status

# On branch master

# Your branch is ahead of 'origin/master' by 1 commit.

#

nothing to commit (working directory clean)

然后我们push到blog.git

[root@li96-10 blog]# git push

Counting objects: 4, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 280 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (3/3), done.

To /usr/local/system/repository/blog.git

   3ea3176..63be855  master -> master

这样的话,我们的blog.git已经有两个文件了file,file2
下面我们进到test.git里面,并且将刚才在first的修改合并过来:

[root@li96-10 blog]# cd ../test.git/

[root@li96-10 test.git]# git fetch origin

remote: Counting objects: 4, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (3/3), done.

From ../blog

   3ea3176..63be855  master     -> origin/master

[root@li96-10 test.git]# git merge origin/master

Updating 3ea3176..63be855

Fast forward

file2 |    1 +

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 file2

我们可以看到,已经将在first的修改合并过来了,在上面的操作中我们用了fetch和merge,其实我们可以将两个命令简化为一个pull命令:

[root@li96-10 test.git]# git pull origin master

From ../blog

* branch            master     -> FETCH_HEAD

Already up-to-date.

总结一下,将版本库拿下来的命令是pull,而将本地修改与版本库合并的命令是push.并且push之前先要pull哦!
当然了,这些操作都是在一台机器上操作的,下面演示一下使用ssh协议连线到真正的remote 机器:
从remote上clone下来:

[root@master repository]# git clone ssh://gituser@xxx.xxx.xxx.xxx/path/to/repository/blog.git

Initialized empty Git repository in /root/repository/blog/.git/

remote: Counting objects: 1055, done.

remote: Compressing objects: 100% (822/822), done.

remote: Total 1055 (delta 115), reused 1055 (delta 115)

Receiving objects: 100% (1055/1055), 1.29 MiB | 19 KiB/s, done.

Resolving deltas: 100% (115/115), done.

[root@master repository]# ll

总计 4

drwxr-xr-x 17 root root 4096 01-05 20:57 blog

然后,当我们在本地做了修改,想要提交到remote的时候,我们就可以直接push了:

[root@master repository]# cd blog/

[root@master blog]# git push

Everything up-to-date

这样就基本OK了!
提交之后,在另外一个客户端通过git pull 就可以更新到代码了。

附上参考资料:
http://www.stylejar.com/archives/ubuntu_install_git_server.html
http://xf986321.iteye.com/blog/702974
http://www.linuxsir.org/bbs/thread281294.html
git原理http://www.iteye.com/topic/732199

分享到:
评论

相关推荐

    ubuntu版GitKraken-v6.5.1

    总的来说,GitKraken v6.5.1在Ubuntu上的可用性扩展了Git工具的使用范围,使得Linux开发者也能享受到高效便捷的Git管理体验。通过其强大的功能集和良好的用户体验,GitKraken成为了开发者日常工作中不可或缺的一部分...

    GitKraken-v6.5.1 ubuntu版本

    Git的强大之处在于它允许开发者协同工作,通过分支和合并管理代码的不同版本,以及回滚到任何历史状态。GitKraken作为一个图形用户界面(GUI),使得复杂的Git操作变得更加简单,对新手友好,同时也提高了专业开发者...

    git代码管理工具使用方法及常用配置

    可以通过命令行使用包管理器进行安装,如Debian或Ubuntu系统中使用 sudo apt-get install git 来安装Git。 在开始使用Git之前,需要对本地仓库进行初始化,这可以通过 git init 命令完成。初始化后,需要添加远程...

    git使用文档(一步一步教你使用Git仓库管理代码)

    通过以上步骤,您可以熟练掌握如何使用Git来管理代码版本。此外,还可以进一步学习分支管理、合并分支、远程仓库同步等更高级的功能。Git的强大之处在于其灵活性和高效性,无论是个人项目还是团队合作,都能提供很好...

    如何在Ubuntu 上安装Git与入门教程

    在Ubuntu 18.04上,我们使用`apt`包管理器来安装Git,执行以下命令: ```bash sudo apt install git ``` 安装完成后,你可以使用`git --version`命令来确认Git的版本,例如: ```bash $ git --version git ...

    ubuntu git

    Android代码管理是通过一种叫Git的分布式代码管理工具来管理的。

    GitKraken-v6.5.1.deb.7z

    Git版本控制系统是开发者用来跟踪和管理代码更改的重要工具,而GitKraken以其高效、直观的界面使得Git的操作变得更加简单,特别是对初学者而言。 Gitkraken支持多种Git操作,如分支管理、合并冲突解决、代码审查等...

    linux 下的git图形化工具 gitk git-gui

    在Linux环境中,特别是Ubuntu系统,Git是一个非常重要的版本控制系统,用于跟踪代码的修改历史和协作开发。虽然命令行界面在日常开发中非常强大且高效,但有时候,一个图形化的用户界面(GUI)可以让初学者或者那些...

    ubuntu 完整安装git服务器

    ### Ubuntu 完整安装 Git 服务器知识点解析 ...这对于初学者来说是一份非常实用且详尽的指南, 可以帮助他们在 Ubuntu 系统中快速搭建起一套完整的 Git 服务器环境, 并能有效地管理用户对各个仓库的访问权限。

    Ubuntu下Git使用.pdf

    在Ubuntu系统中,Git是一种广泛使用的版本控制系统,用于跟踪文件和代码库的更改。这篇文档主要介绍了在Ubuntu环境下如何配置和使用Git,特别是通过SSH(Secure Shell)进行安全的远程操作。 1. **安装SSH** 在...

    git分布式代码管理教程

    ### git分布式代码管理教程 #### 一、Git简介与安装 **Git** 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 的设计目标是为了解决开发过程中代码版本控制的问题,它具有快速、数据...

    ubuntu 安装git 服务器.pdf

    Git 是一个版本控制系统,用于跟踪和管理代码的修改。可以使用 `apt-get install git-core` 命令来安装 Git。在安装 Git 过程中可能会遇到一些依赖包下载失败的情况,这可以通过下载相关文件并进行手动安装来解决。 ...

    git+ssh ubuntu 安装配置笔记

    使用`adduser`命令创建一个专门的“git”用户用于管理仓库: ```bash sudo adduser git ``` 2. **切换到git用户并创建.ssh目录:** 切换到git用户后,在其家目录下创建.ssh目录: ```bash su git cd ...

    Git 版本控制管理器 操作文档 git api

    Git是一个强大的分布式版本控制系统,广泛应用于软件开发和...通过学习和熟练掌握Git的基本操作,开发者可以更好地管理代码,提高工作效率。如果你对Git有更多兴趣,可以关注提供的博客链接,获取更深入的教程和技巧。

    在 Ubuntu(使用 apt 包管理器)上安装 Git 的详细过程

    ### 在 Ubuntu(使用 apt 包管理...无论是个人项目还是团队协作,Git 都能帮助我们更高效地管理代码版本。 以上就是本次关于“在 Ubuntu(使用 apt 包管理器)上安装 Git 的详细过程”的全部内容,希望对你有所帮助。

    gitkraken6.5.1

    7. **扩展与插件支持**:GitKraken允许用户安装插件来扩展其功能,例如集成Jira、Trello等项目管理工具,或者增加代码高亮等开发辅助功能。 8. **安全与认证**:GitKraken支持多种身份验证方式,包括SSH密钥、OAuth...

    git详细使用说明.zip

    Linux用户通常通过包管理器(如Ubuntu的`apt-get`,CentOS的`yum`)来安装。 二、Git配置 安装完成后,首次使用Git需进行用户配置,设置用户名和邮箱,因为Git的每一次提交都会记录这些信息。在命令行中输入: ``` ...

    1分钟学会用git管理代码

    - **在Ubuntu/Debian系统中安装Git**: - 打开终端,通过`sudo apt-get install git-core`命令安装Git。 - **在Windows系统中安装Git**: - Windows用户需要通过Cygwin或者Git for Windows进行安装。 #### 四、...

    Git 原理与使用.pdf

    * 了解Git的远程仓库管理,包括添加远程仓库、推送代码、拉取代码等 版本控制器: * 版本控制器是记录文件历史和发展过程的系统 * Git是当前最主流的版本控制器,可以控制电脑上所有格式的文件 * 版本控制系统可以...

Global site tag (gtag.js) - Google Analytics