4. 处理冲突

4.1 向远程仓库push时无法提交成功,提示在push前应该先pull

如图所示:



有可能是因为远程仓库的版本与本地仓库的版本不一致,所以应先git pull将远程仓库的内容合并到本地,

然后再git push origin master将本地的更新推到远程仓库中。

4.2 如何处理冲突:

有的时候在pull时会产生冲突,如图所示,里面提示在合并HelloWorld.java的时候,产生冲突

这时候打开你的HelloWorld.java时,会发现如下内容:

  1. public class HelloWorld{
  2. public static void main(String[] args){
  3. <<<<<<< HEAD
  4. x
  5. =======
  6. System.out.
  7. >>>>>>> c22d2987adc785ea55fc4fc39709765c6baeb037
  8. }
  9. }

<<<<<<< HEAD=======之间的内容,代表你本地仓库中文件的内容。

=======>>>>>>> c22d2987adc785ea55fc4fc39709765c6baeb037之间的内容代表远程仓库中的内容

我们根据需要进行保留,如删掉x及表示冲突的那些注释。然后重新add, commit,最后再push就可以成功。

5.撤销修改

5.1 撤销已经add但未commit(提交)的修改(git checkout --):

git reset HEAD *,将所有在暂存区的中的修改放回工作区(即把add过但还未commit的改动放回工作区)

5.2 某个文件已经修改或者被删除,但还未add。如何撤销?

比如你不小心删除了某个文件(如删除了Test.java)、修改了某些文件,但是还未add。

使用git checkout -- .,可将你所做的所有工作都被撤销(更改工作区中的文件)。这条操作有点危险,慎用。

如果只想恢复某个文件,如Test.java,可以使用git checkout -- Test.java,推荐使用这个操作指定文件恢复。

如果想恢复所有对java文件的操作,可以使用git checkout -- *.java

注意:在Eclipse中如果删除某文件,未add,然后使用git checkout,这时候在Eclipse中需要F5刷新才能看到

恢复的文件。

5.3 撤销已经提交到仓库里的修改(git reset):

如果所做的改动已经提交到库里,这时候使用git checkout就无能为力。

使用git reset --hard "HEAD^",注意:这条命令会把所有的上次提交前的修改重置,比较危险。

撤销概念的理解详见

6.Git基本概念

中的示意图

6.Git基本概念

从上面我们可以看到,为了让仓库可以管理我们的代码,我们首先需要让git跟踪(track)我们的代码。

当我们新建一个文件的时候,该文件在工作区,处于untracked状态,我们需要通过git add将其放入

暂存区,这时候git就可以跟踪该文件。进一步使用git commit,就可将该文件放入仓库。放入仓库

实际上是对你暂存区中的文件等进行一个快照。一旦文件放入仓库,就可对其进行版本管理。换句话说

这时候你的放入仓库的相关文件再也不会丢失啦。

简单的示意图如下。

该图不完全正确。比如,git reset --hard "HEAD^"会让工作区、暂存区的任何改变都丢失。

而如果使用--soft参数,暂存区、工作区的内容不会变化,只是返回上一个commit,类似图中的由本地

仓库回到暂存区。而使用--mix参数,工作区内容不会变化,但不会放入暂存区,类似图中由本地仓库

回到工作区。

7. 使用Git管理你的Eclipse项目(命令行下)

在Eclipse下还可以使用图形界面的EGit插件(见,使用Eclipse Egit与码云管理你的代码)。

虽然图形界面上手更简单,但还是建议在命令行下进行操作。

7.1 在码云上创建项目

注意:不要勾选使用Readme文件初始化这个项目

7.2 Git全局配置:

git config --global user.name "YourName"

git config --global user.email "YourEmailAtOSC"

7.3 在Eclipse中创建项目,并使用Git管理

比如创建了GitLearn项目, 在GitLearn项目下创建README.md

  1. cd GitLearn
  2. git init
  3. git add -A
  4. git commit -m "first commit"
  5. git remote add origin https://git.oschina.net/zhrb/GitLearn.git
  6. 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

7.4 添加.gitignore文件

在项目目录下,新建.gitignore文件,对于Eclipse项目,参见范例

内容如下:

  1. *.class
  2. # BlueJ files
  3. *.ctxt
  4. # Mobile Tools for Java (J2ME)
  5. .mtj.tmp/
  6. # Package Files #
  7. *.jar
  8. *.war
  9. *.ear
  10. # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
  11. hs_err_pid*

然后git add .gitignore,git commit -am "add gitignore",git push

以后git就会忽略上述文件和目录,具体资料详见

Eclipse 添加.gitignore

