使用git推送代碼到開源中國以及IDEA環境下使用git


使用git推送代碼到開源中國以及IDEA環境下使用git

在學習Java的過程中我們會使用到git這個工具來將我們本周所編寫的代碼上傳到開源中國進行代碼托管,而在使用git的時候有很多的同學由於不會操作而只能在git@osc上新建項目后再新建文件並把自己的代碼一個一個的復制粘貼上去。這樣的操作方式不僅耗時耗力,也違背了利用git讓學習更加輕松的目的。

我認為,出現不會操作的主要是因為:

1. git對於我們來說是一個以前沒有接觸過的比較新穎的范圍;
2. git的教程比較分散,沒有一個完整全面通俗易懂的圖文講解對於學習一個較為新穎的事物是一種非常難受的體驗;
3. 對於命令行窗口、命令指令操作不習慣。

所以接下來我們會從頭開始來細講一下關於git的一些常用操作以及如何在IDEA環境下使用git

概況

1. 注冊git@osc
2. 如何在 git@osc 上新建項目
3. Windows 下安裝 git
4. 使用 git 向 git@osc 推送代碼
5. 使用 git 時常見的一些問題以及解決方式
6. 在 IDEA 中使用 git

注冊 git@osc

打開Git@OSC,單擊 加入Git@OSC 按鈕,如下圖:

如下圖所示設置屬於你的個人信息,

點擊 注冊 按鈕之后我們便可以在 git@osc 上進行代碼托管了

如何在 git@osc 上新建項目

在 git@osc 上新建項目,設置如下圖所示

這樣一來我們便擁有了一個新的項目,在這個時候其實我們已經能夠在項目中進行代碼托管了,只是因為沒有安裝git,托管的方式只能是最簡單但是最沒有效率的復制粘貼,所以我們要有下面的這一步 在Windows下安裝git

Windows下安裝git

下載

git最新版本官網下載地址點這里→git最新版本官網下載地址

下載界面如下圖所示,根據自己電腦的配置進行下載安裝包即可。

安裝

下載完成后根據自己的下載保存位置打開如下圖所示安裝包

按照下列圖片設置安裝即可

安裝過程中,詢問是否修改環境變量,選擇“Use Git Bash Only”. 即只在msysGit提供的Shell

(NOTE: 這個步驟最好選擇第二項“Use Git from the Windows Command Prompt”, 這樣在Windows的命令行cmd中也可以運行git命令了。這樣會對以后的一些操作帶來方便)

完成安裝后,打開命令行模式,輸入git指令,即可使用

使用 git 向 git@osc 推送代碼

接下來的內容也是我們這一篇的主要內容,會涉及到如題目所說的如何使用git將代碼托管到開源中國上。而在我們進行托管代碼之前需要做如下面列表所述的幾個准備工作。

1. 首先你需要有一個開源中國的賬號
2. 你要在git@osc里新建了一個項目
3. 你電腦上已經按上面的情況安裝了git
4. 在命令行模式下給git配置你的用戶名和郵箱
5. 你需要有一個ssh公鑰
6. 你已經寫好了一個需要上傳的項目

上述的6條准備工作中在前面我們已經講述了前三條,所以我們現在從第4條開始說起。

在命令行模式下給git配置你的用戶名和郵箱

有人可能會問,我已經把git下載好了,而且我在 git@osc 上已經輸入過我的用戶名和郵箱了為什么還需要這一步?

之所以需要這一步是因為你雖然在 git@osc 上注冊過賬號,輸入過你的用戶名和郵箱,但你本地的git軟件並不知道這些信息,如果你跳過這一步直接進行后面的操作例如直接向git本地倉庫托管代碼,git就會說,誒你誰啊你?為什么要往我這里放東西?所以,在命令行模式下給git配置你的用戶名和郵箱實際上就相當於你在告訴git你是誰,然后宣布你擁有在git那里放東西的權利。

那么我們現在就來說一說如何在命令行模式下給git配置用戶名和郵箱。

打開命令行模式,輸入如下指令

git config --global user.name "你的用戶名" 
git config --global user.email "你的郵箱地址"

這些配置都會存放在用戶所在目錄下的.gitconfig文件中,比如(C:\Users\Administrator.gitconfig,這個要看實際的路徑,也有可能在C:\Windows\System32\config\systemprofile目錄下),可以用記事本打開查看內容

