赞
踩
参考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
命令的巩固学习)
一开始我以为是我身份验证失败,看了网上的解决方法,添加了SSH密钥,但是问题还是没有解决。
git遇到的问题之“Please make sure you have the correct access rights and the repository exists.”
参考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. (远程来源已经存在 解决办法)
但是remote
之后,再push
仍然存在问题,原因是
参考! [rejected] master -> master (fetch first)
github允许你本地仓库有的东西,远程仓库里没有,但不允许远程仓库有的东西,你本地仓库没有。
所以在提交之前需要先拷贝远程仓库,命令如下
git pull --rebase origin master
注意用的是--rebase
命令。
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脚本语法
其他报错解决方案汇总:
参考
git status
:查看当前分支状态
git add [file/dir/.]
:提交文件,文件夹或提交全部修改过的文件。参考去掉已经托管在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
git branch team1
:创建team1
分支git checkout team1
:切换到team1
分支git checkout master
; git merge team1
:切换到master
分支,并将team
合并到master
分支上。参考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
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
仓库和原仓库同步,可以
fetch
)到本地(记作 upstream/master
)checkout
)到之前fork
的本地master
分支(记作origin/master
)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
如果
- 1
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'.
- 1
- 2
- 把
upstream/master
分支合并到本地master
上,这样就完成了同步,并且不会丢掉本地修改的内容。git merge upstream/master
- 1
- 如果想更新到
GitHub
的fork
上,直接push
就好了git push origin master
- 1
参考
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。