Git 命令整理

git config

git config --list : 检查配置信息

git config <key> : 检查 Git 的某一项配置

git config --global --edit : 编辑配置文件

git config --global user.name "John Doe" : 全局配置用户名

git config --global user.email johndoe@example.com : 全局配置用户邮箱

git config --global --unset user.name : 删除配置信息

git config --global --unset user.email : 删除配置信息

git clone

git clone <版本库的网址> : 与远程主机的版本库同名

git clone <版本库的网址> <本地目录名> : 指定不同的目录名

git clone -o <其他的主机名> <版本库的网址> : 指定用其他主机名

克隆版本库远程主机自动被Git命名为origin。如果想用其他的主机名,git clone命令的-o选项指定。

git remote

为了便于管理,Git要求每个远程主机都必须指定一个主机名。

git remote : 列出所有远程主机

git remote -v : 查看远程主机的网址

git remote show <主机名> : 查看该主机的详细信息

git remote add <主机名> <网址> : 添加远程主机

git remote rm <主机名> : 删除远程主机

git remote rename <原主机名> <新主机名> : 远程主机的改名

git branch

git branch -a : 查看远程分支

git branch : 查看本地分支

git branch branchName : 创建分支

git branch -d branchName : 删除本地分支

git fetch

git fetch <远程主机名> : 将某个远程主机的更新,全部取回本地

git fetch <远程主机名> <分支名> : 只取回特定分支的更新

git fetch origin master
//取回origin主机的master分支

git pull

git pull <远程主机名> <远程分支名>:<本地分支名>
取回远程主机某个分支的更新,再与本地的指定分支合并

git pull origin master:dev
//取回origin主机的master分支,与本地的dev分支合并

git pull origin master
//取回origin/master分支,再与当前分支合并。实质上等同于先git fetch,再git merge

git fetch origin
git merge origin/master

git status

git status : 检查当前文件状态输出十分详细

git status -s : 简短输出

git diff 查看具体修改了什么地方

git diff : 尚未缓存的改动

git diff --stat : 显示摘要而非整个diff:

git diff --cached : 查看已缓存的改动

git diff HEAD : 查看已缓存的与未缓存的所有改动

git diff --staged

git commit

每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit

git commit -a -m 'added new benchmarks' 跳过暂存

git commit --amend --no-edit push前 追加提交 不修改提交说明

git rm

git rm log/\*.log : 删除 log/ 目录下扩展名为 .log 的所有文件

git rm \*~ : 删除以 ~ 结尾的所有文件。

git rm -f <file> : 删除之前修改过并且已经放到暂存区域的文件,加 -f

git rm --cached <file> : 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,加 –cached

git tag

git tag : 列出标签

git tag tagName : 添加标签

git tag -d tagName : 删除标签

git push origin tagName : 提交标签

git push origin :refs/tags/v0.1 : 删除远程标签 v0.1

git mv

用于移动或重命名一个文件、目录、软连接

git mv file_from file_to

git push

git push <远程主机名> <本地分支名>:<远程分支名> : 将本地分支的更新,推送到远程主机

git reset

git reset HEAD : 取消之前 git add 添加,但不希望包含在下一提交快照中的缓存
git reset --mixed : 头指针恢复,add的缓存也会丢失掉,工作空间的代码不变
git reset --soft : 头指针恢复,add的缓存不变,工作空间的代码不变。如果还要提交,直接commit即可
git reset --hard : 头指针恢复,aad的缓存消失,本地的源码也会变为上一个版本的内容,彻底回退到某个版本

git stash

git stash : 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。

git stash save "test-cmd-stash" : 实际应用中推荐给每个stash 加个msg

git stash list : 查看现有stash

git stash drop stash@{0} : 移除stash@{0}

举个🌰:

$ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: package.json

no changes added to commit (use "git add" and/or "git commit -a")

$ git stash save "暂时保存"
Saved working directory and index state On develop: 暂时保存

$ git status
On branch develop
nothing to commit, working tree clean

$ git stash list
stash@{0}: On develop: 暂时保存

$ git stash apply
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: package.json

no changes added to commit (use "git add" and/or "git commit -a")

https://blog.csdn.net/flysqrlboy/article/details/79250150

?常见问题解决

  • 撤销add

    $ git reset HEAD . //撤销所有add文件 
    $ git reset HEAD -filename //撤销单个add文件
  • 撤销commit 未push

    git reset --soft HEAD^
  • 撤销commit 已经push

    $ git log
    $ git reset --soft/--hard <commit版本号>
    $ git push <远程主机名> <本地分支名>:<远程分支名> --force
    //要加上force 不然会提示
    //error: failed to push some refs to '地址'
    //hint: Updates were rejected because the tip of your current branch is behind
  • Git也允许手动建立追踪关系

    //指定dev分支追踪origin/master分支
    $ git branch --set-upstream dev origin/master
    //当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
    $ git pull origin
  • 忽略某个被追踪的文件的修改

    //如果文件已经被跟踪,再放到.gitinore可能会失效,用以下命令来忽略
    $ git update-index --assume-unchanged your_file_path
    //撤销用:
    $ git update-index --no-assume-unchanged your_file_path
  • 把指定的dist文件提交到gh-pages分支上

    $ git subtree push --prefix=dist origin gh-pages
  • git log 如何退出操作

    Q

  • Git Push 避免用户名和密码方法
    http://www.cnblogs.com/ballwql/p/3462104.html

    //全局配置
    $ git config --global user.name "username"
    $ git config --global user.email "email"
    $ git config --global credential.helper store
    //输入这个命令后,只需要输入一次用户名密码
  • 设置只有自己需要忽略的文件

    修改.git/info/exclude文件

相关链接:
Git简明指南
Git 完整命令手册地址:http://git-scm.com/docs
PDF 版命令手册:http://www.runoob.com/manual/github-git-cheat-sheet.pdf
https://git-scm.com/book/zh/v2
http://www.runoob.com/git/git-basic-operations.html
http://www.ruanyifeng.com/blog/2014/06/git_remote.html
https://www.cnblogs.com/cheneasternsun/p/5952830.html

评论