简介

 上篇讲解git的博客,在centos6.5中安装完成了github客户端,接下来我们来熟悉git的操作命令

1、查看自己机器中安装的git版本

[root@jacky conf]# git --version
git version 2.0.

2、进入到当前用户的home目录下,新建一个项目git_project,新建1.java和2.java文件

[root@jacky conf]# cd /home
[root@jacky home]# ls
jacky
[root@jacky home]# ls -l
总用量
drwx------. jacky jacky 12月 : jacky
[root@jacky home]# mkdir git_project
[root@jacky home]# cd git_project/
[root@jacky git_project]# touch .java .java
[root@jacky git_project]# ls -l
总用量
-rw-r--r--. root root 12月 : .java
-rw-r--r--. root root 12月 : .java

3、把git_project项目初始化为git项目,初始化完成后,会在git_project中生成隐藏的.git目录

[root@jacky git_project]# git init
初始化空的 Git 版本库于 /home/git_project/.git/
[root@jacky git_project]# ls -l
总用量
-rw-r--r--. root root 12月 : .java
-rw-r--r--. root root 12月 : .java
[root@jacky git_project]# ls -la
总用量
drwxr-xr-x. root root 12月 : .
drwxr-xr-x. root root 12月 : ..
-rw-r--r--. root root 12月 : .java
-rw-r--r--. root root 12月 : .java
drwxr-xr-x. root root 12月 : .git

4、修改1.java和2.java文件,并把文件添加到缓冲区,查看缓冲区

[root@jacky git_project]# vim .java
[root@jacky git_project]# vim .java
[root@jacky git_project]# git add .java
[root@jacky git_project]# git add .java
[root@jacky git_project]# git status
位于分支 master 初始提交 要提交的变更:
(使用 "git rm --cached <file>..." 撤出暂存区) 新文件: .java
新文件: .java

5、把缓冲区的文件提交到本地仓库,并再次查看缓冲区情况

[root@jacky git_project]# git commit
[master(根提交) 8fa9085] 注释:第一次提交
Committer: root <root@jacky.domain>
您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确
与否。您可以通过下面的命令对其进行明确地设置以免再出现本提示信息: git config --global user.name "Your Name"
git config --global user.email you@example.com 设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份: git commit --amend --reset-author files changed, insertions(+)
create mode .java
create mode .java
[root@jacky git_project]# git status
位于分支 master
无文件要提交,干净的工作区

6、还可以一次性把修改文件提交到本地仓库

[root@jacky git_project]# vi .java
[root@jacky git_project]# git commit -am "注释:第二次提交"

7、在同时修改1.java和2.java文件的情况下,如果我只想提交2.java文件到本地仓库,不提交1.java文件到本地仓库

[root@jacky git_project]# vim .java
[root@jacky git_project]# vim .java
[root@jacky git_project]# git add .
[root@jacky git_project]# git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 修改: .java
修改: .java [root@jacky git_project]# git reset HEAD .java #把1.java清除出缓冲区的命令
重置后撤出暂存区的变更:
M .java
[root@jacky git_project]# git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 修改: .java 尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 修改: .java [root@jacky git_project]# git commit -am ""

[root@jacky git_project]# git status
  位于分支 master
  无文件要提交,干净的工作区

 

8、查看当前分区和创建一个jacky分区(*号所在的位置表示当前分区)

[root@jacky git_project]# git branch
* master
[root@jacky git_project]# git branch jacky

[root@jacky git_project]# git branch
  jacky
  * master

 

9、切换到jacky分区,在jacky分区修改2.java文件,并提交到本地仓库

[root@jacky git_project]# git checkout jacky
切换到分支 'jacky'
[root@jacky git_project]# git branch
* jacky
master
[root@jacky git_project]# ls
.java .java
[root@jacky git_project]# git branch
* jacky
master
[root@jacky git_project]# vim .java
[root@jacky git_project]# git add .java
[root@jacky git_project]# git commit -am ""

