通过 Git 将代码提交到 GitHub
pull:该单词直译过来就是“拉”的意思,如果我们远程仓库的代码有了更新,同样为了保持本地与远程的代码同步,我们就需要把远程的代码拉到本地,代码示例:
git pull origin master
push:该单词直译过来就是“推”的意思,如果我们本地的代码有了更新,为了保持本地与远程的代码同步,我们就需要把本地的代码推到远程的仓库,代码示例:
git push origin master
pull request它表示:如果我们fork了别人的项目(或者说代码),并对其进行了修改,想要把我们的代码合并到原始项目(或者说原始代码)中,我们就需要提交一个pull request,让原作者把我们的代码拉到 ta 的项目中,至少对于 ta 来说,我们都是属于远程端的。
一般情况下,我们在push操作之前都会先进行pull操作,这样不容易造成冲突。
提交代码的两种方式
对于向远处仓库(GitHub)提交代码,我们可以细分为两种情况:
第一种:本地没有 Git 仓库,这时我们就可以直接将远程仓库clone到本地。通过clone命令创建的本地仓库,其本身就是一个 Git 仓库了,不用我们再进行init初始化操作啦,而且自动关联远程仓库。我们只需要在这个仓库进行修改或者添加等操作,然后commit即可。
1进入 GitHub 个人主页,
2点击examplexx项目,
3进入examplexx项目后,点击Clone or download,复制上图所示的地址链接。然后,进入我们准备存储 Git 仓库的目录,例如下面我们新建的GitRepo目录, 从此目录进入 Git Bash:
4接下来,输入
git clone https://github.com/guobinhit/mybatis-tutorial.git
命令,其中clone后面所接的链接为我们刚刚复制的远程仓库的地址
5如上图所示,我们已经把远程的examplexx仓库clone到本地啦!下面,我们看看clone到本地的仓库内容与远程仓库的内容,是否完全一致:
6复制需要提交的代码
7接下来,从此目录进入 Git Bash,然后输入git status命令查看仓库状态:
8显示有文件未被追踪,进行git add操作
9将目录add并commit到examplexx仓库
10然后输入git log命令查看仓库日志:
退出git bash:长按ESC,再输入两个大写的Z
退出git log:按Q就行啦~
11再输入git status命令查看仓库状态,我们已经将examplexx仓库里面新添加的目录都提交啦!下面,我们将本地仓库的内容push到远程仓库,输入git push origin xx命令:
12在第一次向远程仓库提交代码的时候,需要输入账号及密码进行验证,验证成功后,显示如下结果
git config --system --unset credential.helper取消弹出框验证用户名密码
如上图所示提交成功
13然后,刷新 GitHub 中mybatis-tutorial仓库
第二种
本地有 Git 仓库,并且我们已经进行了多次commit操作
1首先,建立一个本地仓库,命名为springmvc-tutorial:
2进入该仓库,进入init初始化操作 git init
3然后,输入命令,关联远程仓库(在此,默认大家都知道如何获取远程仓库的地址),其中origin为远程仓库的名字
git remote add origin https://github.com/guobinhit/springmvc-tutorial.git
4输入git pull origin master命令,同步远程仓库和本地仓库
5再回到本地springmvc-tutorial仓库,看看我们是否已经把远程仓库的内容同步到了本地
6显然我们已经把远程springmvc-tutorial仓库里面仅有的README.md文件同步到了本地仓库。接下来,在本地仓库新建一个名为test.txt的测试文件:
7输入git add和git commit命令,将文件test.txt添加并提交到springmvc-tutorial仓库:
8再输入git push origin master命令,将本地仓库修改(或者添加)的内容提交到远程仓库
9我们已经将本地仓库的内容同步到了远程仓库。下面,我们进入远程springmvc-tutorial仓库的页面,看看我们的提交结果
此外,在这个例子中,我们将远程仓库命名为origin,本地仓库名为springmvc-tutorial,其实两者的名字咱们可以随意取,一般来说,我们习惯性将远程仓库命名为origin,不过在需要关联多个远程仓库的时候,就需要我们再取别的名字啦!
最后,再强调一遍:在我们向远程仓库提交代码的时候,一定要先进行pull操作,再进行push操作,防止本地仓库与远程仓库不同步导致冲突的问题,尤其是第二种提交代码的情况,很容易就出现问题。
总结
1、在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;
2、把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;
3、再通过git commit -m "注释内容"把项目提交到仓库;
4、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin https://github.com/guyibang/TEST2.git将本地仓库和远程仓库进行关联;
5、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上;(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。
提交代码途中遇到的问题
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts. To git@github.com:hunhun1122/suanfa.git ! [rejected] master -> master (non-fast-forward)
那条警告的大概意思就是:警告:为IP地址13.250.177.223的主机(RSA连接的)持久添加到hosts文件中,那就来添加吧!
解决办法:
vim /etc/hosts
添加一行:13.250.177.223' github.com
Windows环境:
C:\Windows\System32\drivers\etc\hosts 文件
IDEA提交失败,提示:OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
原因:
是Git的Http代理的问题,Git支持三种协议:git://、ssh:// 和 http://,本来push的时候应该走ssh隧道的,但是因为设置了http代理,所以就走了http的代理,于是就提交不了了。
解决办法:
方法一:这种情况偶尔出现,可能时当时的网络问题,可以换个wifi或者热点,或者,,过一会再试试(如果还不行,用方法2)
方法二:既然是因为设置了http代理,那取消该设置即可
打开需要提交的项目的本地根目录
直接右键单击(不要选中某个文件夹),选择Git Bash Here,进入命令行
输入以下命令,回车即可git config --global --unset http.proxy
重启idea再进行提交即可
error: src refspec master does not match any. 错误的解决办法
git push origin mian
当时写的master,还成main就可以了