git自动同步_两个gitlab 代码仓库自动同步 - CSDN
精华内容
参与话题
  • 因业务需要,我需要实现项目的版本控制并在提交代码的时候能将实时更新的代码同步更新到站点目录,折腾大半天,就记录下来,也仅供大家参考 一 、 在服务器上安装Git 验证 git 是否安装成功 git --help,出现下图...
    因业务需要,我需要实现项目的版本控制并在提交代码的时候能将实时更新的代码同步更新到站点目录,折腾大半天,就记录下来,也仅供大家参考
    一 、 在服务器上安装Git
    验证 git 是否安装成功 git --help,出现下图则安装成功

    ·
    二 、在服务器上创建裸版本库
    ps:远程仓库通常只是一个裸仓库(bare repository)--即一个没有当前工作目录的仓库。因 为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;仓库里存放的仅仅是Git的数据。简单来说,裸仓库就是你工作目录中.git子目录的内容。。。
    #git init --bare [仓库名] ----创建裸仓库
    #git init [仓库名] ---- 创建仓库

    三、在本地克隆服务器上的裸仓库
    本地已安装 Git Bash , 如果未安装:https://git-for-windows.github.io/
    进入本地版本库所在目录(可根据实际情况自定义),然后进行Clone

    出现上图情况,即用户权限问题,将仓库文件夹赋予git用户,相关命令如下:
    useradd git
    passwd git (your pass)
    chown -R git:git [仓库名称]
    或者是因为本地原有的SSH协议信息失效了,解决方案,清除你当前机器里关于你的远程服务器的缓存和公钥信息
    ssh-keygen -R "你的远程服务器ip"

    初始化本地仓库,创建本地开发分支 【Git checkout -b newbranch】;
    然后就可以进行代码的版本管理了...

    四、实现自动同步到站点目录[即使用git的钩子功能]
    ps: 使用的是服务端钩子
    我们需要两个目录
    1、git 服务器仓库目录 : /home/testgit/test.git
    2、web站点目录:/www/test
    开始配置钩子 Hooks
    1> 在仓库目录中新建post-receive,位于/home/testgit/test.git/hooks
    2>切换至web站点目录,执行项目克隆
    # cd /home/www
    # git clone /home/testgit/test.git
    3> 编写自动拉取脚本,即post-receivecd,内容如下

    保存后赋予可执行权限:
    # chmod +x /home/testgit/test.git/hooks/post-receive
    4> 修改web目录的权限
    ps:因为执行拉取的时候是git用户,所以站点项目目录(/home/www/test)的权限设定为git 用户
    5> 配置完成,这样在本地执行git push 代码时,服务器代码仓库更新的同时,web站点目录/home/www/test 也会自动执行git pull 同步本地推送
    至此,git服务器的安装部署和自动同步Web站点目录就完成了。
    展开全文
  • 利用GitLab自动同步软件仓库

    千次阅读 2019-07-02 21:42:50
    利用GitLab自动同步GitHub、Gitee、Bitbucket软件仓库 我在码云的账号:userName密码:password项目地址:https://gitee.com/Bytom/bytom.git 那么这个地址应该相应的改成这样:...

    利用GitLab自动同步GitHub、Gitee、Bitbucket软件仓库

    1689608-20190613114435851-1213420692.png

    我在码云的账号:userName
    密码:password
    项目地址:https://gitee.com/Bytom/bytom.git

    那么这个地址应该相应的改成这样:
    https://userName:password@gitee.com/Bytom/bytom.git
    密码和地址之间有一个@符号。

    备注:此处的密码是Gitee、Bitbucket等平台的密码

    转载于:https://www.cnblogs.com/zionfuo/p/11015349.html

    展开全文
  • 上次简单说了搭建Git服务器,这次来聊聊自动同步部署到项目。这种方式会很方便,比如用在网站上,只需要点一下push,线上的网站就会同步。这个教程的前提是网站放在Git服务器上。 前提 这里以网站为例,你需要在Git...

    上次简单说了搭建Git服务器,这次来聊聊自动同步部署到项目。这种方式会很方便,比如用在网站上,只需要点一下push,线上的网站就会同步。这个教程的前提是网站放在Git服务器上。

    前言

    发现之前的文章有几处错误,又经过一大堆测试,直接登录git用户模拟了一遍操作等,终于找到比较完善的方法了。

    解决疑难杂症

    1. 查看项目目录下的.git,所属是否是git用户的,如果不是需要修改
    chown -R git:git .git
    
    1. git报错
    [git用户 g]$ git pull
    remote: Counting objects: 5, done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 3 (delta 2), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    From /git/g
       528b0d2..9b2e4c3  master     -> origin/master
    Updating 528b0d2..9b2e4c3
    error: unable to unlink old 'index.php' (Permission denied)
    

    没有权限更新,解决这个问题可以使用sudo命令,但这样又会引出一个新问题。

    1. sudo问题

    你需要先在/etc/sudoers文件夹中把执行sudo命令的用户加上,否则会报错

    vim /etc/sudoers
    

    把git用户加上,并且不需要密码

    git ALL=(ALL)NOPASSWD:ALL
    

    但sudo还有一个问题

    [git@用户 g]$ sudo git pull
    Updating 528b0d2..9b2e4c3
    Fast-forward
     index.php | 1 +
     1 file changed, 1 insertion(+)
     
    [git@用户 g]$ ll
    -rw-r--r-- 1 root root  5105 Aug 14 19:03 index.php
    

    就是用户和用户组变成了root,这样网页会打不开显示拒绝访问,就不得不使用chown来更换,所以Git钩子文件就得这样写。

    Git钩子

    在相应的Git项目目录中,进入hooks目录,新建或更改post-receive文件,用自己装的编辑器打开,使用命令。

    vim post-receive
    

    输入以下信息

    #!/bin/sh
    cd /www/wwwroot/myWebSite || exit
    unset GIT_DIR
    sudo git reset --hard
    sudo git pull origin master
    sudo chown -R www:www *
    

    sudo git reset --hard是解决报错Your local changes would be overwritten by merge. Commit, stash or revert them to proceed,这是因为拉取代码时发现本地代码有过修改,所以提示你提交一下项目目录代码,但我们并不要提交,于是使用sudo git reset --hard可以放弃项目目录修改(其实不是修改,只是跟git上的不同),让拉取的代码覆盖项目目录的代码,实现硬更新。

    sudo chown -R www:www *是把当前目录所有文件的所有者改为www用户和www用户组,这个用户是文件原本的用户,如果你的是其他的请自行更改,.git是隐藏目录所以不会被修改,但如果被修改需要你再改回来,在下面添加命令sudo chown -R git:git .git就可以。

    这样就完成了,下次push项目后就会被触发,自动在myWebSite目录下拉取相应分支的更新、更改用户和用户组。

    后言

    像这种更改git用户获取权限不用密码的方式,我不确定安全性怎么样,还请大佬指教。

    展开全文
  • 教师端 下载安装git(https://git-scm.com/) ... 在本地创建目录(如:e:\teachergit),并在其中添加 课堂笔记 和 授课代码 等文件夹 ...使用如下 git 命令,进行初始化本地仓库等操作 ...$ git init ...$ git

    教师在授课过程,学生跟着写代码,但由于学生打字慢、中间敲错代码等原因,不能跟上教师授课进度,造成程序出错,学习效果滞后。使用git作为同步代码工具,提高授课效果。

    教师端

    1. 下载安装git(https://git-scm.com/)

    2. 在码云上创建仓库,并拷贝仓库地址(http或ssh)

    3. 在本地创建目录(如:e:\teachergit),并在其中添加 课堂笔记 和 授课代码 等文件夹

    4. 使用如下 git 命令,进行初始化本地仓库等操作

      //初始化本地仓库
      $ git init 
      
      //设置远程仓库地址
      $ git remote add origin https://gitee.com/用户个性地址/HelloGitee.git
      
      //拉取远程仓库
      $ git pull origin master
      
    5. 创建批处理文件(如:teachergit.bat),内容如下(需要修改其中本地仓库位置,其中ping命令中的30为每次提交的时间间隔为30秒):

      @echo off
      @title bat auto git
      E:
      cd E:/teachergit
      :start
      git add .
      git commit -m "%date:~0,4%-%date:~5,2%-%date:~8,2% %time%"
      git push origin master
      @ping -n 30 127.1>nul
      @goto start
      
    6. 可以把上面创建的批处理文件放到开启自动启动中,就不用手动启动了。

    学生端

    1. 下载安装git(https://git-scm.com/)

    2. 复制 码云 中仓库地址

    3. 在某个盘符(如:d:)下执行git 命令,克隆远程仓库

      git clone https://gitee.com/用户个性地址/HelloGitee.git
      
    4. 创建批处理文件,用于定时自动拉取远程服务器仓库

      @echo off
      @title bat auto git pull
      D:
      cd D:/teachergit
      :start
      git pull origin master
      @ping -n 30 127.1>nul
      @goto start
      
    5. 建议不要直接在该仓库中添加内容,如不小心添加了其他内容,可使用如下命令,强制拉取远程服务器内容,并覆盖本地内容:

      $ git fetch --all && git reset --hard origin/master && git pull
      
    6. 使用各种IDE编程工具,打开本地仓库中的代码

    附录

    在HBuilderX中使用git

    1. 菜单 “工具”->插件安装->选择安装git插件

    2. 打开从服务器拉取的项目,学生端就会基于上面的配置,自动同步了。

    在Eclipse中使用git

    1. 比较新的Eclipse,都默认安装了git插件
    2. 打开从服务器拉取的项目,学生端就会基于上面的配置,自动同步了。
    展开全文
  • 昨天晚上将2015年一篇不负责...现在的需要是 将远程的仓库,同步一份到自己的git服务器. 开始想的是,远程clone下来本地,然后本地提交一次到自己的git服务器 . 实在是太二了... 我的需求是 Git服务器A: github之类的...
  • 另一个需求是,我们在本地开发,然后推送到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了,这就要实现自动同步。下面我带领大家实现这么一个功能。 如果条件允许的话,
  • git 拉取和获取 pull 和 fetch 区别

    千次阅读 2017-07-10 10:03:59
    获取最新版本 有两种 拉取 和 获取 pull 和 fetch git pull 从远程拉取最新版本 到本地 自动合并 ...git fetch 从远程获取最新版本 到本地 不会自动合并 merge git fetch origin master git lo
  • git 将一个分支的修改同步到另一个分支
  • gitlab服务器自动化部署代码

    万次阅读 2020-09-29 09:31:32
    以往开发时需要频繁上传代码到服务器很麻烦,能否将提交到版本控制的代码自动同步到服务器呢,答案是可行的 如果使用的是SVN的话服务器搭建SVN可以自动同步代码,这里不做介绍,下面以github,php环境为例介绍,其他...
  • 在本机上创建一个与远程库存(remote repository)相呼应的本地库存(local repository). Git Gui 和 git bash 操作
  • git fork后同步更新

    千次阅读 2018-10-14 11:18:44
    之前实验在gitee上fork了老师的项目,而后其项目是渐进式的,后期也逐渐更新了,那么如何保证自己的项目代码保持同步更新呢,总不能下下来然后git add 和git commit吧。查询git资料得知其有与fork同步更新的指令。 ...
  • 使用git在两台机器间同步代码

    万次阅读 2017-09-17 23:41:09
    本文记录了如何使用git来在两台机器间同步代码,一台机器是linux,另一台是windows
  • 最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年。 因此导致虽然项目迁移过来了,但是团队开发...
  • 这样提交pr的时候就会冲突,这个时候我们就需要和主分支同步代码。 步骤: 1. git remote add upstream git@github.com:coreos/etcd.git //本地添加远程主分支,叫upstream。可以先git branch -v查看是否已添加...
  • 我们在在克隆完某个git工程项目后, 至少可以看到一个名为 origin 的远程库,git 默认使用这个名字来标识你所克隆的原始仓库。要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。 ...
  • git本地分支和远程分支如何关联

    万次阅读 多人点赞 2018-11-19 17:10:41
    一、如何把本地新建分支同步到远程分支上(注:...1.其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行push和pull时,如果该分支和远程分支同名git会知道推送到远程哪个分支,从哪个远程分支同步...
  • vs2017 使用Git 连接Github

    万次阅读 2017-07-04 10:48:37
    一.VS 2017 Git failed with a fatal error的解决办法 http://www.w2bc.com/article/231466二.如何将自己的项目弄到Github上 1.首先将解决方案加入代码管理 2.在本地Git存储库中双击刚建立的项目 3.点击同步...
  • 使用脚本自动执行Git命令同步代码

    千次阅读 2019-02-21 16:36:44
    随着小明公司项目越做越大,加之使用微服务架构,导致公司的项目越拆越多,在团队里的负责十几个service,这时出现了一个问题,service数量多了,每天同步代码是个非常头疼的问题,由于在业务上升期,每个service都...
  • git从远程仓库同步代码(第二弹)

    千次阅读 2017-07-21 10:09:08
    git远程仓库操作,创建、删除远程分支,push/fetch代码,创建标签
  • 1.首先,先在服务器上安装git,如果有git的话就不用走这一步了 yum安装git [root@iZuf6fazwjb6lb3z82smzoZ ~]# cd src/ [root@iZuf6fazwjb6lb3z82smzoZ src]# wget ...
1 2 3 4 5 ... 20
收藏数 48,947
精华内容 19,578
关键字:

git自动同步