博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git的常用命令
阅读量:6311 次
发布时间:2019-06-22

本文共 6314 字,大约阅读时间需要 21 分钟。

简介

 上篇讲解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]# lsjacky[root@jacky home]# ls -l总用量 4drwx------. 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总用量 12drwxr-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.javadrwxr-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 
..." 撤出暂存区) 新文件: 1.java 新文件: 2.java

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

[root@jacky git_project]# git commit[master(根提交) 8fa9085] 注释:第一次提交 Committer: root 
您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确与否。您可以通过下面的命令对其进行明确地设置以免再出现本提示信息: 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 
..." 撤出暂存区) 修改: 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
..." 撤出暂存区) 修改: 2.java尚未暂存以备提交的变更: (使用 "git add
..." 更新要提交的内容) (使用 "git checkout --
..." 丢弃工作区的改动) 修改: 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]# ls1.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]# ls1.java  2.java[root@jacky git_project]# cat 2.javamaster 2master 3master 4

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

[root@jacky git_project]# git merge jacky更新 7c6490c..7de7a8dFast-forward 2.java | 1 + 1 file changed, 1 insertion(+)[root@jacky git_project]# cat 2.javamaster 2master 3master 4branch 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 
..." 撤出暂存区) 修改: 2.java[root@jacky git_project]# git commit -am '2'[root@jacky git_project]# git checkout jacky切换到分支 'jacky'[root@jacky git_project]# cat 2.javamaster 2master 3master 4branch 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.javamaster 2master 3master 4branch jacky1<<<<<<< HEADmaster 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 logcommit c1f3ceaaeb622f1b525114d0e6dc28cf974a2321Merge: 8c12ca3 47373c8Author: jacky <1073740572@qq.com>Date:   Sat Dec 31 18:18:27 2016 +0800    解决冲突commit 47373c84b8e2b09f882c79b3115a84ed54b89a8aAuthor: jacky <1073740572@qq.com>Date:   Sat Dec 31 18:14:47 2016 +0800    5commit 8c12ca3887de310d5b4368e9953d7a95ffd166aeAuthor: 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 --decoratec1f3cea (HEAD, tag: v1.0, master) 解决冲突47373c8 (jacky) 58c12ca3 27de7a8d 27c6490c 2b4fbae6 2f53f281 (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]# ls1.java  2.java[root@jacky git_project]# cat 1.javamaster 1master 2

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

 

转载地址:http://zlxxa.baihongyu.com/

你可能感兴趣的文章
UltraMemcache , UltraMySQL 初试
查看>>
水木→函数式编程语言→lisp是不是主要用来编网站的?
查看>>
分享:WebView使用总结(应用函数与JS函数互相调用)
查看>>
MySQL TIPS
查看>>
Alamps学习设计模式之备忘录模式(笑话:劫个色OR抢个鸡蛋版)
查看>>
iphone使用xib界面与和代码相关联的方法
查看>>
struts2对拦截器使用带实例
查看>>
Subset leetcode java
查看>>
【EM】代码理解
查看>>
国内车联网行业 2015年发展趋势
查看>>
winform 窗体实现增删改查(CRUD)窗体基类模式
查看>>
数据挖掘之推荐系统实践--基于用户的协同过滤算法
查看>>
让 ASP.NET JS验证和服务端的 双验证 更简单
查看>>
php 反射
查看>>
MyEclipse内存不足问题
查看>>
Deep Learning 深度学习 学习教程网站集锦
查看>>
Canu FAQ常见问题
查看>>
Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
查看>>
zabbix3配置短信报警
查看>>
(第8篇)实时可靠的开源分布式实时计算系统——Storm
查看>>