楚新元 | All in R

Welcome to R Square

愉快地通过 Git 向 GitLab 推送更新

楚新元 / 2021-08-18


配置本地 Git 仓库

设置用户名和邮件地址

git config --global user.name "USER_NAME"
git config --global user.email "USER_EMAIL"

这里的 "USER_NAME"USER_EMAIL 填写你注册 GitLab 时的用户名和邮箱地址。

注意 2024-06-10

下面的生成密钥和显示密钥并复制章节建议直接在 RStudio 里处理。另外下面的方法生成的是过时的 RSA 类型的密钥,推荐 ED25519 类型的 SSH key,这也是新版 RStudio 默认的类型。下面是好友 CyrusYip 提供的两篇相关文章供参考:

生成密钥

ssh-keygen -t rsa -C "电脑型号"

这里格外注意,让输入密钥的密码时留空即可,不然每次更新提交后都需要输入密码。

显示密钥并复制

cat ~/.ssh/id_rsa.pub

从 ssh-rsa 开始一直到最后一个字符全都复制下来。

GitLab 网站相关设置

把密钥内容粘贴到 GitLab

登陆 GitLab -> Settings -> SSH Keys -> 粘贴到文本框 -> Add key

验证是否与 GitLab 正常通信

打开 Git bash,输入以下命令:

ssh -T git@gitlab.com

如果显示以下内容则说明正常连接到远程镜像了。

Welcome to GitLab, @USER_NAME!

在 RStudio 里面操纵项目

查看 RStudio 是否识别了本地的密钥

打开 RStudio -> Tools -> Global Options -> Git/SVN -> View public key

同步 GitLab 上的仓库到本地

这里有两种方式:

git clone git@gitlab.com:USER_NAME/PROJECT.git LOCAL_PATH

推送一个更新实践检验

更新项目内容 -> 点击右上角 Git -> 涉及到的所有更新文件前面打勾 -> 点击 Commit 菜单 -> 查看前后差异 -> 填写 Commit message -> 点击 Commit 按钮 -> 点击 Push。

如果是更新博客,推送成功后,大概一分钟左右后就会更新网站内容,刷新网站试试看!

本地已有项目同步到 GitLab 上

  1. 如果本地项目创建的时候没有勾选 creatre a git repository,那么首先要在本地创建 Git 仓库。RStudio 里具体操作如下:

Tools -> Project Options -> Git/SVN -> 版本控制系统选择 Git -> 一路点击确实后自动重启。

  1. 将本地项目提交到本地创建的 Git 仓库。具体操作如下:

点击右上角 Git -> 涉及到的所有更新文件前面打勾 -> 点击 Commit 菜单 -> 查看前后差异 -> 填写 Commit message -> 点击 Commit 按钮。或者用如下命令实现:

git add --all *
git commit -m 'update'
  1. 在 GitLab 里创建一个同名的空项目。

  2. 告诉你的 Git 本地仓库,有一个远程版本在 GitLab 上,将你的项目推送到那个远程仓库。这一步只能在 shell 里操作,在 RStudio 里打开一个 Terminal,输入如下命令:

git remote add origin git@gitlab.com:chuxinyuan/example.git
git push -u origin master

至此,本地项目就同步到了 GitLab 远程仓库。

双系统注意事项

注意 2024-06-09

Linux 系统下已将文件更新推送到 GitLab 上,打开 Windows 系统后 Git 仍然提示你文件已修改,需要处理,但是点击 RStudio 右上角 Git 菜单下的这个带 “M” 标志的文件后一切恢复正常。

如果同一个项目,在 Windows 系统下已将文件更新推送到 GitLab 上,打开 Linux 系统后 Git 仍然提示你文件已修改,需要处理,但是运行 git pull 你会发现当前版本和 GitLab 上的版本是一致的。造成这个问题的原因是 Linux 本地的 Git 仓库并不知道你在 Windows 本地的 Git 仓库做了哪些改动从而造成了不一致。

运行 git status 命令后,系统会提示你:

位于分支 master
您的分支与上游分支 'origin/master' 一致。
要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)

此时,通过 git restore --staged . 批量取消暂存即可。

再次运行 git status 命令后,系统会提示你:

位于分支 master
您的分支与上游分支 'origin/master' 一致。
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)

此时,通过 git restore . 批量丢弃工作区的改动即可。