git拉取和提交程式碼及提交程式碼遇到的問題
通過 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 [email protected]: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就可以了