通過 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就可以了