git push origin master报错的解决方法 & 常见git命令(待更新)

git push origin master报错的解决方法 & 常见git命令(待更新)

参考Git常用命令


开始之前,先介绍一下 将本地文件夹添加到git仓库的一些常见命令
参考 将本地文件夹添加到git仓库

1.git init;
2.git add .
3.git commit -m "初始化"
4.git remote add origin https://github.com/githubusername/demo.git
5.git pull origin master
6.git push -u origin master

Note:个人喜欢在git控制台上提交文件,不习惯在Pycharm或者IDEA里提交(虽然可视化效果不错,但不利于git命令的巩固学习)

1、git push origin master报错的解决方法

一开始我以为是我身份验证失败,看了网上的解决方法,添加了SSH密钥,但是问题还是没有解决。

git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”

在这里插入图片描述

Step1:

参考git 解决 fatal: ‘origin’ does not appear to be a git repository

后来发现主要原因不在身份验证上,而是找不到远程仓库的位置remote一下就可以了

git remote add origin git@github.com:xxse/xx.git

如果remote时出现fatal: remote origin already exists.
在这里插入图片描述
解决方法是删除原有的origin

git remote -v 
git remote rm origin

参考fatal: remote origin already exists. (远程来源已经存在 解决办法)

Step2:

但是remote之后,再push仍然存在问题,原因是
在这里插入图片描述

参考! [rejected] master -> master (fetch first)

github允许你本地仓库有的东西,远程仓库里没有,但不允许远程仓库有的东西,你本地仓库没有

所以在提交之前需要先拷贝远程仓库,命令如下

git pull --rebase origin master

注意用的是--rebase命令。

step3:

git push origin master
在这里插入图片描述
可以添加shell脚本,这样就不用每次输入那么多命令了

if [ ! -n "$1" ];  #-n str,字符串不为null,长度大于零
then
    msg="msg"
else
    msg="$1"
fi
 
git add .  
git commit -m '$msg'  
git remote add origin https://gitee.com/wangxiaoxi-1/KnowledgeDepository.git
git pull --rebase origin master
git push origin master 

参考win 下 git 提交代码脚本
更多shell脚本语法请见这里 linux中的sh脚本语法

其他报错解决方案汇总:

2、常见git命令

参考

1)git status

git status:查看当前分支状态
在这里插入图片描述

2)git add [file/dir/.]

  • git add [file/dir/.]:提交文件,文件夹或提交全部修改过的文件。
    在这里插入图片描述
    在这里插入图片描述

3)git rm -r --cached

参考去掉已经托管在git上的文件:.gitignore配置规则 及其 git rm -r --cached
如果刚才使用git add .把一些大文件一起add到本地仓库了,这时可以通过git rm -r --cached已经托管在git上的文件,其中-r是表示递归删除--cached表示删除暂存区和版本库的文件,但保留了工作区的文件。比如:

git rm -r --cached D:/code/voice_wake_up/speech2word_vosk/vosk-model-small-cn-0.22 

4)git branch,git checkout,git merge

  • git branch team1:创建team1分支
  • git checkout team1:切换到team1分支
  • git checkout master; git merge team1:切换到master分支,并将team合并到master分支上。

5)git 设置网络代理

参考git设置代理

HTTP协议代理设置--global 表示全局,不需要可以不加

git config --global https.proxy ***

比如我开启网络代理后,端口为10810windows系统可以通过 控制面板 >> Internet选项 >> 连接 >>局域网设置 进行查看)
例子:

# socks
git config --global http.proxy 'socks5://127.0.0.1:10810' 
git config --global https.proxy 'socks5://127.0.0.1:10810'
# http
git config --global http.proxy http://127.0.0.1:10810
git config --global https.proxy https://127.0.0.1:10810

# 只对github.com使用代理,其他仓库不走代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:10810
git config --global https.https://github.com.proxy socks5://127.0.0.1:10810
# 取消github代理
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy

6)Github/Gitee通过fork复制/合并/同步项目

参考GitHub/Gitee的Fork的作用(Github/Gitee fork 和 git clone的区别)

举个例子:假设你是浙大的学生,你想在“浙江大学课程攻略共享计划”项目中(作为开源社区中)的一个贡献者,你可以这么做:

  • 1) 在Github界面上 Fork 这个项目至你的个人GitHub仓库
  • 2) Clone你的 GitHub 仓库代码到本地;
  • 3)为了避免感染其他文件或文件夹,在本地的仓库下新建个人项目文件夹,命名格式为“课程名”,将你的上课笔记或课后作业答案放置在该文件夹内。
  • 4)将你本地仓库中新增的文件push到你的Github仓库中;
  • 4)接着在你的Github仓库界面上,通过 Pull Request 将你的内容推送至原仓库
  • 5)等待原仓库管理员Review 通过后,将你的代码合并到原仓库的主分支上

fork的时候可能会存在一个问题:

在你fork项目之后,原仓库又更新了,GitHub/Gitee不会自动帮你把原仓库的更新同步到你fork后的仓库,可能会导致在提交Pull request时,你的版本和原仓库的版本不一致进而报错

参考在GitHub上fork项目后,如何与原仓库同步?图解全过程中的方法,发现现在的Github并没有switching the base的功能(Gitee也没有),为了保证fork仓库和原仓库同步,可以

  • 1)先将原仓库作为一个分支拷贝(fetch)到本地(记作 upstream/master
  • 2)然后切换(checkout)到之前fork的本地master分支(记作origin/master
  • 3)接着将当前分支和upstream/master合并(merge)之后,将新增文件push到之前fork的仓库中,即可完成fork仓库和原仓库的更新。

在本地仓库中使用如下命令(参考gitlab或github下fork后如何同步源的新更新内容?删除git remote):

  • 1)给fork配置远程库, 先查看远程状态:git remote -v
  • 2)确定一个将被同步给 fork 远程的上游仓库
    git remote add upstream git@github.com:QSCTech/zju-icicles.git
    
    如果upstream变量名已被使用过,则使用git remote remove upstream删除该变量名绑定的远程地址
  • 3)开始同步fork
    • 从远程仓库中提取更新的数据:git fetch upstream
    • 切换到本地主分支:git checkout master,此时可能会报错,直接无视即可
      Already on 'master'
      Your branch is up to date with 'origin/master'.
      
    • upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。
      git merge upstream/master
      
    • 如果想更新到 GitHubfork 上,直接push就好了
      git push origin master
      

7)git lfs管理大文件

参考

  • 26
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值