zoukankan      html  css  js  c++  java
  • 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 添加.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乱码问题:到官网下载最新版本。或者建议全部使用英文,彻底杜绝乱码烦恼。
  • 相关阅读:
    java设计模式-代理模式
    java设计模式-适配器模式
    java设计模式-策略模式
    java设计模式-建造者模式
    HTML table 边框双线变单线
    flutter flutter_cupertino_date_picker 时间插件的用法
    flutter TextField 输入框被软键盘挡住的解决方案
    vue 多层组件相互嵌套的时候 数据源更新 dom没更新 彻底清除组件缓存
    elementUI 上传文件图片大小加了限制后 仍然上传了
    elementUI el-date-picker 时间范围设置 固定时间段可选 配置
  • 原文地址:https://www.cnblogs.com/zhrb/p/6286647.html
Copyright © 2011-2022 走看看