10、再把master切换为当前分区,查看2.java,可以看出2.java文件并没有修改(f分支之间文件互相不受影响)

git checkout master
切换到分支 'master'
[root@jacky git_project]# ls
.java .java
[root@jacky git_project]# cat .java
master
master
master

11、在当前分区为master分区的情况下,合并jacky分支,可以看到分支合并成功,并没有冲突

[root@jacky git_project]# git merge jacky
更新 7c6490c..7de7a8d
Fast-forward
.java | +
file changed, insertion(+)
[root@jacky git_project]# cat .java
master
master
master
branch jacky1

12、故意在master分支和jacky分支上修改2.java文件的同一行,这样合并分支的时候就会出现冲突

[root@jacky git_project]# git branch
jacky
* master
[root@jacky git_project]# vim .java
[root@jacky git_project]# git add .
[root@jacky git_project]# git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 修改: .java [root@jacky git_project]# git commit -am '' [root@jacky git_project]# git checkout jacky
切换到分支 'jacky'
[root@jacky git_project]# cat .java
master
master
master
branch jacky1
[root@jacky git_project]# vim .java
[root@jacky git_project]# git commit -am ''
[jacky 47373c8]
file changed, insertion(+)
[root@jacky git_project]# git branch
* jacky
master
[root@jacky git_project]# git checkout master
切换到分支 'master'
[root@jacky git_project]# git merge jacky
自动合并 .java
冲突(内容):合并冲突于 .java
自动合并失败,修正冲突然后提交修正的结果。
[root@jacky git_project]# cat .java
master
master
master
branch jacky1
<<<<<<< HEAD
master jacky222 #这是maseter分支的内容
=======
branch jacky222222222 #这是jacky分支的内容
>>>>>>> jacky

13、冲突解决,跟svn一样,手动修改冲突的内容,再次提交

[root@jacky git_project]# vim .java
[root@jacky git_project]# git commit -am '解决冲突'
[master c1f3cea] 解决冲突 [root@jacky git_project]# git status

  位于分支 master
  无文件要提交,干净的工作区

 

14、git 还可以给某次提交到本地仓库的操作做标记(注意默认标记的是工程上一次提交到本地库操作的位置)

[root@jacky git_project]# git tag -a v1.0      
[root@jacky git_project]# git log --oneline --decorate
c1f3cea (HEAD, tag: v1.0, master) 解决冲突           #这个地方就是我标记的位置
47373c8 (jacky) 5
8c12ca3 2
7de7a8d 2
7c6490c 2
b4fbae6 2
f53f281 注释:第二次提交
8fa9085 注释:第一次提交

15、查看提交到本地仓库的日志

[root@jacky git_project]# git log
commit c1f3ceaaeb622f1b525114d0e6dc28cf974a2321
Merge: 8c12ca3 47373c8
Author: jacky <@qq.com>
Date: Sat Dec :: + 解决冲突 commit 47373c84b8e2b09f882c79b3115a84ed54b89a8a
Author: jacky <@qq.com>
Date: Sat Dec :: + commit 8c12ca3887de310d5b4368e9953d7a95ffd166ae
Author: jacky <@qq.com>
Date: Sat Dec :: +

16、标记到指定位置也行,如下

[root@jacky git_project]# git tag -a v1. f53f281
[root@jacky git_project]# git log --oneline --decorate
c1f3cea (HEAD, tag: v1., master) 解决冲突
47373c8 (jacky)
8c12ca3
7de7a8d
7c6490c
b4fbae6
f53f281 (tag: v1.) 注释:第二次提交 #指定标记到这个位置
8fa9085 注释:第一次提交

17、在合并分支时重现冲突问题,我们也可以像svn一样,进行回滚

