博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git总结
阅读量:4325 次
发布时间:2019-06-06

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

从上次实习结束到现在刚入职, 时隔快半年了, 好久没用git, 连基本命令都忘的差不多了. 今天就总结一下, 做个复习.

跟着本篇文章, 从头到尾照着敲一遍, 即可快速学习(复习)常用的git操作.

创建仓库

首先创建一个名叫"test"的库.

例如github的话, 就是点击New repository 按钮

然后在Repository name处输入"test"即可. 点击create repository 就创建了.

然后在本地创建一个test文件夹.

mkdir testcd test

 初始化本地仓库

git init

其中的`.git`文件夹里就包含了git的相关信息.

创建README.md文件, 并将内容"abcdefg"写入进去:

echo "abcdefg" >> README.md

 然后添加远程仓库, 并将README.md上传到远程仓库.

git add README.md                                                   # 将变化添加到暂存区git commit -m "上传README.md文件"                                    # 将暂存区里的改动给提交到本地的版本库git remote add origin git@github.com:GoldArowana/test.git           # 添加远程仓库git push -u origin master                                           # 提交到master

 然后就可以看到github里的test仓库里就有了README.md文件:

git add 命令

git add 可以将本地仓库的变化添加到暂存区.

touch a.txt    # 创建文件git add a.txt

 可以用git add <具体文件名> 来一个一个添加文件.

也可以用 `git add .  ` 命令来添加所有的变动.

touch b.txttouch c.txtgit add .          # 等价于  git add b.txt   +  git add c.txt

git status

git status命令可以查看工作目录和暂存区的状态.

touch d.txtgit status

这是git status命令所查看到的结果.

绿色的a.txt  b.txt  c.txt 是之前用git add命令已经添加到暂存区里的.

红色的d.txt是刚刚创建(刚刚发生了改变), 但还没添加到暂存区里的.

git rm --cached

git rm --cached命令可以让文件从暂存区移出.

首先咱们先看一下当前的状态:

git status

 

 接下来咱们把d.txt添加到暂存区中

 然后咱们看一下现在的状态.

接下来就是掩饰git rm --cached命令的时候了. 想把d.txt移出暂存区, 也就是让d.txt从绿色再变回红色.

git rm --cached d.txt

 然后再看一下暂存区状态:

git commit

git commit命令会将暂存区的内容提交到git的本地版本库中.

先 git status看一下当前的暂存区状态:

绿色的三个文件是暂存区中的. 执行commit操作后, 这三个文件将会被提交到git本地版本库中.

git commit -m "提交a b c 三个文件"

 其中 -m后面是提交的注释.

这样就把这三个文件提交到git本地版本库了.

git log

刚刚已经commit操作进行提交了. 之后可以使用git log命令来查看提交记录.

git log

在这里可以看到提交的id (sha1摘要值), 和提交的分支, 日期, 备注 等内容.

按`q`健即可退出这个界面.

显示最近一条日志:

git log -1

显示最近两条日志:

git log -2

以一条日志占一行的形式进行显示:

git log --pretty=oneline

git log --graph                            # 图形化显示分支git log --graph --abbrev-commit            # --abbrev-commit 的作用是只显示sha1摘要的前几位.

git checkout --

git checkout -- 可以撤销对代码的修改.

首先咱们先看一下a.txt文件:

可以看到a.txt里面内容为空. 咱们写入"123456"内容到a.txt中.

已经修改了a.txt   同时可以在status命令看到状态, a.txt是[修改]状态:

接下来执行git checkout -- <文件名> 即可撤销修改.

git checkout -- a.txt

 撤销修改后看一下a.txt的内容, 发现为空:

看一下暂存区状态:

git reset Head

从暂存区中恢复到工作区.(也就是绿色变回红色)

 修改一下a.txt.

echo "123" >> a.txt

 然后git status查看一下状态:

然后用add命令添加到暂存区中:

git add a.txt

 git status后会发现a.txt被添加到了暂存区中(也就是变绿了). 

接下来, 用reset命令, 让a.txt从暂存区重置到工作区中(也就是绿色再变为红色):

git reset Head a.txt

 可以看到a.txt又回到了工作区中: 

git rm

a.txt文件现在是modified状态:

用a.txt来演示git rm的话, 需要先用checkout命令将修改撤销:

checkout -- a.txt

 可以看到a.txt的修改已经被撤销了. 

接下来可以开始演示git rm了:

git rm a.txt

 执行完git rm之后, a.txt被删除了:

而且本次删除还被提交到了暂存区中(变绿了):

恢复 `git rm` 删除操作

如果用git rm命令删除了a.txt文件, 想要再恢复, 怎么办呢?

先用reset命令,  将a.txt置回工作区中(也就是让他从绿色变成红色):

git reset HEAD a.txt

 然后执行git status命令就可以看到a.txt已经变为红色了:

 接下来就要用checkout命令来撤销删除操作了:

git checkout -- a.txt

 然后你就能看到a.txt文件又恢复了:

git branch

查看分支:

git branch

  按q即可退出. 可以看到有且仅有一个分支 `master`.

基于当前分支, 创建一个新的分支 `king`:

git branch king

 然后再git branch查看一下分支情况:

, 可以看到两个分支了. 一个是master, 一个是king. 其中master为绿色, 表示当前分支. 新增的king分支是基于当前分支`master` 新建的.

查看所有分支的最近一次提交:

git branch -v

 删除`king`分支(注意, 不能删除当前分支.  想要删除当前分支, 就得先切换到另一个分支.):

git branch -d king

 强制删除 (其中, `king` 是分支的名字):

git branch -D king

git checkout

git checkout 可以用于切换仓库.

首先咱们新建一个仓库`repo2`:

git branch repo2

 查看一下分支情况:

git branch

, 可以看到多出了一个repo2分支, 当前分支为master.

接下来咱们切换到repo2分支中:

git checkout repo2

 git branch可以看到: 

, 发现当前分支是repo2了 (绿色表示当前分支)

刚刚咱们首先创建了一个分支, 然后再进入到了这个新的分支中. 这两个步骤可以合并为一个命令. 下面这一句命令, 就是"创建repo3分支, 并切换到repo3分支" :

git checkout -b repo3

 ,  发现repo3分支已经创建, 并且当前分支就是repo3了.

 切换到上一个分支:

git checkout -

, 执行1次,就是切换到上1次的分支; 执行2次, 就是切换回原来的分支. 也就是来回切换.

git reflog

git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作):

git reflog

git merge

首先查看一下当前分支状态:

git status

 然后咱们把d.txt  e.txt  添加到仓库中, 并推到远程仓库.

git add .git commit -m "添加d.txt 和 e.txt"git push --set-upstream origin repo2ls

 切换到repo3仓库:

git checkout repo3ls

接下来, 把 repo2  合并  到 repo3(当前分支)   分支上:

git merge repo2ls

, 可以看到repo2仓库里最新修改(新增了d.txt  e.txt)已经合并到了repo3中.

 

关于merge --no-ff 和 --squash 的区别 :   https://segmentfault.com/q/1010000002477106 

 

 

 

 

 

 

 

 

git commit -am ""      https://segmentfault.com/q/1010000005900988

 

未完待续

 

git config --local user.name "arowana"

git config --local user.email "arowana.java@qq.com"

 

转载于:https://www.cnblogs.com/noKing/p/10091108.html

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
HDU 5353 Average
查看>>
进程和计划管理
查看>>
MQ_ActiveMQ环境部署+C#推送和接收消息
查看>>
Ubuntu16.04上使用Anaconda3的Python3.6的pip安装UWSGI报错解决办法
查看>>
学习笔记11.6
查看>>
高效中的细节注意
查看>>
MySQL 之 库操作
查看>>
Python 最抢手、Java 最流行,前线程序员揭秘 2019 软件开发现状
查看>>
R语言(一)
查看>>
商品搜索引擎---分词(插件介绍与入门实例)
查看>>
win7下硬盘安装Windows
查看>>
SQL Server 数据库性能优化(转载)
查看>>
java ee课程目标
查看>>
Shell 脚本进程并发&进程数控制
查看>>
Java基础String类
查看>>
yum -y list java* 查看当前java的版本
查看>>