[关闭]
@946898963 2021-06-30T02:06:46.000000Z 字数 2559 阅读 521

Git常用指令

Git


Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)

工作区>>>>暂存区>>>>仓库

Git的分区

branch

查看分支

git branch -a 查看所有的分支(包括远程分支)

删除分支

git branch -d 本地分支名字 可以删除本地分支

git branch -D 本地分支名字 可以强制删除本地分支(如果分支含有某些未合并到其他分支的提交的话)

重命名分支

本地分支重命名(还没有推送到远程)

  1. git branch -m oldName newName

远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)
重命名远程分支对应的本地分支

  1. git branch -m oldName newName

删除远程分支

  1. git push --delete origin oldName

上传新命名的本地分支

  1. git push origin newName

把修改后的本地分支与远程分支关联

  1. git branch --set-upstream-to origin/newName

delete

git push origin --delete 远程分支的名字 删除远程分支

add

git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,

diff

git diff 查看工作区和暂存区差异,

git diff --cached 查看暂存区和仓库差异,

git diff HEAD 查看工作区和仓库的差异,

git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,

checkout

当执行 git checkout . 或者 git checkout -- 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

reset

git commit的反向命令git reset HEAD,对于未提交的但已经添加到暂存区的内容来说,就是把暂存区的内容从暂存区移出来,但不会影响工作区。

git reset HEAD --file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变

如果没有已经添加到暂存区的内容,那么会回退版本库中的内容。

fetch

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

  1. git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
  2. 如果只想取回特定分支的更新,可以指定分支名:
  3. git fetch <远程主机名> <分支名> //注意之间有空格
  4. 最常见的命令如取回origin 主机的master 分支:
  5. git fetch origin master
  6. 取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
  7. git log -p FETCH_HEAD

merge

  1. 开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
  2. git checkout dev
  3. git pull
  4. git checkout master
  5. git merge dev
  6. git push -u origin master
  7. master代码改动了,需要更新开发分支(dev)上的代码
  8. git checkout master
  9. git pull
  10. git checkout dev
  11. git merge master
  12. git push -u origin dev

git merge最简洁用法

pull

而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

  1. 前面提到,git pull 的过程可以理解为:
  2. git fetch origin master //从远程主机的master分支拉取最新内容
  3. git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
  4. 即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:
  5. git pull <远程主机名> <远程分支名>:<本地分支名>
  6. 如果远程分支是与当前分支合并,则冒号后面的部分可以省略:
  7. git pull origin next

git fetch & pull详解

remote

  1. Git更新远程分支列表,这里要注意下,如果你的remote branch不是在origin下,按你得把origin换成你的名字。
  2. git remote update origin --prune
  1. 查看远程分支
  2. git remote
  3. 查看远程分支的详细的信息
  4. git remote -v

Git更新远程分支列表

stash

保存当前工作进度,会把暂存区和工作区的改动保存起来。

  1. git stash
  2. git stash save 'message...'可以添加一些注释

显示保存进度的列表,也就意味着,git stash命令可以多次执行。

  1. git stash list

恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。

  1. git stash pop
  2. 通过git stash pop命令恢复进度后,会删除当前进度

恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)

  1. git stash pop --index

恢复指定的进度到工作区。stash_id是通过git stash list命令得到的

  1. git stash pop stash@{1}

除了不删除恢复的进度之外,其余和git stash pop 命令一样

  1. git stash apply [–index] [stash_id]

删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。

  1. git stash drop [stash_id]

删除所有存储的进度。

  1. git stash clear

使用git stash命令保存和恢复进度

tag

Git 基础 - 打标签

  1. 列出已有的标签
  2. git tag
  3. 创建标签

2.6 Git 基础 - 打标签

submodule

Git-submodule

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注