这里面记录一下git的使用,只是平时工作中遇到的一些问题的解决方案,不会涉及到git的一些基础概念及说明。人的天性便是这般凉薄,只要拿更好的来换,一定舍得。

Git的一些使用

一、在码云建立好仓库之后,想把本地已经写好的代码推送上去。

首先git init我们的项目:

huhx@Linux MINGW64 /g/Java/Go/program/2017-05-18/LearnPython1
$ git init
Initialized empty Git repository in G:/Java/Go/program/2017-05-18/LearnPython1/.git/

添加项目到本地的仓库:

huhx@Linux MINGW64 /g/Java/Go/program/--/LearnPython1 (master)
$ git add .

提交代码到本地仓库:

huhx@Linux MINGW64 /g/Java/Go/program/--/LearnPython1 (master)
$ git commit -m 'commit python code'
[master (root-commit) ] commit python code
files changed, insertions(+)
create mode .idea/misc.xml
create mode .idea/modules.xml
create mode .idea/workspace.xml
create mode LearnPython1.iml
create mode datagram/connMysql.py
create mode datagram/funUtils.py
create mode datagram/huhx.py
create mode file/bookdata.csv
create mode file/huhx.png
create mode file/huhx1.txt
create mode file/huhx2.txt
create mode file/log.txt
create mode file/log1.txt
create mode file/seach_button.png
......

与服务器的分支建立联系:

huhx@Linux MINGW64 /g/Java/Go/program/--/LearnPython1 (master)
$ git remote add origin https://gitee.com/huhx/pythonLearn.git

推送代码到远程仓库:

huhx@Linux MINGW64 /g/Java/Go/program/--/LearnPython1 (master)
$ git push -f origin master
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), 127.37 KiB | 1.46 MiB/s, done.
Total (delta ), reused (delta )
To https://gitee.com/huhx/pythonLearn.git
+ 45c1fff... master -> master (forced update)

注意上述的推送需要加-f参数,如果没有添加的话。会有如下的错误提示

huhx@Linux MINGW64 /g/Java/Go/program/--/LearnPython1 (master)
$ git push origin master
To https://gitee.com/huhx/pythonLearn.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/huhx/pythonLearn.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

二、建立分支的一些基础操作,更新或者提交代码

整个的一个流程,可以如下的方式:

创建开发分支:
  git checkout huhx-dev
添加到git管理:
  git add .
提交到huhx-dev本地仓库:
  git commit -m 'code'
切换到master分支:
  git checkout master
从远程仓库更新代码:
  git pull
合并huhx-dev分支:
  git merge huhx-dev
提交到本地的mater仓库:
  git commit -m 'master commit'
将本地的master代码提交到远程:
  git push origin master

关于分支创建、查看可以参考博客:http://blog.csdn.net/arkblue/article/details/9568249

三、git撤销的操作

我们需要撤销上次提交的commit,注意这里还没有执行push的操作。举个例子来加以说明这个撤销的过程。比如我们我们修改提交了文件redis.txt文件。

$ git add code/imp-root/imp-db/impserver_db/redis.txt

此时如果我们要撤销git add的操作,可以输入以下的命令:

$ git rm --cached  code/imp-root/imp-db/impserver_db/redis.txt
rm 'code/imp-root/imp-db/impserver_db/redis.txt'

我们接着去提交redis.txt,先git add再git commit操作。命令如下:

$ git add code/imp-root/imp-db/impserver_db/redis.txt
$ git commit -m 'test commit'
[master 49e3162f] test commit
file changed, insertions(+), deletion(-)

现在我们开始commit的撤销操作,这个操作分为三种类型。git reset –-mixed、git reset –-soft和git reset –-hard。

  • git reset –-mixed:此为默认方式,不带任何参数的git reset,它回退到某个版本,保留修改后的文件源码,回退commit和index信息。也就是如果再提交,需要经过git add和git commit操作。
  • git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。保留修改后的文件源码,如果还要提交,直接git commit即可。
  • git reset –-hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。

我们对git reset –mixed这种方式做一个测试,也就是默认的git reset commitid。首先我们需要通过git log得到最后的commit id。如下

$ git log
commit 49e3162fb3cf244f809d9b38bc1ed9c5e651ea49 (HEAD -> master)
Author: huhongxiang <huhongxiang@csii.com.cn>
Date: Wed Dec :: + test commit commit ce477925b378e8d3ec451caafb0b72c811dc697b (origin/master)
Author: huhongxiang <huhongxiang@csii.com.cn>
Date: Wed Dec :: + 卡券赠送

