zoukankan      html  css  js  c++  java
  • git的常用命令

    简介

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

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

    [root@jacky conf]# git --version
     git version 2.0.0

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

    [root@jacky conf]# cd /home
    [root@jacky home]# ls
    jacky
    [root@jacky home]# ls -l
    总用量 4
    drwx------. 30 jacky jacky 4096 12月 31 13:40 jacky
    [root@jacky home]# mkdir git_project
    [root@jacky home]# cd git_project/
    [root@jacky git_project]# touch 1.java 2.java
    [root@jacky git_project]# ls -l
    总用量 0
    -rw-r--r--. 1 root root 0 12月 31 17:01 1.java
    -rw-r--r--. 1 root root 0 12月 31 17:01 2.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
    总用量 0
    -rw-r--r--. 1 root root 0 12月 31 17:01 1.java
    -rw-r--r--. 1 root root 0 12月 31 17:01 2.java
    [root@jacky git_project]# ls -la
    总用量 12
    drwxr-xr-x. 3 root root 4096 12月 31 17:02 .
    drwxr-xr-x. 4 root root 4096 12月 31 17:01 ..
    -rw-r--r--. 1 root root    0 12月 31 17:01 1.java
    -rw-r--r--. 1 root root    0 12月 31 17:01 2.java
    drwxr-xr-x. 7 root root 4096 12月 31 17:02 .git

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

    [root@jacky git_project]# vim 1.java
    [root@jacky git_project]# vim 2.java
    [root@jacky git_project]# git add 1.java
    [root@jacky git_project]# git add 2.java
    [root@jacky git_project]# git status
    位于分支 master
    
    初始提交
    
    要提交的变更:
      (使用 "git rm --cached <file>..." 撤出暂存区)
    
        新文件:   1.java
        新文件:   2.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
    
     2 files changed, 2 insertions(+)
     create mode 100644 1.java
     create mode 100644 2.java
    [root@jacky git_project]# git status
    位于分支 master
    无文件要提交,干净的工作区

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

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

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

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

    [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
    1.java  2.java
    [root@jacky git_project]# git branch
    * jacky
      master
    [root@jacky git_project]# vim  2.java
    [root@jacky git_project]# git add 2.java
    [root@jacky git_project]# git commit -am "2"

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

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

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

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

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

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

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

    [root@jacky git_project]# vim 2.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 <1073740572@qq.com>
    Date:   Sat Dec 31 18:18:27 2016 +0800
    
        解决冲突
    
    commit 47373c84b8e2b09f882c79b3115a84ed54b89a8a
    Author: jacky <1073740572@qq.com>
    Date:   Sat Dec 31 18:14:47 2016 +0800
    
        5
    
    commit 8c12ca3887de310d5b4368e9953d7a95ffd166ae
    Author: jacky <1073740572@qq.com>
    Date:   Sat Dec 31 18:12:00 2016 +0800

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

    [root@jacky git_project]# git tag -a v1.1 f53f281
    [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 (tag: v1.1) 注释:第二次提交   #指定标记到这个位置
    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
    1.java  2.java
    [root@jacky git_project]# cat 1.java
    master 1
    master 2

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

  • 相关阅读:
    使用“数据驱动测试”之前你应该知道的(终极篇)
    我读《2017软件测试行业调查报告》
    使用“数据驱动测试”之前你应该知道的(二)
    Why Helm?
    用 ConfigMap 管理配置
    环境变量方式使用 Secret
    volume 方式使用 Secret
    查看 Secret
    用 k8s 管理机密信息
    MySQL 如何使用 PV 和 PVC?- 每天5分钟玩转 Docker 容器技术(154)
  • 原文地址:https://www.cnblogs.com/520playboy/p/6241317.html
Copyright © 2011-2022 走看看