ssh公鑰

首先我們還是來說一說ssh公鑰的作用是什么好了。

如果說利用git向 git@osc 上傳代碼是一個投遞快遞的過程,那么git在這個過程中擔當的就是快遞公司的角色, git@osc 上的遠程倉庫就是收件人,本地倉庫是就是寄件人,而ssh公鑰就是快遞單,用於核對寄件人和收件人信息,從而保證投遞無誤。

接下來就是如何設置ssh公鑰

首先通過自己的git安裝路徑找打git-bash.exe,雙擊運行,並在彈出的命令窗口中輸入以下指令

ssh-keygen -t rsa -C "youreamil@xxx.com"

一路回車,如下圖所示該指令會在你的當前用戶文件夾下生成一個名為.ssh的文件夾,用記事本打開該文件夾中名為id_rsa.pub的文件並復制里面的全部內容

打開http://git.oschina.net/keys頁面,在該頁面中可添加公鑰,標題可以隨便填,公鑰就是剛才復制過的內容,點擊保存即可

ssh公鑰上傳成功后的界面會像下面這樣

擁有一個需要上傳的項目

這一個我覺得沒必要多說了,因為利用git上傳代碼的前提就是有需要上傳的代碼。

使用git向 git@osc 托管代碼

既然我們都已經完成了准備工作,那么接下來就應該到了我們的重點內容,如何使用git向 git@osc 托管代碼

值得一提的是,在所有的六項准備工作中,前五項內容是只需要完成一遍就再也不用重復操作的內容,也就是說,如果說我在完成了准備工作,並已經完成一次成功的代碼托管,那么從第二次代碼托管開始,我只需要從第六項操作開始完成即可,不過前面我也說了,總不可能在沒有需要托管的代碼的條件下使用代碼托管。

簡單來說,使用git托管代碼可細分為以下幾個步驟,

1. 與git@osc建立連接
2. 將需要托管的項目歸入git的管理范圍
3. 將需要托管的文件添加到本地倉庫
4. 將本地倉庫中的代碼推送到遠程倉庫中去

首先,我們找到需要上傳項目文件的位置,點擊右鍵-Git Bash Here,這樣便會彈出和前面生成ssh公鑰時一樣的命令窗口。

首先我們執行第一步,與 git@osc 建立連接,在命令窗口輸入以下指令

ssh -T git@git.oschina.net

窗口會提醒你輸入用戶名和密碼,用戶名密碼就是你之前所申請的 git@osc 的用戶名與密碼,接着會提示輸入yes/no,輸入yes后回車,顯示出welcome to Git@osc,your username!說明連接成功,此處需要注意的是,若第一次連接成功之后,在第二次連接 git@osc 時就不需要再輸入用戶名和密碼。連接成功之后如下所示

完成第一步之后,我們已經與 git@osc 建立連接,接下來我們執行第二步,將需要托管的項目歸入git的管理范圍。

不過在那之前,如果你是使用的Windows系統,那么我們應先輸入

git config --global core.autocrlf false指令

注意:該條指令只需要第一次執行,從第二次起便不需要再執行

然后在剛才的窗口繼續輸入指令

git init

如下圖所示,可以看到會在該目錄下生成一個.git的隱藏目錄,這說明該目錄已經歸入git進行管理了

接下來我們需要在git窗口中繼續輸入

git add .

把該目錄下的所有文件全部提交到緩沖區

如果這一步之前執行過git config --global core.autocrlf false,那么這一步不會出現提示

如果未執行,那么會出現下圖所示的warning提示,具體原因在后面有解釋

使用git commit指令可以將緩沖區中的文件添加到本地倉庫。

先說明一下git addgit commit指令, git add 添加需要提交的文件,可多次使用,所以在使用的時候我們既可以使用git add .將該目錄下的所有文件添加到緩沖區,也可以像git add file1.txt這樣將file1.txt文件添加到緩沖區。

git commit是將緩沖區的文件添加到本地倉庫,所以commit命令一次可以提交多個文件,所以我們也有這樣的用法

git add file1.txt
git add file2.txt
git add file3.txt
git commit -m "add 3 files."

