Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)
4. 处理冲突
4.1 向远程仓库push时无法提交成功,提示在push前应该先pull
如图所示:
有可能是因为远程仓库的版本与本地仓库的版本不一致,所以应先git pull
将远程仓库的内容合并到本地,
然后再git push origin master
将本地的更新推到远程仓库中。
4.2 如何处理冲突:
有的时候在pull时会产生冲突,如图所示,里面提示在合并HelloWorld.java的时候,产生冲突
这时候打开你的HelloWorld.java时,会发现如下内容:
public class HelloWorld{
public static void main(String[] args){
<<<<<<< HEAD
x
=======
System.out.
>>>>>>> c22d2987adc785ea55fc4fc39709765c6baeb037
}
}
在<<<<<<< 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
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
7.4 添加.gitignore文件
在项目目录下,新建.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交互
8.更多参考资料
对命令行不熟悉可以使用Git GUI,Git可视化极简易教程 — Git GUI使用方法
廖雪峰GIT教程-一步一步使用命令行学习Git
Git使用全面教程-成体系,讲的非常清楚
Eclipse上GIT插件EGIT使用
9. 使用的Git的一些坑
- GitHub 第一坑:换行符自动转换,CRLF、LF
- fatal: could not read Username for 'https://git.oschina.net': Invalid argument,建议使用文章里面介绍的修改
.git/config
文件的方法。- Git for Windows乱码问题:到官网下载最新版本。或者建议全部使用英文,彻底杜绝乱码烦恼。
Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)的更多相关文章
- Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)
0.几个基本概念 本地仓库:本机上某个存放代码的仓库. 远程仓库:码云服务器上的代码仓库. 重要提醒:当我们在本地操作(新增.删除.修改)文件.目录时,并将其提交(commit),就是提交到了本地仓库 ...
- 如何使用Git和码云Git@OSC
1.Git简介 关于Git是什么,阅读博客Git简介 2.Git 基础 Git命令很多,常用命令如下图 Workspace:工作区 Index/Stage :暂存区 Local Repository: ...
- GitHub Desktop+码云(GIT.oschina)使用方法
一.如何从码云GIT导入到GitHubDeskTop桌面工具. 1.先用命令行切换到本地的目录. 2.使用git clone 码云GIT地址 命令将项目克隆到本地. 3.在GitHub Desktop ...
- git和码云的使用
什么是码云 快速入门 Git入门 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进 ...
- 我的一个git(码云)之旅
合作开发项目,你就会用到git,现在码云比较简单,因为是中文化界面,学习起来难度比较低,又支持5人以下项目免费,所以学习码云更好入手一点. 下面的东西适合一些个基础比较低的用户学习,因为我就是啊... ...
- 【项目管理】git和码云的使用
缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给大伙说说如何通过git和码云搭建属于自己的代码库. 码云 码云(Git@OSC)是开源中国社区团队推出的 ...
- 【项目管理】git和码云的使用【转】
转自:https://www.cnblogs.com/riverdubu/p/6491944.html 缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给 ...
- Git从码云Clone代码到本地
Git从码云或者Github 克隆代码到本地 1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Her ...
- Git(使用码云)
使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的). 如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(gitee.com) ...
随机推荐
- python——序列 & 集合 & 映射
列表 & 元组 & 字典 & 集合 序列 序列: 每个元素可以是任何类型(也可以是序列),每个元素被分配一个序号(从0开始)(序号,也叫索引,表示元素的位置) Python中的 ...
- 用R进行文本分析初探——以《红楼梦》为例
一.写在前面的话~ 刚吃饭的时候同学问我,你为什么要用R做文本分析,你不是应该用R建模么,在我和她解释了一会儿后,她嘱咐我好好写这篇博文,嗯为了娟儿同学,细细说一会儿文本分析. 文本数据挖掘(Text ...
- 【LeetCode】数组-3(605)-种花问题( 1 的两侧不能有 1 )
开始的思路:首先统计需要种几只花,用花的数目统计连续 0 的个数.... ...[囧]突然觉得情况有点复杂啊,有连续的又有分散的怎么能统计全呢? 好吧这里喔偷偷的瞄了一眼参看答案... ...(就一眼 ...
- python--------------常用模块之正则
一.认识模块 什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件 ...
- Java静态绑定与动态绑定
程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定. 静态绑定: 在程序执行前方法已经被绑定(也就是说 ...
- 第8天:CSS制作导航栏
今天主要学习了网页导航栏的制作.注意:引入外部CSS样式时,如果使用background:url(../images/1.png),一定记得用..跳出当前文件夹,回到上级目录. 一.导航栏实现步骤: ...
- 多重外键关系在java中的处理方案
// 0){ var ul = li.getElementsByTagName("ul")[0]; ul.style.display = "none"; var ...
- 【Spring】整合SpringMVC、MyBatis
在使用xml配置方式的最佳整合方式: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...
- Maven详解(六)------ 生命周期
1.什么是 生命周期? Maven 强大的原因是有一个十分完善的生命周期,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令. ...
- python版mapreduce题目实现寻找共同好友
看到一篇不知道是好好玩还是好玩玩童鞋的博客,发现一道好玩的mapreduce题目,地址http://www.cnblogs.com/songhaowan/p/7239578.html 如图 由于自己太 ...