Git常用命令使用介绍

上一篇文章已经介绍了如何在不同系统上安装Git,接下来详细介绍Git中常用的命令

获取仓库

获取仓库的方式有两种:第一种是新建了一个项目,并初始化为Git仓库;第二种是获取已有的Git仓库,比如从GitHub上克隆一份某项目的镜像仓库

初始化新仓库

初始化一个新仓库的方法很简单,在项目文件夹下打开Git Bash,执行$ git init命令,文件夹中会多出一个.git文件夹,这是新仓库就创建成功了

克隆已有仓库

克隆仓库也很简单,比如要克隆Vuejs的仓库,需要$ git clone命令

$ git clone https://github.com/vuejs/vue.git

记录更新

在新初始化的仓库中,新增a.txtb.txt两个文件,随便写点东西

内容添加完成后,使用$ git add命令跟踪这两个文件的变化

# 需要跟踪的文件
$ git add a.txt b.txt

# 或者跟踪所有文件
$ git add .

指定完需要跟踪的文件后,使用$ git commit命令暂存已修改的文件。文件暂存的目的是为了以后可以随时回到这次的修改

$ git commit -m "初始化"

文件暂存后,如果又修改了文件内容,只需要再次执行$ git add$ git commit命令,或者执行$ git commit -am命令,它是前两个命令的合成版

查看修改信息

$ git status命令可以查看状态的变化信息,$ git diff可以查看具体发生了哪些变化

忽略某些文件

在添加追踪文件时,通常使用$ git add .,这种方式会追踪文件夹下的所有文件,但有的时候需要忽略某些文件,这个时候可以配置.gitignore文件

在项目目录下新建一个.gitignore文件,可以自定义不需要跟踪的文件,文件格式规范如下:

1、所有的空行,或者以注释符号 # 开头的行都会被 Git 忽略

2、可以使用标准的glob模式匹配

3、匹配模式最后跟反斜杠(/)说明要忽略的是目录

4、要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反

glob模式是指shell所使用的简化了的正则表达式,星号*匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符;问号?只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有0到9的数字)

# 忽略所有 .md 结尾的文件
*.md

# NOTE.md 不会忽略
!NOTE.md

# 仅仅忽略项目根目录下的 dist 文件,不包括 subdir/dist
/dist

# 忽略 build/ 目录下的所有文件
build/

# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

# 忽略 doc 文件夹下的所有txt文件,包括子目录
doc/**/*.txt

如果修改.gitignore后发现无效,先执行git rm -r --cached .清除缓存

查看更新记录

$ git log命令可以查看commit记录

修改提交

当一个功能开发完毕,我们会执行commit操作。commit完成后,突然发现了一些小问题需要立即修改,但是这些修改不值得单独执行一次commit,这时就可以使用修改提交

$ git commit -am  "完成支付功能"
# 修改一些问题,再次提交
$ git add .
$ git commit --amend

撤销提交

如果你不小心把用户名和密码提交到了远程,可以通过$ git reset --soft HEAD~1命令撤销最近一次提交,这种方式会保留你的修改,只是删除了一次提交记录。然后把私有信息删除后再提交到远程就行了

$ git reset --soft HEAD~1

提交回滚

有时候可能需要回退到某个历史提交,查看之前提交的代码,这时候可以使用$ git reset --hard <hash:7>命令

# 查看提交记录
$ git log --oneline

# 回退得到指定版本
$ git reset --hard fab66f8

回滚后如果需要在回滚回去,可以这么做

# 查看之前提交记录,找到hash值
$ git reflog

# 回退得到指定版本
$ git reset --hard c747387

# 注意: 提交到远程时,由于本地是落后的分支,直接push是不行的
# 可以使用 `git push -u origin develop -f`强制推送,但是如果说别人已经修改了代码,会被覆盖掉

原文地址:https://www.cnblogs.com/yesyes/p/15375794.html