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 ***
比如我开启网络代理后,端口为10810
(windows
系统可以通过 控制面板 >> 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):
7)git lfs管理大文件
参考