> 技术文档 > 常用git命令集锦

常用git命令集锦


git init 初始化

将当前目录初始化为 git 本地仓库,此时会在本地创建一个 .git 的文件

git init -q

静默执行,就是在后台执行

git init --bare

–bare 参数,一般用来初始化一个空的目录,作为远程存储仓库

git init --template dir

–template 参数,相当于将已有的git仓库目录复制一份出来,生成新的仓库,dir是原git目录;

git init --template ../project
git init --separate-git-dir dir

相当于复制仓库dir目录(可以是工作仓库,也可以是存储仓库)中的.git目录,只复值.git目录

git init --separate-git-dir ../project

git log 查看当前git提交记录

查看git提交记录,只看提交带本地仓库的记录;

 git log 

--oneline 简化git日志输出格式

$ git log --oneline3662c32 (HEAD -> v1.0.0, origin/v1.0.0) feat: 表单已完成,等待接口完善661dfc0 (origin/master, origin/HEAD, master) init

git remote 命令

git remote add origin url 创建远程仓库

在git服务器上创建一个远程仓库,这里以码云为例

git remote add origin https://gitee.com/你的码云用户名/projectName
git remote -v 查看本地添加了哪些远程分支的地址
$ git remote -vorigin http://git.woa.com/bkdevops-plugins/fitFmqPulsarTopicAutoDeploy.git (fetch)origin http://git.woa.com/bkdevops-plugins/fitFmqPulsarTopicAutoDeploy.git (push)
git remote remove xxx

删除本地指定的远程地址

git remote remove origin

git pull origin xxx 拉取代码

拉取指定分支的代码,master 是分支名称

git pull origin master

git add . 将文件保存到缓存区

你新增的文件是不可以直接提交的,必须先将文件添加到缓存区;

# 把新增的、修改的都加到缓存git add .# 把新增、和修改的、和删除的都加到缓存git add -A # 添加 file文件或目录到缓存区git add + file

git commit -m ‘xxx’ 提交到本地仓库

将缓存区的文件提交到本地仓库

# 提交缓存区的所有文件到本地仓库git commit -m \'新添加的文件内容描述\' # 提交指定的文件到本地仓库git commit -o index.html about.html -m \'我同时提交了 工作区的index.html 和 暂存区的about.html 这两个文件\'

git push origin xxx 推送到远程仓库

push 是将本地仓库中的代码推送到远程仓库

# 将本地仓库的代码推送到远程仓库的master分支 git push origin master

git pull url 拉取远程仓库的代码且与本地代码合并

拉取指定git url的代码,未指定分支的情况下,默认拉取master分支

git clone https://xxx.git

git拉取远程指定分支下代码(-b 分支名称)

git clone -b v2.8.1 https://xxx.git

git fetch url 拉取远程仓库的代码不合并,以远程代码为准

git fetch origin master

fetch与pull的区别

  • fetch是将远程主机的最新内容拉到本地,不进行合并
  • pull 则是将远程主机的master分支最新内容拉下来后与当前本地分支直接合并 fetch+merge

git config git配置

查看git的配置信息

# 执行后,,进入编辑状态,按 Q 退出git config -l 

修改配置

# git配置本地仓库的userName(必须)git config user.name \'Lee\'# git配置本地仓库的邮箱(必须)git config user.email \'12345@qq.com\'

git status

查看当前git状态信息(查看是否有文件未提交),以下示例提示有个 index.html 的文件修改了未提交,Untracked files表示忽略的目录或文件

$ git statusOn branch v1.0.0Your branch is up to date with \'origin/v1.0.0\'.Changes not staged for commit: (use \"git add ...\" to update what will be committed) (use \"git restore ...\" to discard changes in working directory) modified: src/index.htmlUntracked files: (use \"git add ...\" to include in what will be committed) ../.idea/no changes added to commit (use \"git add\" and/or \"git commit -a\")

git branch 查看分支

git branch -r 查看所有的远程分支

origin/HEAD 是一个默认分支的指针,指向了master,表示origin/master就是默认分支

$ git branch -r origin/HEAD -> origin/master origin/master origin/v1.0.0
git branch -a 查看所有的分支(包含远程和本地)

* 表示当前选择的分支

$ git branch -a master* v1.0.0 remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/v1.0.0

git reset --hard “HEAD^” 回退

可以用来删除已提交到本地仓库的版本,回退到上一个版本,切记,谨慎使用,执行多次会恢复到之前的版本,且代码不可恢复( --hard表示全恢复 )

# 以下2种用法,linux系统使用第一种,win系统使用第二种git reset --hard HEAD^git reset --hard \"HEAD^\"

git reset --hard xxx 回退到指定的版本

回退到指定的版本,提交点:可用ID或标签

# 回退到指定的版本号git reset --hard 3662c32f

git reflog 查询所有提交点

回退后需要反悔的话,需要通过此命令查找到所有操作的提交点

git reflog 

.gitignore 忽略的目录或文件

目录下建立一个.gitignore文件(可以有多个,影响范围当前文件及子文件),文件内可指定提交时忽略的文件和目录,可 同时忽略多个

touch .gitignore

git rm -r --cached 删除缓存区文件

删除缓存区的所有文件, . 表示所有

git rm -r --cached .

删除缓存区指定的文件

git rm -r --cached index.html

合并分支

合并分支reking和主干master,合并后的提交点属于主干master

git checkout master git rebase reking 

git diff 统计文件改动

比较本地 v1.0.0 分支和远程分支origin/master的差异

$ git diff --stat v1.0.0 origin/master bk-frontend/package.json | 5 +- bk-frontend/src/Atom.vue | 63 ++++++++++++ bk-frontend/src/data/Index.vue | 187 ------------------------------------ bk-frontend/src/data/LocalAtom.vue | 74 ++++++++++++++ bk-frontend/src/data/PublicAtom.vue | 103 ++++++++++++++++++++ bk-frontend/src/data/task.json | 49 ++++++++++ bk-frontend/src/main.js | 11 +-- 7 files changed, 295 insertions(+), 197 deletions(-)