-
2020-12-19 09:31:18
在实际的开发中,有可能遇到需要将A仓库的某个branch的代码独立成为一个新的仓库B。我们需要的不仅仅是这个branch的最新提交的代码,而是需要它的整个提交历史。这种需求对于git来说非常简单,主要依靠git remote命令来实现。
把当前代码提交到另一个远程git仓库
假如仓库repo_a当前位于branch_a,要求将branch_a的整个数据(包括提交历史)全部提取出来,并建立一个新的仓库repo_b。这里假设仓库repo_b已经被建立。
git remote add基本语法如下。name和url是必须的。
git remote add [-t ] [-m ] [-f] [--[no-]tags] [--mirror=]
1、 将仓库repo_b的URL添加到工作仓库的remote。
git remote add origin_repo_b git@server_ip:/path/repo_b.git
(origin_repo_b:自己起的名字,只要不与现有的remote名重复即可)
(git@server_ip:/path/repo_b.git:repo_b的远程路径)
2、将代码推送到远程repo_b。
git push origin_repo_b branch_a
(origin_repo_b:远程仓库repo_b的名字)
(branch_a:仓库repo_a的的branch_a分支)
3、克隆仓库repo_b,检查是否push成功。
git clone git@server_ip:/path/repo_b.git
将一份相同的代码提交到多个不同的git托管服务器(多个git仓库)
方法非常相似,多使用到了命令git remote set-url --add [--push]
假设在远程的git服务器上又新增了一个仓库repo_c,现在要求repo_b、repo_c提交的代码必须一致。
1、将远程repo_c配置到当前的工作的本地git仓库中
git remote set-url --add origin_repo_b git@192.168.1.101:~/project/repo_c.git
这句话的意思是,将远程仓库git@192.168.1.101:~/project/repo_c.git也加入到origin_repo_b这个名字下面管理
2、将代码同时提交到远程仓库repo_b和远程仓库repo_c
git push origin_repo_b branch_a
更多相关内容 -
Git如何修改远程仓库地址
2021-01-20 15:36:39公司搬移, 作为git仓库的服务器IP地址变了。 本地代码挺多,重新检出太占时间,可以修改一个什么配置让我本地仓库和新的远程仓库建立关联吗, 答案是肯定的! 方法有很多,这里简单介绍几种: 以下均以项目git_test... -
Linux上搭建Git服务器并创建git仓库上传代码
2019-04-08 15:21:25Git服务器我们已经搭建成功,git仓库我们已经创建成功,现在我们来学习一下项目初始化后的第一次代码上传。 第一步,创建一个普通项目 我这里创建了一个普通的java项目。 第二步,创建本地仓库 在项目根目录下打开...上一篇学习到在Linux上搭建Git服务器,并创建git仓库,还不会的小伙伴可以前去学习一下
Git服务器我们已经搭建成功,git仓库我们已经创建成功,现在我们来学习一下项目初始化后的第一次代码上传。
第一步,创建一个普通项目
我这里创建了一个普通的java项目。第二步,创建本地仓库
在项目根目录下打开git的命令行工具git bash here,执行命令:
git init
不难发现项目的根目录下多了一个.git的文件夹,到这里我们的git本地仓库就创建成功了。第三步,将本地仓库和远程服务器上的仓库关联起来
我这里使用域名了,前几天搞了个域名,联系一下,没有域名的在@后面写上IP地址,作用一样,点击“OK”
成了。OK第四步,配置忽略(这一步可选择,不忽略也行)
在向git服务器提交代码时,有些代码是不必要提交的,我们会根据需要进行忽略。
接下来,add—commit—push
提交到服务器上之后,再找一个目录,拉取代码测试第五步,测试
开始拉取代码:
可以看到,代码已经拉取下来,到此,我们的Linux环境git服务器已经搭建成功,git仓库创建、上传、拉取代码也都没有问题。 -
使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境
2021-08-01 02:57:30最近由于需要对正在运行的系统进行新功能添加,本来是可以通过github进行代码维护,但是由于这个项目涉及一些问题...具体实现的目标就是:使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境,参考git...最近由于需要对正在运行的系统进行新功能添加,本来是可以通过github进行代码维护,但是由于这个项目涉及一些问题,目前还不能开源,所以只能是手动覆盖bug文件,生产环境上的代码反而是最新的了。
之前有个思路,就是将git仓库部署到生产环境所在的服务器中,今天做了一下尝试,效果还不错,特意再次做出总结。具体实现的目标就是:
使用git在服务器上部署git仓库并实现提交代码时同步代码到生产环境,参考git基本操作.废话少说,进入正题。
首先,需要在服务器上安装git,这里就不再罗嗦,不会装的,自行百度。
以下代码命令和代码实例中说明一下几点:所有服务器上的操作,为了避免遇到权限的问题,是直接进入root超级用户下的操作。
创建的项目名为my_object。
在服务器上,我选择将仓库创建在/var/下,生产环境项目代码放在/www/wwwroot/my_object/。阅读者可以自行更改,但是需要记住更改后的路径。
为了隐私,实例的服务器ip用127.0.0.1代替,用户用gits代替。
第一步:在服务器上创建git仓库
我选择在/var/下创建:mkdir git && cd git
mkdir my_object.git && cd my_object.git
git init --bare
--bare的意思是,该文件夹是我们的代码仓库,它将不会放源代码而只是做版本控制。
注:my_object.git 可以改成你自己的名字
第二步:创建钩子
将会使用post-receive钩子,更多相关的信息可以参考官方文档。ls
可以看到hooks已创建,而且里面也有各种钩子的样例。
第三步:创建我们自己的post-receivcd hooks
vim post-receive
//这个位置 用 vim创建文件也可以,你们也可以用宝塔之类的创建。我是用宝塔创建的
在post-receive文件中加入以下需要同步的语句#!/bin/sh
git --work-tree=/www/wwwroot/my_object --git-dir=/var/git/my_object.git checkout -f
注:/www/wwwroot/my_object 是你想同步到你服务器哪个目录,/var/git/my_object.git 则是你的仓库地址 两个地址都可以你自定义。
编辑完成之后保存。
将仓库文件夹也要设置为gits 所有然后gits拥有读取写入的权限即可 否则会报错误/var/git/my_object.git
注:gits用户创建将在下文中说道。
第四步:创建gits推送用户并且设置密码
服务器上创建 gits用户adduser gits
然后设置密码 (然后输入密码回车,输入确认密码回车即可)passwd gits
密码输入两次后提示设置密码成功
第五步:获取你本地的ssh-rsa(如果想每次推送都输入gits 密码的可忽略这一步)
1、配置一个你本地仓库的全局的用户名#配置一个本地git的用户名
git config --global user.name "xxx"
2、配置该账户的邮箱地址#配置本地用户的邮箱地址
git config --global user.email "xxx@qq.com"
3、然后在本地生产ssh公钥#邮箱就是你上面设置的那个邮箱地址
ssh-keygen -t rsa -C ###@qq.com
注:如果windows 系统提示ssh-keygen不是内部或者外部命令的话可参考以下方法:
(1)找到:Git/usr/bin目录下的ssh-keygen.exe(一般在安装 Git 的这个目录)
(2)配置环境变量:我的电脑属性-->高级系统设置-->环境变量-->系统变量,找到Path变量,进行编辑,加到最后,输入分号,粘贴复制的ssh-keygen所在的路径,保存;
4、查看公钥
linux系统命令:cat ~/.ssh/id_rsa.pub
window系统则需要去C:Users11.sshid_rsa.pub打开里面就是公钥
注:11是我当前电脑的用户名。具体的用户名看你的电脑系统一般默认都是administrator
第六步:把你本地的ssh公钥设置到服务器仓库(如果想每次推送都输入gits 密码的可忽略这一步)
1、切到服务器gits目录下cd /home/gits
2、创建.ssh目录mkdir .ssh
cd .ssh
3、然后创建authorized_keys文件 用宝塔创建也可以 在里面保存你刚才获取的本地ssh公钥 一行一个
4、设置.ssh 和 authorized_keys的所有者为gits
linux命令:cd ../
#注:加-R 是修改文件夹下所有目录和文件的所有者为gits .ssh 是目录名
chown -R gits:gits .ssh
第七步:设置仓库目录权限
将git仓库目录(/www/wwwroot/my_object)设成可读写的(777): (这一步想当重要,必须是777,否则将无法写入文件)
设置文件夹权限的命令如下:cd /www/wwwroot/my_object
chmod 777 -R *
如果生产环境项目所在目录/www/wwwroot/my_object/不存在,要记得创建,同时让其的权限成为任何人都可读写!mkdir /www/wwwroot/my_object/ cd /www/wwwroot/my_object/ && chmod 777 -R *
服务器上的仓库和同步钩子配置到此完毕,下面需要我们在本地编写项目并上传至服务器仓库。
第八步:本地项目推送
一般情况是你已经有了自己的git项目了,那么只需要添加仓库地址就行了。git remote add origin ssh://gits@127.0.0.1:22/var/git/my_object.git
注:gits 为git服务端ssh登录用户名,127.0.0.1为git服务端地址 22位ssh的登录端口 , /var/git/my_object.git 为git服务端项目仓库路径
下面就是一顿行云流水的操作啦#将文件加入本地缓存区
git add --all
git commit -m "备注"
#推送到git服务端 加-f则进行覆盖 不加则不覆盖
git push -u origin master -f
#如果端口和地址访问正常的话。应该会提示让你输入密码。你就输入上面设置的gits的密码即可开始同步
#如果你目录权限和ssh公钥都配置正确的话 第一次推送只需要确认一下改服务器ip是否可以推送即可如果还是需要输入密码那就是目录权限或者ssh公钥的问题了
扩展知识:
1、’多仓库同时推送
(1)添加第二个远程地址时使用以下命令:git remote set-url --add origin git@github.com:morethink/programming.git
(2)查看远程分支:git remote -v
#会显示如下信息
#origin git@git.coding.net:morethink/programming.git (fetch)
#origin git@git.coding.net:morethink/programming.git (push)
#origin hexo@MyHost2:/var/repo/gitbook.git (push)
2、删除远程分支git remote add origin
3、查看当前本地git仓库 状态git status
4、提示出错信息:fatal: remote origin already exists.
解决办法如下:
(1)先删除远程分支信息git remote rm origin
(2)重新添加远程分支git remote add origin git@github.com:djqiang/gitdemo.git
-
云服务器搭建git仓库
2019-02-26 17:42:05最近代码托管平台代码泄露火了一下,经理赶紧让我们未雨绸缪,把托管在开源中国的项目弄到本地来,哈哈,其实项目都捏在自己手里确实安全多了,但是毕竟建立本地仓库还是约束性太大,于是决定在自己的服务器里搭建...前言:代码平台托管安全吗?
看这则新闻:
最近代码托管平台代码泄露火了一下,经理赶紧让我们未雨绸缪,把托管在开源中国的项目弄到本地来,哈哈,其实项目都捏在自己手里确实安全多了,但是毕竟建立本地仓库还是约束性太大,于是决定在自己的服务器里搭建git仓库(多少心里安全点哈)狗头保命
总的来说就是如何项目不开源?那就是搭建自己的git服务器
好了开整:
一、安装git
【我们的服务器是CentOS7】供参考。
1.服务器安装git
sudo apt-get install git (适合Debian系列linux系统,例如:Ubuntu,安装deb包的命令是“dpkg -参数” )
或者:
yum install git (适合RedHat系列linux系统,例如:Centos ,安装rpm包的命令是“rpm -参数” )
二、创建git用户
1.创建git用户:(用来运行
git
服务)adduser git
2.设置密码:(尽量简短而不失复杂)
passwd git
3.切换到git用户
su 命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
su git
三、初始化公库
1.确定仓库位置
这里选择了/home/git/ 创建名为warehouse的仓库 运行:
sudo git init --bare warehouse.git
此时warehouse.git是一个裸区,不工作,作纯粹的代码共享,用户也不鞥更改仓库的工作区
2.配置公钥
2.1生成公钥
SSH 公钥默认储存在账户的主目录下的
~/.ssh
目录,查看一下:cd ~/.ssh
如果没有xxx.ras或者xxx.pub文件,生成一下:
ssh-keygen -t rsa
这里生成的.pub文件内容就是公钥。
选择一下密钥存储位置,以及查看密钥的密码(可以不设置),按enter结束
查看密钥命令:
$ cat ~/.ssh/id_rsa.pub
2.2配置密钥
切换到git用户:
su git
打开git位置:
cd /home/git
ls -a
首先确认是否有ssh密钥:若有.ssh文件夹,进入查看是否有authorized_keys文件,如果都没有
创建.ssh文件夹
mkdir .ssh
创建authorized_keys文件:
touch authorized_keys
编辑authorized_keys文件,将生成的公钥粘贴到文件内
项目肯定不止一个开发者,把所有的git账号的密钥诸葛追加到authorized_keys尾部即可。
四、禁用shell登录
这一步是防止使用git用户使用普通的bash
vim /etc/passwd
最后一行看到类似的:
更改为:
当试图使用git用户登录的是时候,报错:
五、远程仓库权限问题
进入仓库目录执行:
chown -R git:git warehouse.git (warehouse是自己起的仓库名)
至此,服务器git仓库就已经搭建完毕了
接下来进行项目迁移
六、数据仓库迁移
以上warehouse.git是我自建的空库
因为原来已经有在使用的仓库,所以要把项目迁移到新仓库
1.把本地仓库的项目变为纯仓库:
示例(我的项目名叫mySpider):
git clone --bare mySpider mySpider.git
2.将纯仓库放到git服务器上:
scp -r mySpider.git username@139.196.152.104:/home/git/
3.j继续进入本地仓库的项目内,查看当前项目的远程仓库:
示例(我的项目名叫mySpider):
cd mySpider
git remote - v
4.移除远程仓库:
git remote rm origin
5.添加远程仓库
git remote add origin git@139.196.152.104:/home/git/mySpider.git
6.设置本地分支关联远程分支:
git push --set-upstream origin master
七、结尾
仓库搭建完成,数据也迁移完成,最后克隆仓库项目:
git clone username@仓库地址:/项目.git
克隆项目之后修改然后提交:git push
出现bug:
remote: error: insufficient permission for adding an object to repository database ./objects remote:
远程:错误:权限不足,无法将对象添加到存储库数据库中。/对象远程:
解决:
1、修改仓库目录所属用户为 root,用户组为 root
chown -R 创建仓库时创建的用户名:所属组(云服务器用户名) /home/git
2、修改仓库目录为可写权限
chmod -R 777 /tmp (所有用户都有读、写、执行权限)
-
提交代码到远程GIT仓库,代码自动同步到远程服务器上。
2019-05-08 17:01:29这是我找到实现 提交代码到远程GIT仓库,代码自动同步到远程服务器上及一些问题解决的博客 1.提交代码到远程GIT仓库,代码自动同步到远程服务器上。 2.上传本地文件到Github远程仓库 3.git 报错 gitThere is no ... -
服务器搭建git仓库
2018-06-20 09:59:30说白了,就是给服务器建个仓库,完了把代码可以从本地推到服务器上,如果正好,你的线上项目刚好读取的是git仓里相对应的项目目录,那么恭喜,你从本地修改了代码推送上去后访问你服务器项目地址就可以直接显示出... -
自动拉取远程git仓库代码
2019-07-19 10:50:35通常我们使用git时本地开发,上传到远程仓库中,服务器在拉取远程仓库的代码,这样就需要开发人员要经常登录到服务器中手动拉取代码,是比较繁琐的。 今天分享一个git自动拉取线上代码的shell脚本。 脚本里面涉及... -
在自己的服务器上搭建git仓库服务器(本地推送到远程仓库、远程仓库推送到本地)
2021-10-03 17:46:18文章目录Git服务器一、安装Git二、配置Git1....如果是个人项目,或者是小型团队项目,不希望放到GitHub、Gitee这样的公共仓库包管理而让别人看到你的“工程空间“,那么你可以试试自己搭建Git服务器。 一. -
git服务器创建版本库,本地代码关联远程仓库并上传代码
2021-03-07 20:20:06上一篇文章中我们在windows服务器下搭建了Git服务器,这篇文章我们在Git服务器创建版本库,和本地代码关联,将代码上传到版本仓库。 第一步:创建版本库 填写完版本库信息后,点击创建按钮: 这就是刚刚创建的... -
git拉取远程仓库命令代码
2021-07-21 17:57:53一 、使用git从远程仓库下载代码至本地 在本地新建一个文件夹 打开文件夹,从该文件夹进入git命令行页面。使用git bash here命令。如下: 进入命令行后,先初始化基础信息设置: git config --global user.... -
git服务器搭建:快速搭建git 私有仓库
2021-11-09 23:15:30常用的git服务器有github等公用服务器,代码仓库保存在公有云,代码可以发布,也可以不发布。 为什么要学会搭建git服务器? 既然都有GitHub等公用的服务,为什么还要学会搭建git服务器?因为一般公司的代码不允许... -
git仓库拉取代码记录
2020-08-02 21:09:59配置完git 拉取代码测试 进入root 根目录 再进入 developer 创建文件夹存放代码 ...拉取仓库代码 git clone git@gitee.com:emmacheng/emmammall.git 进入分支 查看远程分支 然后切换分支 ... -
Git之深入解析如何运行自己的Git仓库托管服务器
2021-09-15 21:13:48然而,为了使用 Git 协作功能,还需要有远程的 Git 仓库。尽管在技术上可以从个人仓库进行推送(push)和拉取(pull)来修改内容,但不鼓励使用这种方法,因为一不留心就很容易弄混其他人的进度。如果还不清楚 Git ... -
hook git仓库自动更新脚本
2017-02-10 23:28:46hook git仓库自动更新脚本,服务器自动更新部署 -
git 实现两个仓库间的代码同步
2022-03-16 14:05:31不同服务器上2个 git 仓库代码同步 -
git克隆代码库到本地-怎么把git代码导入到本地仓库
2021-08-13 09:17:00Git本地仓库使用1)初始化gitinitcd到你本地的工程目录,初始git使用环境,当前目录下会创建一个.git目录。我这是之前init过了,所以会提示reinit。...利用gitstatus如何通过xcode从git远程代码库clone到本地当然可... -
Git如何把本地代码推送到远程仓库
2020-12-28 20:09:38Git如何把本地代码推送到远程仓库http://blog.csdn.net/yl_cc/article/details/72676538正题在项目的建立初期都是先搭建基础框架,在完成基础框架的搭建后,才把代码放到代码管理服务器上,让项目组成员进行检出从而... -
Git如何更新远程仓库代码到本地
2022-04-18 09:32:032.执行命令会找到项目重新拉取代码进行更新,可以看到该程序有更新。 git fetch --all 3.执行命令进行更新文件的下载覆盖,下面会列出哪些文件进行了修改。 git pull 4.释放第一步保存的本地修改,因为现在的... -
git 仓库迁移的方法
2021-05-18 16:13:06git 仓库迁移的方法 一般我们要做迁移,需要保留原先的commit记录,普通的新建仓库&拷贝是行不通的,会丢失掉log...2、去新的git服务器上创建仓库 3、进入到旧仓库git中,将镜像推到新仓库中 cd oldProject.git git -
git创建服务器端
2017-12-19 10:42:54代码管理工具,git服务器端建立仓储,在自己的电脑上就可以创建远程代码仓库 -
在linux服务器部署git仓库
2017-11-12 17:52:521.在linux服务器上安装git使用yum安装yum install -y git安装完后,查看 Git 版本:git --version可以看到版本号,表示安装成功...创建git仓库创建存放git仓库的文件夹:mkdir -p var/git/default.git 初始化:git init -
创建git仓库|将本地项目上传到git仓库
2021-12-01 16:55:20一、创建git仓库 博主平时习惯使用Gitee,所以就按照gitee举例: gitee网址:https://gitee.com/ 1. 创建一个空的git项目 点击页面右上角加号 点击新建仓库按钮 填写项目信息,创建即可 2. 本地项目上传 创建后... -
linux上搭建私有Git服务器的详细教程
2021-01-09 01:35:59但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。 搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS。以下... -
git 从远程仓库拉取代码
2020-12-20 07:25:05使用git 直接提交的话 直接 push获取最新版本 有两种 拉取 和 获取 pull 和 fetchgit pull 从远程拉取最新版本 到本地 自动合并 merge git pull origin mastergit fetch 从远程获取最新版本 到本地 不会自动合并 ... -
jenkins拉取git仓库代码的两种方式
2021-05-08 11:44:42选择username with password,输入远程git仓库的用户名和密码 选择添加好的用户名和密码凭据 点击保存 点击构建验证 2、使用ssh方式验证拉取git代码 直接在原项目上更改配置 更改网址为ssh://git@…方式,删除... -
在centos7搭建git代码仓库
2020-09-26 22:17:37在centos7搭建git代码仓库 前言 在以前的开发自己的个人小程序时我一直使用SVN来作为代码的版本控制系统,但是使用SVN有一个比较明显的弊端就是代码都是以中央仓库的方式进行管理,必须要在联网的情况下才能使用。... -
centos7 git仓库搭建代码同步
2018-08-31 21:12:04由于我们的代码有本地(每个开发人员的电脑),局域网,测试线上环境(及正式环境),相当于三端。 基本结构图如下: 代码管理流程图 一.局域网和线上cenos7搭建安装git 1.安装线上git yum install git #安装... -
阿里云搭建git仓库服务器
2018-08-07 20:27:22最近有个项目需要在服务器上的git仓库维护,git操作都要在服务器上的git上执行,这样安全性能得到保障。之前写的开源项目都放在github。手头刚好有个跑网站的阿里云服务器,说干就干: 1. 服务器上安装git: sudo...