[root@jacky git_project]# git reset --hard f53f281  #回滚到f53f281的位置
HEAD 现在位于 f53f281 注释:第二次提交
[root@jacky git_project]# ls -;
ls: 无法访问-: 没有那个文件或目录
[root@jacky git_project]# ls
.java .java
[root@jacky git_project]# cat .java
master
master

到这里就讲解完git的基本命令了,下篇博客讲,怎么把本地仓库的工程,提交到github和如何从github同步工程到本地

git的常用命令的更多相关文章

  1. GIT 版本控制常用命令学习汇总

    GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...

  2. git log 常用命令及技巧

    git log常用命令以及技巧 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者.提交日期.和提交说明.如果记录过多,则按Page Up.Pag ...

  3. Git基本常用命令

    Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件. git ...

  4. Git是什么、Git的功能、为什么versioncontrol用Git、Git的常用命令、Git的优缺点

    Git是什么 git是目前世界上最先进的分布式版本控制系统(没有之一). Git是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版 ...

  5. Git stash 常用命令

    参考: Git: How to look at the stash Git学习笔记05--git stash Git stash 常用命令 1.git stash: 保存当前的工作进度: 2.git ...

  6. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  7. git之常用命令

    git之常用命令 1.下载远程仓库最新代码 $ git pull --rebase origin master 2.上传代码 $ git push origin master 3.退出编辑 ESC + ...

  8. git的常用命令。。

    git的常用命令.. git help <command>  显示command的help git show  显示某次提交的内容 git show $id git co -- <f ...

  9. Git - Git基本常用命令

    Git基本常用命令 mkdir:         XX (创建一个空目录 XX指目录名) pwd:          显示当前目录的路径. git init          把当前的目录变成可以管理 ...

  10. Git的常用命令记录

    Git的常用命令记录 1.与远程仓库建立连接,即关联一个远程库 git remote add origin git@server-name:path/repo-name.git; 2.查看当前分支  ...

随机推荐

  1. Mono.Ceil 无法保存Silverlight 程序集

    一句话: 处理Silverlight程序集之前, 须先移除强名称(StrongNameRemoveHelper), 之后Reflexil 即可一如预期的正常工作.

  2. 如何在LIRE搜索中使用多特征

    这是官网上的解答,先mark下来. http://www.semanticmetadata.net/wiki/lirefaq/ ==================================== ...

  3. ASP.NET MVC异常处理

    ASP.NET MVC异常处理方案 如何保留异常前填写表单的数据 ASP.NET MVC中的统一化自定义异常处理 MVC过滤器详解 MVC过滤器使用案例:统一处理异常顺道精简代码 ASP.NET MV ...

  4. push or get File or Folder using scp wrapped with expect and bash

    经常需要把服务器的某些文件传到 Mac,或者获取 Mac 的一些文件到服务器.尽管有很多命令scp, ftp, rsync都可以,霸特每次都有敲好长的命令,好烦,而且还要输入密码.所以想着 wrap ...

  5. Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序

        在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的.     这次,我们来看看在窗体上修改或录入数据的情 ...

  6. Spark之键值RDD转换(转载)

    1.mapValus(fun):对[K,V]型数据中的V值map操作(例1):对每个的的年龄加2 object MapValues { def main(args: Array[String]) { ...

  7. 设置myeclipse新建jsp文件默认编码为UTF-8

    有三个地方需要改编码设置: 1. window-->preference-->general-->contenttype 然后在content types中展开每一个子项,并在Def ...

  8. jQuery Mobile应用之火车票查询

    效果图: 在CMD中输入如下代码 corsproxy (前提是有node.js环境,并先安装corsproxy) html: <!DOCTYPE html> <html> &l ...

  9. 百度之星初赛2A 1001 ALL X(HDU 5690)

    All X Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  10. mysql压缩包安装配置

    1.在环境变量中添加:MYSQL_HOME:C:\05_study\mysql-5.7.10-winx64,在path路径中加入:%MYSQL_HOME%\bin.配置环境变量不是必须的,只是为了能更 ...