如图所示:
有多是由于远程仓库的版本与本地仓库的版本不一致,因此应先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乱码问题:到官网下载最新版本。或者建议所有使用英文,完全杜绝乱码烦恼。