git commit -m參數后面跟字符串,告訴Git本次修改的說明信息。我們經常使用git commit -m "提交的描述信息"也是因為我們應該在每次提交的時候注明說明信息。

接下來我們使用git commit指令,同樣,如果之前沒有執行過git config --global core.autocrlf false,出現的提示會如下圖所示,如果執行過,那么出現的提示便不會出現提示中間部分的warning。

這樣我們已經將該項目目錄下的所有文件添加到了git的本地倉庫中,這個時候的代碼托管只能算是完成了一半,因為這只是相當於將你想要寄出的快遞打好包,但是卻還沒有寄出去,所以我們應該繼續輸入如下指令

git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git

上面所述的用戶名和項目名都是在 git@osc 中的用戶名和項目名,注意別把自己弄暈了。因為在實踐的過程中很多同學都因為對這一步不了解而導致之后的git push出現錯誤,所以我在這里解釋一下上面指令中origin后面所跟的網址就是你的項目地址,而所謂項目地址就是在你的項目網址后面加上.git。

例如在我要將本地倉庫與下圖中的項目建立連接,我應該輸入上面所寫的git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git的指令,origin后跟的地址就應該是下圖頁面下對應的網址再加上.git即可,對應的你也可以在圖中http|ssh右側的文本欄復制項目地址,在git bash界面中右鍵粘貼即可

注意,這一步完成之后是不會有提示出現的

接着便執行git push origin master指令即可,執行之后會提示輸入你的用戶名和密碼,用戶名可能因為你的設置原因,與網站昵稱不同,所以不知道自己用戶名是什么的時候可以看一眼自己的項目網址,git.oschina.net斜杠內跟的就是你的用戶名,密碼部分在輸入時是不會有顯示的。完成push后的截圖如下

看見上面的提示后打開剛剛上傳的項目,我們就可以看見我們上傳的文件了

使用 git 時常見的一些問題以及解決方式

運行git add . 出現 warning: LF will be replaced by CRLF

在之前我們提到過,如果說你使用的是Windows系統,在使用git init指令之前就需要先執行一次git config --global core.autocrlf false指令,如果不執行該條指令,直接執行git init指令也並不會出現錯誤,但在接下來直接執行git add .時,則會出現如下圖所示的提示,這是因為linux中的換行符【LF】與Windows中的換行符【CRLF】不一樣造成,需要進行轉換而造成的,詳細的見參考資料中windows使用git時出現:warning: LF will be replaced by CRLF

如果在執行git config --global core.autocrlf false指令之前你已經執行過了git init指令,則應執行rm -rf .git后再執行git config --global core.autocrlf false

之后再次執行

git init
git add .

即可

上傳項目應拼寫錯誤而出現無法上傳項目

在執行git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git因為origin后的項目名較長,難免會出現錯誤而導致無法上傳,但是在輸入過正確的項目名后又會發現無法執行,這個時候我們有兩種解決方法,

第一,打開.git下的config文件,把如下內容刪掉

