如圖所示:
有多是由於遠程倉庫的版本與本地倉庫的版本不一致,因此應先git pull
將遠程倉庫的內容合併到本地,
而後再git push origin master
將本地的更新推到遠程倉庫中。html
有的時候在pull時會產生衝突,如圖所示,裏面提示在合併HelloWorld.java的時候,產生衝突
java
這時候打開你的HelloWorld.java時,會發現以下內容:git
public class HelloWorld{ public static void main(String[] args){ <<<<<<< HEAD x ======= System.out. >>>>>>> c22d2987adc785ea55fc4fc39709765c6baeb037 } }
在<<<<<<< HEAD
與=======
之間的內容,表明你本地倉庫中文件的內容。
在=======
與>>>>>>> c22d2987adc785ea55fc4fc39709765c6baeb037
之間的內容表明遠程倉庫中的內容
咱們根據須要進行保留,如刪掉x及表示衝突的那些註釋。而後從新add, commit,最後再push就能夠成功。github
git reset HEAD *
,將全部在暫存區的中的修改放回工做區(即把add過但還未commit的改動放回工做區)eclipse
好比你不當心刪除了某個文件(如刪除了Test.java)、修改了某些文件,可是還未add。
使用git checkout -- .
,可將你所作的全部工做都被撤銷(更改工做區中的文件)。這條操做有點危險,慎用。
若是隻想恢復某個文件,如Test.java,可使用git checkout -- Test.java
,推薦使用這個操做指定文件恢復。
若是想恢復全部對java文件的操做,可使用git checkout -- *.java
注意:在Eclipse中若是刪除某文件,未add,而後使用git checkout,這時候在Eclipse中須要F5刷新才能看到
恢復的文件。學習
若是所作的改動已經提交到庫裏,這時候使用git checkout
就無能爲力。
使用git reset --hard "HEAD^"
,注意:這條命令會把全部的上次提交前的修改重置,比較危險。ui
撤銷概念的理解詳見.net
6.Git基本概念插件
中的示意圖命令行
從上面咱們能夠看到,爲了讓倉庫能夠管理咱們的代碼,咱們首先須要讓git跟蹤(track)咱們的代碼。
當咱們新建一個文件的時候,該文件在工做區,處於untracked狀態,咱們須要經過git add
將其放入
暫存區,這時候git就能夠跟蹤該文件。進一步使用git commit
,就可將該文件放入倉庫。放入倉庫
其實是對你暫存區中的文件等進行一個快照。一旦文件放入倉庫,就可對其進行版本管理。換句話說
這時候你的放入倉庫的相關文件不再會丟失啦。
簡單的示意圖以下。
該圖不徹底正確。好比,git reset --hard "HEAD^"
會讓工做區、暫存區的任何改變都丟失。
而若是使用--soft
參數,暫存區、工做區的內容不會變化,只是返回上一個commit,相似圖中的由本地
倉庫回到暫存區。而使用--mix
參數,工做區內容不會變化,但不會放入暫存區,相似圖中由本地倉庫
回到工做區。
在Eclipse下還可使用圖形界面的EGit插件(見,使用Eclipse Egit與碼雲管理你的代碼)。
雖然圖形界面上手更簡單,但仍是建議在命令行下進行操做。
注意:不要勾選使用Readme文件初始化這個項目
。
git config --global user.name "YourName"
git config --global user.email "YourEmailAtOSC"
好比建立了GitLearn項目, 在GitLearn項目下建立README.md
cd GitLearn git init git add -A git commit -m "first commit" git remote add origin https://git.oschina.net/zhrb/GitLearn.git git push -u origin master
注意:有的時候執行git push或者git pull的時候會顯示fatal: refusing to merge unrelated histories
,
緣由是想要合併兩個不一樣的項目(遠程初始化創建倉庫和本機另外創建的倉庫)。
這時候執行git pull origin master --allow-unrelated-histories
強制合併,而後再執行git push origin master
。
具體參考資料git沒法pull倉庫refusing to merge unrelated histories
在項目目錄下,新建.gitignore文件,對於Eclipse項目,參見範例
內容以下:
*.class # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.ear # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid*
而後git add .gitignore
,git commit -am "add gitignore"
,git push
之後git就會忽略上述文件和目錄,具體資料詳見
如不用命令行也可直接使用Eclipse上的Git插件EGIT,見下面參考資料:
使用Eclipse Egit與碼雲管理你的代碼
Eclipse中egit插件使用--升級版
利用eclipse的git插件EGit與git@osc交互
對命令行不熟悉可使用Git GUI,Git可視化極簡易教程 — Git GUI使用方法
廖雪峯GIT教程-一步一步使用命令行學習Git
Git使用全面教程-成體系,講的很是清楚
Eclipse上GIT插件EGIT使用
- GitHub 第一坑:換行符自動轉換,CRLF、LF
- fatal: could not read Username for 'https://git.oschina.net': Invalid argument,建議使用文章裏面介紹的修改
.git/config
文件的方法。- Git for Windows亂碼問題:到官網下載最新版本。或者建議所有使用英文,完全杜絕亂碼煩惱。