其他资料:

如不用命令行也可直接使用Eclipse上的Git插件EGIT,见下面参考资料:

使用Eclipse Egit与码云管理你的代码

Eclipse中egit插件使用--升级版

利用eclipse的git插件EGit与git@osc交互

8.更多参考资料

对命令行不熟悉可以使用Git GUI,Git可视化极简易教程 — Git GUI使用方法

廖雪峰GIT教程-一步一步使用命令行学习Git

Git使用全面教程-成体系,讲的非常清楚

Eclipse上GIT插件EGIT使用

9. 使用的Git的一些坑

  1. GitHub 第一坑:换行符自动转换,CRLF、LF
  2. fatal: could not read Username for 'https://git.oschina.net': Invalid argument,建议使用文章里面介绍的修改.git/config文件的方法。
  3. Git for Windows乱码问题:到官网下载最新版本。或者建议全部使用英文,彻底杜绝乱码烦恼。

Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)的更多相关文章

  1. Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)

    0.几个基本概念 本地仓库:本机上某个存放代码的仓库. 远程仓库:码云服务器上的代码仓库. 重要提醒:当我们在本地操作(新增.删除.修改)文件.目录时,并将其提交(commit),就是提交到了本地仓库 ...

  2. 如何使用Git和码云Git@OSC

    1.Git简介 关于Git是什么,阅读博客Git简介 2.Git 基础 Git命令很多,常用命令如下图 Workspace:工作区 Index/Stage :暂存区 Local Repository: ...

  3. GitHub Desktop+码云(GIT.oschina)使用方法

    一.如何从码云GIT导入到GitHubDeskTop桌面工具. 1.先用命令行切换到本地的目录. 2.使用git clone 码云GIT地址 命令将项目克隆到本地. 3.在GitHub Desktop ...

  4. git和码云的使用

    什么是码云 快速入门 Git入门 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进 ...

  5. 我的一个git(码云)之旅

    合作开发项目,你就会用到git,现在码云比较简单,因为是中文化界面,学习起来难度比较低,又支持5人以下项目免费,所以学习码云更好入手一点. 下面的东西适合一些个基础比较低的用户学习,因为我就是啊... ...

  6. 【项目管理】git和码云的使用

    缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给大伙说说如何通过git和码云搭建属于自己的代码库. 码云 码云(Git@OSC)是开源中国社区团队推出的 ...

  7. 【项目管理】git和码云的使用【转】

    转自:https://www.cnblogs.com/riverdubu/p/6491944.html 缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给 ...

  8. Git从码云Clone代码到本地

    Git从码云或者Github 克隆代码到本地 1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Her ...

  9. Git(使用码云)

    使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的). 如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(gitee.com) ...

随机推荐

  1. WebSphere服务器已启动但是初始化失败问题

    --WebSphere服务器已启动但是初始化失败问题 -----------------------------------------------2014/03/06 经常有开发同事反映,环境用着用 ...

  2. VBS脚本插入excel图片

    --VBS脚本插入excel图片 -------------------------2013/11/23 根据第一列的值,需找对应的图片,然后插入的指定的列中,图片根据列的长宽信息决定图片大小. 代码 ...

  3. Adaboost、RandomFrest、GBRT的区别

    Adaboost.RandomFrest.GBRT都是基于决策树的组合算法 Adaboost是通过迭代地学习每一个基分类器,每次迭代中,把上一次错分类的数据权值增大,正确分类的数据权值减小,然后将基分 ...

  4. 无插件VIM编程技巧(网摘)

    无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...

  5. 设计模式之Adapter模式

    说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...

  6. Shell Script编程——USB挂载/复制文件/查找文件/压缩文件

    PS:$引用变量的时候不要加空格.用了case,while的结构. main文件 #!/bin/bash chmod a+x changedate chmod a+x changemod chmod ...

  7. Python 第五天

    函数式编程 高阶函数 1.变量可指向函数 func = abs print(func(-1)) #1 2.函数可以作为参数传入另外的函数这也就是高阶函数 def add(x,y,func): prin ...

  8. SQL 四种连接查询(内连接、左连接、右连接、全连接)

    下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. (1)     JOIN: 如果表中有至少一个匹配,则返回行(inner join) (2)     LEFT JOIN: 即使右表中没有 ...

  9. IOS中的属性列表----Property List

    属性列表,是一种用来存储串行化后的对象的文件.因为扩展名为plist ,因此通常被称为 plist文件. plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,其内容为xml格式.它可以在程序 ...

  10. Tab选框

    <html>代码 基本架构:一个大的div下面2个ul,ul下面各三个li <div class="big"> <ul class="con ...