
Linux使用Git命令远程上传
文章摘要
青稚Ai
1. 准备工作
- 本文以
Github
为例,其他代码托管平台类似。- 本文以
SSH URL
为例,因为在push
时,不需要输入用户名
及Personal access tokens
,如果配置SSH key
的时候设置了密码(需要输入密码),否则直接不需要输入密码。- 具体创建
Github
仓库的方法,懂得都懂,这里不过多说明。
1.1 申请 Personal access tokens
SSH URL
忽略此步骤。HTTPS URL
在push
的时需要验证用户名
和Personal access tokens
。
- 点击右上角的头像,然后选择
Settings(设置)
。 - 在左侧导航栏中,选择
Developer settings(开发者设置)
。 - 在
Developer settings
页面上,选择Personal access tokens(个人访问令牌)
- 在
Personal access tokens
页面上,点击Generate new token(生成新令牌按钮)
- 提供一个描述以标识该访问令牌的用途。
- 在
Select scopes(选择范围)
部分,选择要授予该令牌的权限。这些权限将决定该访问令牌可以执行哪些操作。根据需求选择合适的权限,例如repo(仓库)
,admin:org(组织管理)
等。 - 完成设置后,点击页面底部的
Generate token(生成令牌)
按钮。
注意:生成的访问令牌将显示在屏幕上,请确保复制该令牌并妥善保存。一旦离开该页面,将无法再次查看完整的访问令牌。
1.2 git安装
Debian:
1 | sudo apt install git |
Fedora:
1 | sudo dnf install git |
可通过git --version
命令查看,正常输出Git
版本号即安装成功。
1.3 配置用户名和邮箱名
命令如下:
1 | git config --global user.name "Your Name" |
配置完后可以通过以下命令查看:
1 | git config user.name |
1.4 配置SSH公钥
创建公钥文件,生成的公钥文件会保存在本机的~/.ssh
目录下:
1 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" |
然后三步询问直接回车即可(连续三次回车)。
创建完成后进~/.ssh
目录,(将公钥即id_rsa.pub
的内容)复制出来:
1 | cd ~/.ssh |
如果进入该目录时提示No such file or directory
,自己手动创建一个即可:mkdir ~/.ssh
将公匙放入GitHub
,以ssh-rsa
开头
2. 开始上传
- 2020年10月1日后,
Github
会将所有新建的仓库的默认分支从master
修改为main
。- 初始化仓库后:
git branch -m main
把仓库名改为main
,如果需要推送其他分支,改成需要推送的分支名。
终端进入我们需要上传项目所在的文件夹,使用Git
的初始化命令:
1 | git init # 初始化一个新的Git仓库 |
上传之前,我们需要添加上传的文件,这里我们要上传当前文件夹内的所有文件:
1 | git add ./ # 把文件添加到暂存区 |
查看当前项目的分支与添加文件情况:
1 | git status |
提交暂存区的文件到版本库:
1 | git commit -m "提交项目相关信息" # 把暂存区内容提交到本地仓库 |
添加创建的Git
仓库,命名为origin
远程仓库示例:
1 | git remote add origin git@github.com:Linux-qitong/hexo-theme-solitude.git |
使用push
指令进行上传。
1 | git push -u origin main # git push <远程仓库名> <远程分支名> 这里origin是默认远程仓库别名,main是分支名 |
如果是采用https url
会提示输入:
1 | username:Your Name |
再次刷新GitHub
上传成功。
3. 解决方案
下面是一些常见的解决方案来修复这些错误:
3.1 添加远程分支追踪
在新的代码仓库中,需要配置远程分支追踪:
1 | git branch --set-upstream-to=origin/main main |
3.2 允许无关的历史合并
遇到了fatal:refusing to merge unrelated histories.
通常是因为本地代码仓库和远程代码仓库之间存在不同的提交历史,可使用以下命令:
1 | git pull origin main --allow-unrelated-histories # 这个命令将允许合并无关的历史 |
3.3 强制推送修改(多人仓库不推荐)
如果遇到:Updates were rejected because the remote contains work that you do not have locally.
这说明远程代码仓库中包含了本地仓库没有的更改。 可使用以下命令:
1 | git push origin main --force # 强制推送本地的更改,并覆盖远程代码仓库 |
3.4 遇到fatal: Exiting because of unfinished merge.
如果想完成这个合并,解决所有可能存在的冲突:
1 | git commit -m “Complete merge” |
如果想取消合并:
1 | git merge --abort |
一旦合并完成或取消,可再次尝试推送更改:
1 | git push origin main |
4. 命令扩展
4.1 创建推送标签:
1 | git tag -a v1.1 -m "Version 1.1" # 创建一个标签,1.1版本 |
4.2 将刚刚创建的标签推送到远程仓库:
1 | git push origin v1.1 |
4.3 创建新分支:
1 | git checkout -b <新分支名> # 创建新分支 |
4.4 推送新分支:
1 | git push origin <新分支名> # 推送文件到新分支 |
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自青稚の空间
评论 ()