Git常用命令

Git常用命令

一. 基本概念

工作区:存放代码的目录

暂存区:存放临时改动

git仓库:包含所有已经提交的数据

通常的工作流程为:

在工作区中添加修改文件(绿色是新添加,红色是已修改),目前状态为已修改(modified);

如果暂时不想提交的代码可以存进暂存区,被add的文件都会进入暂存区,暂存区内的文件是会被git追踪的。此时为已暂存(staged);

暂存区记录的是对文件的修改,只要是add过的文件,任何修改只要保存了都会添加进暂存区。

修改完成后提交代码之,代码进入仓库,此时状态为已提交(committed)

二. 常用操作

img

1. init

初始化仓库

git init

2. add

添加文件修改到暂存区

git add test.md

add 命令如果针对的是未追踪的文件,则把文件添加到暂存区。

如果针对的是已追踪的文件,则把文件的修改添加到暂存区。

3. commit

将暂存区中的修改提交到本地仓库

git commit -m "提交说明"

如果文件只是修改了,但没有通过add将修改同步到暂存区,那么就只会提交暂存区现有的修改。

git commit -am "同步修改到暂存区并提交到git仓库"

如果有些文件在工作区忘记add了,不用重新commit,可以直接修改上一次commit。

git commit --amend

如果是只修改commit描述

git commit --amend -m "追加的提交描述"

4. status

查看当前工作区内当前分支下,上次提交之后哪些文件有修改。

git status

5. reset

每次commit 都会在仓库创建一个快照,git reflog可以查看快照ID。

reset命令会把仓库的修改还原到暂存区,HEAD是一个游标,指向的是仓库的最近一次提交。HEAD~ 表示HEAD的上一个快照,HEAD~~ 表示上上个快照,HEAD~8 表示HEAD的上8个快照。

如下命令回滚的范围从小到大:

git reset --soft HEAD~

只移动HEAD,并不会将快照回滚到暂存区,相当于撤销了上一次commit,因为上次提交会清空暂存区,现在游标移动仓库内最新的快照为上上次的提交。

git reset --mixed HEAD~
git reset HEAD~ 

git reset HEAD~ 实际是 git reset --mixed HEAD~ 默认模式就是mixed首先移动HEAD,指向上一个快照,然后将该位置的快照回滚到暂存区。

git reset --hard HEAD~

hard 模式会将快照回滚到暂存区,并将暂存区文件还原到工作目录。

reset 还可以回滚指定文件,可以回滚到HEAD之前或之后。

git reset 快照ID 文件名/目录

6. checkout

将暂存区中的修改,恢复到工作区中,会丢失工作区中未提交到暂存区的修改。如果是在工作区误删文件,可以通过该命令从暂存区恢复文件。

git checkout -- 文件名

7. diff

比较不同分支或文件的差异,比较对象有工作区,暂存区,仓库(HEAD、快照1、快照2…)。

工作区和快照对比

git diff ed32c92
git diff HEAD

工作区和暂存区对比

git diff

暂存区和仓库对比

git diff --cache ed23544
// 暂存区和HEAD对比
git diff --cache 

7. branch

创建分支:在指定节点创建分支相当于创建了副本,可以进行不同的修改。

git branch secondbc

切换分支:执行以上命令可以创建secondbc分支,分支的节点位置是HEAD指向的节点。但此时HEAD指向的依旧是master分支,需要执行切换命令才会切换到新分支。

git checkout secondbc

注意:checkout 分支不会将暂存区的修改 和工作区的修改 覆盖掉,此时再commit 就会将这些修改提交到新分支。如果暂存区没有修改了,checkout 会直接被修改到新分支的状态(在旧分支branch之后提交的修改,切换新分支,工作区中会没有这些修改)。

创建并切换分支

 git checkout -b thirdbc

8. merge

合并分支:通常需要在子分支完成新特性开发,之后合并到master分支。首先需要切换到master分支。

git merge secondbc

合并有冲突时需要先解决冲突再提交(本地可以在master上修改并提交),也可以选择取消这次合并。

git merge --abort 

三. 特殊案例

(4)将暂存区中的修改,恢复到工作区中,会丢失工作区中未提交到暂存区的修改。

git checkout -- rest.md

(5) 查看当前工作区内当前分支下,上次提交之后哪些文件有修改。

git status
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值