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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM