Git总结

Git常用命令速查

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

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

创建仓库

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

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

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

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

mkdir test
cd 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.txt
touch c.txt
git add .          # 等价于  git add b.txt   +  git add c.txt

git status

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

touch d.txt
git 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 repo2
ls

 切换到repo3仓库:

git checkout repo3
ls

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

git merge repo2
ls

, 可以看到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值