[remote "origin"]
    url = http://git.oschina.net/whaon/none.git
    fetch = +refs/heads/*:refs/remotes/origin/*

然后在git命令行中輸入正確的項目名即可

第二,執行git remote rm origin

再執行git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git即可

執行git push origin master時出現提示無法上傳

這里最有可能出現的是fetch-firstnon-first-forward

fetch-first的錯誤提示如下

而non-first-forward的錯誤提示是像下面這張圖中的一樣

產生的原因不同,但基本上都是因為在遠程倉庫中已經擁有一部分文件,與你本地上傳的代碼並不完全一致而導致的,基本解決方法是

git pull origin master
git push origin master

如果先pull再push也無效,在確保遠程倉庫中的所有代碼在本地倉庫中都存在時,可以使用強推指令,使本地代碼強行覆蓋遠程倉庫文件,強推指令為git push -f origin master

使用gitignore忽略增加指定文件

在我們上傳代碼的時候需要注意,有些文件是不需要進行托管的,例如.class文件,所以我們便可以利用.gitignore文件來對不需要上傳的文件進行忽略,這個文件在 git@osc 新建項目后就會存在於項目的根目錄里,我們可以使用git pull origin master將該文件下載到本地,而在該gitignore文件中已經表示忽略.class文件,我們便可以執行rm -rf .gitgit initgit add .就會發現在向本地倉庫中添加文件時已經將.class文件忽略。

建議的git上傳代碼順序

在上面已經講解了git上傳的一個簡單順序,但實際上在操作之后就會發現,有些順序並不合理,比如我並不需要將.class文件上傳,所以我需要通過git pull origin master將遠程倉庫中的.gitignore文件下載到本地,但是我之前已經用過git commit指令將.class文件放入本地倉庫了,難道我還要使用rm -rf .git.git文件夾刪除后再重新來一遍嗎?這么麻煩?

所以在下面兩張截圖中是我推薦的避免出現很多錯誤的git上傳的命令順序。

順序是

ssh -T git@git.oschina.net
git init
git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git
git pull origin master
git add .
git commit -m "提交的描述信息"
git push origin master

在 IDEA 中使用 git

在現在的學習中,大部分同學使用的都是IDEA和eclipse,如果說,我們在使用IDEA編寫完一個項目后再使用git上傳,那么就會很麻煩,畢竟對於大部分人來說,接觸一個新事物是需要耗費精力的,所以在IDEA中就為大家准備了很方便git上傳方式。

在IDEA中使用git還是有前提條件的,並不是說我有了IDEA就可以直接使用git,我們還是需要在電腦上安裝git,並且在IDEA中對git進行配置之后才能在IDEA中使用git

關於如何在IDEA中進行git的配置

在IDEA的界面下,我們可以使用Ctrl+Alt+S打開設置,也可以在左上角File→Settings打開設置界面

Settings界面內,選擇左選項欄中的Version Control→Git→Path to Git executable,找到安裝git\bin路徑下的git.exe

點擊右側的Test,若路徑正確會出現如下的提示

使用git

在完成git的配置之后,我們便可以直接在IDEA中使用git功能上傳代碼了,不過這里分別有兩種方法,適用於兩種不同的情況,

  1. 適用於新建一個項目
  2. 適用於已有的項目

適用於新建一個項目

我們首先在 git@osc 上新建一個項目,得到一個項目鏈接

在Intellij IDEA工具欄中選擇 VCS——Checkout from Version Control——Git

在下面彈出的窗口中,粘貼 URL 然后點擊CLONE

此處點擊Test會出現如下圖所示的提示

接下來逐步創建項目即可。完成后的項目是這個樣子的,src文件夾需要自己建立並確定屬性。

然后你可以做相應的修改操作,你就可以在本地項目中進行Git add commit等操作了,對應的操作方法是在項目的位置點擊右鍵,出現菜單后,Git——Add,Git——Commit File或Git——Commit Directory,當然也可以直接Git——Repositroy——PUSH

如果是點擊的Git——Commit File或Git——Commit Directory,界面如下所示

上方的文件夾框內可以勾選需要commit的文件,下面的文本框中可以填寫Commit Message,根據自己的需求進行相應的選擇和填寫,完成后在最下方的點擊Commit即可,在Commit之后記得使用push將本地倉庫中的文件上傳,當然也可將鼠標移至最下方Commit右側的小三角,選擇Commit and Push

點擊后即可在遠程倉庫中看到自己上傳的代碼

適用於已有的項目

對於已有的非git項目,我們依舊需要先在 git@osc 上新建一個項目,得到一個項目鏈接

然后在Intellij IDEA工具欄中選擇VCS——Import into Version Control——Create Git Repository,

然后依舊可以像上面的新建項目方法中那樣對本地項目進行add Commit等操作,但在push之前還是需要進入項目文件夾,在git bush中使用

git remote add origin http://git.oschina.net/你的用戶名/你的項目名.git

這是因為之前雖然通過VCS——Import into Version Control——Create Git Repository將項目變成了git項目,但並沒有將本地倉庫與遠程倉庫進行連接對應。

剩下的操作便和前面的一樣了,不過一般來說在建立連接之后還需要使用git remote pull將遠程倉庫中的文件同步下來。

最后,在IDEA使用git的過程中,可以看到,在不同的狀態下,左側project文件欄中的文件名稱會顯示不同的顏色,對應可知,新建一個沒有add以及Commit的文件會顯示紅色文件名,add Commit后的文件名是綠色,當文件完成push到遠程倉庫后,顯示的是藍色文件名

參考資料


免責聲明!

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



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