添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

How to keep two Git repositories in sync

项目代码存在多个远程Git仓库里(例如:Github、Gitlab、Gitee),需确保不同远程仓库代码版本一致。
初次搭建仅需3步!以后同步只需1步!

1、检出源仓中的项目

# 到代码缓存目录
cd ~/code-sync
git clone --mirror https://github.com/jack/my-project.git

2、增加第二个远程仓库Git

cd my-project.git
git remote add --mirror=fetch secondary https://gitee.com/jack/my-project.git
cd ~/code-sync/my-project.git
git fetch origin
git push secondary --all

以后需要同步时,只需执行第3步即可

上述步骤封装到脚本2个中:项目同步初始化脚本init_pro_sync.sh、项目同步脚本sync-项目名.sh

使用说明:
1、修改init_pro_sync.sh【TODO】部分配置
2、执行init_pro_sync.sh,自动在CODE_DIR目录创建:{项目名}.git目录、sync-{项目名}.sh同步脚本
3、以后需要同步时,仅需执行 sync-{项目名}.sh同步脚本 即可
Tips:
建议将CODE_DIR目录添加到环境变量中,缩短输入的脚本路径

1、cf.sh:

#!/bin/bash
#公共变量
# 本地缓存目录
BASE_DIR=~/code-sync/

2、init_pro_sync.sh:

#!/bin/bash
# 引入公共变量
source cf.sh
### 【TODO】按需修改下面参数即可:
# 项目名
PRO_NAME=my-project
# 本地缓存目录-> 从公共变量cf.sh中获取
# BASE_DIR=/Users/zxc/code-sync
# 项目 源Git仓库地址(以/结尾)
FROM_GIT=https://github.com/jack/
# 项目 目标Git仓库地址(以/结尾)
TO_GIT=https://gitee.com/jack/
PRO_GIT_NAME=$PRO_NAME.git
cd $BASE_DIR
git clone --mirror $FROM_GIT$PRO_GIT_NAME
cd $PRO_GIT_NAME
git remote add --mirror=fetch secondary $TO_GIT$PRO_GIT_NAME
# 开始第一次同步
git fetch origin
git push secondary --all
# 生成每次同步的sh
cd $BASE_DIR
file_name="sync-${PRO_NAME}.sh"
cat > $file_name << EOF
#!/bin/bash
# 引入公共变量
source cf.sh
cd \$BASE_DIR
cd $PRO_GIT_NAME
git fetch origin
git push secondary --all
# 授权可执行
chmod +x $file_name
                    巨人的肩膀:How to keep two Git repositories in sync需求项目代码存在多个远程Git仓库里(例如:Github、Gitlab、Gitee),需确保不同远程仓库代码版本一致。初次搭建仅需3步!以后同步只需1步!操作步骤1、检出源仓中的项目# 到代码缓存目录cd ~/code-syncgit clone --mirror https://github.com/jack/my-project.git2、增加第二个远程仓库Gitcd my-project
“如果你只有锤子,一切看起来都像钉子”
为什么是git
 互联网上的存储库很不错,因为它们易于访问,但是当它们变大时,通过移动数据加载它们就变得不那么可行了。 通过USB驱动器共享大文件是很多手动工作,与同事同步保存文件。 想法是使用Internet中的存储库,并在USB驱动器上克隆(如果应使用USB驱动器)。 git有一些内置功能
可以让多人远程控制
每个仓库都是独立的
在基准中添加rsync以进行速度比较
在单独的git存储库中拆分二进制文件和第三方库,然后cmake应测试存储库的版本是否正确
很大的文件可以存储在本地存储中,然后cmake可以测试存储库的不同源
 $ git init将当前路径转换为git仓库
$ git add filename本地添加文件,可以多次添加文件,最后一起提交
$ git commit -m "修改描述"提交所有修改,不添加-m会弹出一个vim让你填充修改描述
在本地同步github
 $ git remote add localname http://github.com/nzyqq123/filename localname本地路径文件名github的路径文件nzyqq123 github的用户名
$ git branch -M main在本地生成一个分支,-M是替代,不加-M会创建其他分支
$ git push -u first main将本地的first目录推送到远程的main分支中,如果github中没有该分支会自动创建
$ git pull origin m
				
假设机器A上已经有了git仓库test.git,要在机器B上镜像这个git仓库,则需要在机器B上执行: git clone --mirror ssh://git@git.xxxx.a/group/test.git 也即在机器B上,以git clone --mirror的方式将git仓库从机器A上clone下来,这时机器B上就有了一份跟机器A一模一样的git仓库了。然后在机器B上配置一个cron,时不时地从机器A上同步一下就行了: git --git-dir=/home/test.git remote
#!/bin/bash docker stop gitlab01 echo `date +"%F %T"` "gitlab开始从sourceIP到removeIP同步">/tmp/rsync4gitlab01.log slee... 在参与openharmony项目开发过程中,代码下载是repo进行管理的,当面临多个仓库修改需要提交代码的时候,由于仓库数量过多,参照官方给出的指导提交代码,会导致提交操作变得有些复杂。 为了解决该问题并做到如下几点: 一次源码下载 一次修改编译验证 一次提交代码 可以简单利用git设置多个远端仓库进行代码提交管理。 下载代码、fork仓库 下文均已OpenHarmony / kernel_liteos_a仓库为例。 下载主干代码(注意非fork仓库代码) 可直接参考官网给的下载方法 fork需 CodeSync 是一个用于项目团队成员之间实时代码同步和协作的平台。 该项目分为具有各种依赖关系的两个独立组件。 网站组件处理 Web 请求、用户和项目,而 SyncServer 组件处理代码同步、文件处理和项目范围的事件。 该网站是用 Laravel 5 框架用 PHP 构建的。 服务由 Apache 2 处理,数据存储使用 MySQL。 SyncServer 是使用 node.js 在 JavaScript 中构建的。 Redis 用于文件锁定和项目订阅的跨服务器同步。 SyncServer 还取决于网站使用的 MySQL 服务器。 网站和 SyncServer 可以独立部署,因为它们唯一的共同依赖是 MySQL 服务器。 此外,可以在 websocket 负载平衡器后面独立设置 SyncServer 的多个实例,并通过 POSIX 兼容的共享文件系统(例如挂
在某些场景下,需要同步远程仓库到本地仓库,同时保留远程仓库和本地仓库代码提交记录。例如同步GitHub上的仓库到本公司的GitLab仓库。 在公司GitLab上创建两个仓库,一个用于保存远程仓库代码,一个用于内部修改的代码。 定期从GitHub上下载仓库镜像,同步到公司远程仓库,然后设置公司远程仓库到另外一个仓库同步任务,从而实现GitHub上更新记录同步到内部仓库。 在GitLab上创建两个仓库,一个为aaa_base,一个为aaa。aaa_base用于和GitHub仓库代码.
code_sync code_sync将本地目录中的代码更改自动同步远程计算机,以便您可以在本地编辑器中编辑代码并立即在远程计算机上运行这些更改。 在code_sync只要watchdog注意到代码更改, code_sync就会运行rsync命令。 pip install code_sync 安装此软件包后,可code_sync工具。 注册一个项目 code_sync --register <project> 这将提示您输入要同步的本地目录,要同步到的远程计算机,以及要同步文件的远程路径。 使用code_sync注册项目code_sync ,它将记住该配置。 code_sync已注册的项目 code_sync <project> 该命令将使用您在注册项目时为项目设置的配置。 列出所有注册到code_sync的项目 code_sync --list 使用特定参数运行co
有时不便于新建新分支,需要提取差分包进行保存可以用如下命令进行提取 git diff 608e120 4abe32e --name-only | xargs zip update.zip git diff --name-only | xargs zip update.zip 上面的命令git diff无法对未tracked的文件进行提取,如下的脚本即可一次性提取当时修改状态 的所有文件,包...
参考:https://stackoverflow.com/questions/39516144/how-can-i-synchronize-git-branches-between-bare-repositories 我自己搭建了一个 git 服务器,为一个 bare(裸)仓库,为了防止意外情况的发生,我又在另外一台服务器上面创建了一个用于备份的 bare 仓库。将备份服务器仓库关联到远程仓...
链接:https://www.zhihu.com/question/41440585/answer/91102156 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 通常repo通过以下两个命令来下载代码: repo init -u git://http://xxx.xxx.xxx/platform/manifest -b $bra... ### 回答2: 随着软件开发领域的不断发展,越来越多的团队选择使用git作为版本控制工具,以实现代码的管理和协作。在公司中,通常会有一个远程代码仓库,存放着所有人的代码,团队成员需要通过拉取(pull)代码到本地后进行开发、修改,最后将修改后的代码推送(push)到远程仓库中。本文将介绍如何使用gitbash从公司代码仓库中拉取代码。 步骤一:安装Git工具 首先,需要安装Git工具,可以从官网下载安装(https://git-scm.com/downloads)。安装完成后,打开gitbash命令行工具。 步骤二:克隆代码仓库gitbash中,使用cd命令切换到本地要存放代码仓库目录。然后使用git clone命令将远程代码仓库克隆到本地,命令格式如下: ```git clone <远程代码仓库地址>``` 例如,公司使用的代码仓库的地址为https://github.com/xxx/xxx.git,可以使用下面的命令将代码仓库克隆到本地: ```git clone https://github.com/xxx/xxx.git``` 此时,git会将代码仓库中的所有代码下载到本地,存放在以仓库名命名的文件夹中。 步骤三:拉取最新代码 当团队中有人对仓库中的代码进行了修改后,需要将修改后的代码同步到本地。在gitbash中,可以使用git pull命令拉取最新代码,命令格式如下: ```git pull``` 此时,git会自动从远程代码仓库拉取最新代码并合并到本地代码中。 以上就是使用gitbash拉取公司代码的步骤。需要注意的是,在拉取代码之前,应该先确保自己拥有对代码仓库的读取权限,否则无法拉取代码。同时,在修改代码之前,也应该先拉取最新代码,以避免出现代码冲突等问题。 ### 回答3: Gitbash是一款强大的Git命令行工具,可以方便地进行代码管理操作。在拉取公司代码前,我们需要先了解一些基本概念: 1. Git仓库:存储代码的地方,包含所有版本代码和更新记录。 2. Remote:远程仓库,通常是存在于远程服务器上的一个Git仓库。 3. Branch:分支,在Git中常用于开发不同的功能或解决不同的问题。 根据以上概念,我们可以在Gitbash中进行如下步骤拉取公司代码: 1. 配置Git:在Gitbash中通过输入指令git config --global user.name "<username>"和git config --global user.email "<email>"来配置用户名和邮箱。这些信息会在提交代码时作为提交者信息记录。 2. 克隆代码:在Gitbash中通过输入指令git clone <remote_repository_address>来将远程仓库中的代码克隆到本地。在输入远程仓库地址之前,我们需要先向管理员请求授权并获得仓库地址。 3. 切换分支:在Gitbash中通过输入指令git checkout <branch_name>来切换到指定分支。通常情况下我们需要切换到开发分支或主分支进行代码管理。 4. 更新代码:在Gitbash中通过输入指令git pull来获取最新的代码更新。如果有冲突需要手动解决。 5. 提交代码:在Gitbash中通过输入指令git add .、git commit -m "<commit_message>"和git push origin <branch_name>来提交代码更新。这将把代码上传到远程仓库中。 总之,通过Gitbash可以方便地进行代码管理操作。我们可以通过简单的指令来完成代码拉取、更新和提交等操作,提高了开发效率和代码管理质量。