我们要回退到上一个版本,也就是commitId=ce477925b378e8d3ec451caafb0b72c811dc697b。所以执行撤销的命令如下:

$ git reset ce477925b378e8d3ec451caafb0b72c811dc697b
Unstaged changes after reset:
M code/imp-root/imp-db/impserver_db/redis.txt

再通过git status,可以看到redis.txt也回退了index的信息。

$ git status
On branch master
Your branch is up to date with 'origin/master'. Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: code/imp-root/imp-db/impserver_db/redis.txt

此时执行git log,可以看到如下的输出。可以知道已经看不到redis.txt的commit提交记录了。

$ git log
commit ce477925b378e8d3ec451caafb0b72c811dc697b (HEAD -> master, origin/master)
Author: huhongxiang <huhongxiang@csii.com.cn>
Date: Wed Dec :: + 卡券赠送

如果我们需要撤销git push到远程分支的操作,后续补充。

友情链接

java基础---->git的使用(一)的更多相关文章

  1. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  2. 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...

  3. 【学习总结】【Java】Git学习-上传本地已有代码到GitHub

    < Git学成归来后的第一次实战 > 上传本地已有代码到GitHub 以之前学了一小半的Java基础教程代码为例 <深坑预警:在GitHub新建仓库那一步,不要勾选readme,不然 ...

  4. 第一天---关于环境和java基础

    一.版本管理 git svn 二.Intellj idea快捷键 三.java基础知识

  5. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  6. Java基础学习总结(70)——开发Java项目常用的工具汇总

    要想全面了解java开发工具,我们首先需要先了解一下java程序的开发过程,通过这个过程我们能够了解到java开发都需要用到那些工具. 首先我们先了解完整项目开发过程,如图所示: 从上图中我们能看到一 ...

  7. Java后端工程师必备书单(从Java基础到分布式)

    Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要 ...

  8. 【原创】这道Java基础题真的有坑!我也没想到还有续集。

    前情回顾 自从我上次发了<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章后.我通过这样的一个行文结构: 解析了小马哥出的这道题,让大家明白了这题的坑在哪里,这题背后隐藏 ...

  9. 【Java基础】- Java学习路线图

    Java的学习路线图,整理以备自己学习和温习. 1.Java基础 具体内容: 1. 编程基础(开发环境配置.基础语法.基本数据类型.流程控制.常用工具类) 2. 面向对象(继承.封装.多态.抽象类.接 ...

随机推荐

  1. JAVA组成原理及使用方法编辑环境及实现过程

    JAVA组成原理一.由四方面组成:1.Java编程语言2.Java类文件格式3.Java虚拟机4.Java应用程序接口 当编辑并运行一个Java程序时,需要同时涉及到这四种方面.二.使用文字编辑软件: ...

  2. CI框架 -- URI 路由

    一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则:example.com/class/function/id/ 但是有时候,你可能想改 ...

  3. ubuntu -- 不输入密码执行sudo

    作为ubuntu等桌面系统,默认登录的帐号是没有root权限的,为了提升权限来执行任务,我们一般用到 "sudo+命令" 来执行,但是不难发现我们 一般都要输入密码.那么有没有什么 ...

  4. VMware Workstation与VM ware Esxi使用OVF文件交互

    实验环境: VMware Workstation  12 Pro 版本 VMware Esxi  6.0.0  版本 VMware Workstation安装一个Linux系统,把VMware Wor ...

  5. 各种linux小操作

    1.查看路由表 命令:route -n ; netstat -r 跟踪网络地址:traceroute www.16 3.com 2.查看一台机器IP地址和与其对应的域名 命令:nslookup; di ...

  6. C# 窗口自适应窗口宽度和高度

    其实winform并不适合做自适应这玩意的,虽然,能做是能做, 就像菜刀一样能切水果,但是,不是那么合适,毕竟有水果刀 wpf做自适应拉伸窗体,会更好一些. 代码: #region 自适应 priva ...

  7. python pip 更换国内安装源(windows)

    1.点击此电脑,在最上面的的文件夹窗口输入 : %APPDATA% 2.按回车跳转到以下目录,新建pip文件夹 3.创建pip.ini文件 4.打开文件夹,输入以下内容,关闭即可(注意:源镜像可替换) ...

  8. 【转】ZooKeeper学习第二期--Zookeeper命令操作

    一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...

  9. mysql 直接拷贝data 目录下文件用不的解决方案

    innodb 的表,直接复制文件是无法使用的,会提示 table doesn’t exists ,在复制的时候,应将data目录下的 ibdata1 文件一并复制过去,并且删除 ib_logfile0 ...

  10. python怎么写可读性好的面向过程的长篇代码?

    最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...