Linux上传文件至GitHub
Linux学习系列(二十):在Linux系统中使用Git上传代码到GitHub仓库
Linux下使用git克隆github项目及文件上传
Linux/Ubuntu下使用git从Github拉取项目文件、提交修改后文件的完整流程演示
[Git]-Linux下的git操作
从零开始一个git操作实例,图文并茂
// 安装
sudo apt install git
// 查看 git 版本
git version
// 绑定 Github 用户
git config --global user.email "[email protected]" //email@example.com 此处应写Github账号的注册邮箱
git config --global user.name "name" // name 此处应写 Github 账号的用户名
// 查看用户信息
git config --list
生成密钥,若添加密码则后续上传和克隆项目都需输入密码(不建议添加密码)
ssh-keygen -t rsa -C "YourEmail" // 生成ssh密钥文件
cat ~/.ssh/id_rsa.pub // 查看自己的ssh key(公钥)
cat ~/.ssh/id_rsa // 查看私钥
// 把私钥添加到本地ssh中
ssh-add 私钥位置
其中,id_rsa 为私钥,id_rsa.pub 为公钥。
将公钥复制(不要复制后面的邮箱),添加到自己的github账号上
登录自己的github账号,新建仓库,添加或不添加README.md,根据需求,设置名称、权限等内容
1.本地手动初始化仓库:
cd 目标文件夹
git init // 将该文件夹初始化为git仓库
// 设置 Git 的默认文本编辑器(VSCode or Vim),不设置也行
git config --global core.editor "code --wait --new-window"
git config --global core.editor "vim"
// 设置 Git 的默认分支名为 main
git config --global init.defaultBranch main
// 查看设置信息
git config --global --list
2.先创建好github仓库,再clone下来完成初始化
git clone HTTPS/SSH url // 直接clone一个已有的仓库
// 根据需要执行下面的语句
rm -rf .git // 删除原项目.git文件
git init // 仓库初始化
编辑本地项目文件或直接拖动文件到文件夹。
此时文件都在工作区。
分支操作:
git branch // 查看当前分支情况,其中*号标记的是目前工作的分支
// 创建分支
git branch // 创建某个分支
git checkout -b // 以当前分支为基础新建分支并切换至新分支
git checkout // 切换至某个分支
git push origin main:develop // 在远程仓库origin的main分支下创建develop分支
// 合并分支,以当前工作的分支为主
git merge // 合并分支
git merge --abort // 放弃本次合并
// 删除分支
git branch -d // 删除分支
git push origin -d develop // 删除远程仓库origin的分支
git文件的颜色及含义:
添加文件:添加文件到缓存区。
git add . // 添加全部文件
git add < file-name > // 添加具体某个文件
git add -A // -A表示提交所有
// 查看暂存区的文件情况
git status
提交文件:将缓存区的所有文件提交到本地仓库。
git commit -m "提交信息"
git log // 查看提交的版本记录
git reflog // 查看操作日志
历史记录:代码的commit历史会在文件夹里的隐藏文件夹 .git 里记录,通过git log可以查看。
显示的信息如下:
一般使用 origin 作为远程 Git 仓库的别名,也可以自定义设置其他名字
// 两种连接方式,HTTPS和SSH
git remote add origin https://github.com/xxxxx/test.git
git remote add origin git@github.com:user/repo.git
// 两种连接方式的切换
git remote set-url origin https://xxx.git // 从ssh切换至https,后面接HTTP地址
git remote set-url origin xxx.git // 从https切换至ssh,后面接ssh地址
// 测试与github或者gitee(码云)有没有连通
ssh -T git@github.com //测试github 的命令
ssh -T git@gitee.com //测试gitee 也就是码云的命令
// 查看目前的句柄
git remote -v
// 移除目前的句柄
git remote rm origin
拉取更新:在上传代码到远程仓库之前,应该先将远程仓库更新的代码拉取到本地
// 1.
// 拉取远程更新
git fetch origin main // 拉取远程仓库的 main 分支
git fetch origin [分支名] // 拉取远程仓库的其他分支
git branch -a // 查看本地分支和远程跟踪分支
// 合并远程更新到当前工作的本地分支
git merge origin/main
// 2.
// 直接使用pull,相当于git fetch + git merge
git pull 远程仓库名 远程仓库分支名
上传:将本地仓库的修改上传到远程仓库
git remote -v // 确认当前关联的远程仓库
// 1.
// 直接上传
git push -u origin main // 把当前的本地分支上传到远程仓库origin的main分支,并将main分支设为其默认的上游分支
// 下一次提交就不用添加 -u 了,只需要在第一次提交时添加
// 2.
// 将本地分支关联到远程仓库的某个分支
git branch --set-upstream-to=origin/main master // 把本地分支master关联到远程仓库origin的main分支
git branch -vv // 查看本地分支与远程分支之间的关联信息
// 将远程分支合并到本地分支
git merge origin/main --allow-unrelated-histories // 当报错:fatal: 拒绝合并无关的历史时添加上参数--allow-unrelated-histories,以允许本地分支和远程分支具有不同的提交历史
// 提交上传
git push
[Git]-Linux下的git操作
1.从本地仓库恢复文件到工作区
原因:Git认为你正在尝试合并两个没有共同祖先的分支,这通常意味着它们完全是不同的项目。
当 git pull 碰到拒绝合并无关历史
解决办法:在确保这次提交时正确的同时,强制执行它。参考
这个命令会尝试合并上游仓库的master分支的更改,即使这两个分支的历史记录完全不相关。然后,你可能需要解决任何合并冲突,然后提交合并。
请注意,这种合并可能会很复杂,并可能不是你想要的。如果你不确定,可能需要寻求额外的帮助或考虑其他解决方案来合并或同步这两个仓库。
git merge origin/main --allow-unrelated-histories // 强制合并