本地电脑代码通过git同步到服务器上方法

在开发和研究过程中,您可能需要将本地已有的 Git 仓库复制到远程服务器上,并通过 Git 来保持二者的同步。本文将介绍如何将本地 Git 仓库复制到远程服务器,并允许推送更改到检出的分支。

一:本地已有 Git 仓库

首先,确保您在本地已经有一个 Git 仓库。如果还没有,您可以使用以下命令初始化:

cd /path/to/your/local/LUTO
git init

二、将本地仓库复制到远程服务器

1. 在远程服务器上创建目录

登录到远程服务器,并创建一个用于存放 Git 仓库的目录:

ssh xp@gadi.nci.org.au
mkdir -p /scratch/jk53/LUTO_XH/LUTO2

2. 将本地仓库直接复制到远程

使用 scp 或 rsync 将本地仓库复制到远程服务器:

scp -r /path/to/your/local/LUTO xp@gadi.nci.org.au:/scratch/jk53/LUTO_XH/LUTO2

3. 在远程服务器上检查文件

登录到远程服务器,确认文件已成功复制:

ssh xp7241@gadi.nci.org.au
cd /scratch/jk53/LUTO_XH/LUTO2
ls -a

确认 .git 目录存在,表示仓库已完整复制。

三、配置远程仓库

1. 在远程服务器上初始化 Git 仓库

如果 .git 丢失,或者需要重新初始化远程仓库,运行以下命令:

git init

2. 设置 Git 配置允许推送到检出的分支

由于默认情况下,Git 不允许推送到当前检出的分支,您需要修改远程仓库的配置:

git config receive.denyCurrentBranch ignore

这将允许您直接推送到当前检出的分支(如 master)。

四、在本地连接远程仓库

1. 添加远程仓库

在本地仓库中,添加远程服务器的仓库作为远程:

cd /path/to/your/local/LUTO
git remote add nci xp@gadi.nci.org.au:/scratch/jk53/LUTO_XH/LUTO2

2. 检查远程仓库是否添加成功

使用以下命令验证远程仓库的配置:

git remote -v

输出类似以下内容:

nci  xp@gadi.nci.org.au:/scratch/jk53/LUTO_XH/LUTO2 (fetch)
nci  xp@gadi.nci.org.au:/scratch/jk53/LUTO_XH/LUTO2 (push)

五、推送本地更改到远程仓库

1. 推送本地仓库到远程

使用以下命令将本地的 master 分支推送到远程服务器:

git push -u nci master

2. 同步远程仓库的工作目录

推送完成后,远程仓库的工作目录需要与最新的提交同步。在远程服务器上运行以下命令:

ssh xp@gadi.nci.org.au
cd /scratch/jk53/LUTO_XH/LUTO2
git reset --hard

这将确保远程仓库的工作目录与最新提交保持一致。

六. 创建钩子

在本地仓库的 .git/hooks/ 目录下创建 post-commit.cmd 文件,并添加以下内容:

@echo off
REM post-commit hook script

REM Push changes to the remote repository on the server
git push a2h master

创建 post-merge.cmd 文件,并添加以下内容:

@echo off
REM post-merge hook script

REM Push changes to the remote repository on the server
git push a2h master

七、注意事项

在Git中配置自动换行符处理
你可以在Git中配置自动换行符处理,以确保在推送和拉取代码时,Git会自动转换换行符。

设置Git配置
在你的本地仓库中,使用以下命令配置Git:git config core.autocrlf input
否则会遇到错误

sbatch: error: Batch script contains DOS line breaks (\r\n)
sbatch: error: instead of expected UNIX line breaks (\n).

因为Windows使用的是CRLF(\r\n)作为换行符,而Unix/Linux系统使用的是LF(\n)作为换行符。当你将脚本从Windows同步到Linux服务器时,换行符格式会不一致,从而导致这个错误。

posted @ 2024-07-16 08:12  skypanxh  阅读(95)  评论(0编辑  收藏  举报