Git 常用命令总结

 符号约定
[]:可选     <>:必选

git 配置

git config [--global] user.name <name>        设置用户名

git config [--global] user.email <email>         设置邮箱

git config [--global] core.editor <editor>        设置编辑器

git config [--global] github.user <user>         设置github帐号名

git config [--global] github.token <token>        设置github的token

--global是对当前系统用户的全局设置,在~/.gitconfig中。对系统所有用户进行配置,/etc/gitconfig。对当前项目,.git/config

git创建库

git clone <url>                   ssh/http(s)/git三种协议,ssh和https可推送

git init                        初始化Git仓库

git日常操作

git add <file>                 将文件加入index file

git rm [--cached]                删除,加--cached表示仅从index file中删除文件,即放弃跟踪

git mv <src> <dest>             移动/更名

git diff --cached/--staged          当前索引与上次提交(有哪些需要commit)

git diff                      当前索引与工作目录(有哪些需要add)

git diff HEAD[^]               工作目录与上次提交(当前目录与上次提交有何改变)

git commit [-a] -m <msg>          提交

git commit --amend [-m <msg>]       修复上次提交

git reset HEAD <file>             同--mixed,default option

git reset --mixed HEAD            撤销 commit 和index file,只保留 working tree 的信息

git reset --hard HEAD[^]           将 working tree 和 index file 都撤销到以前状态

git reset --soft HEAD[^]            只撤销 commit,而保留 working tree 和 index file 的信息

                     回复到某个状态。以git reset --soft HEAD为例,commit回退到

                     HEAD(相当于无变化),若是HEAD^,则commit回退到HEAD^

git gc                     用垃圾回收机制清除由于 reset 而造成的垃圾代码

git status                  显示当前工作目录状态

git log [-p]                   显示提交历史(many useful options to be learned)

git branch [branch]               显示/新建分支

git branch -d/-D               删除分支(d表示“在分支合并后删除分支”,D表示无论如何都删除分支)

git show-branch

git checkout <branch>            切换分支(分支未commit无法切换)

git merge <branch>              合并分支

git merge == git pull .

git show <branch | commit | tag | etc>        显示对应对象的信息

git grep <rep> [object]             (在指定对象(历史记录)中)搜索        

git cat-file                    查看数据

git cat-file <-t | -s | -e | -p | (type)> <object>        type can be one of: blob, tree, commit, tag

git ls-files [--stage]              show information about files in the index and the working tree(实际是查看索引文件)

git watchchanged <since>..<until>       显示两个commit(当然也可以是branch)的区别

git remote [-v]                    显示远程仓库,加-v选项可显示仓库地址

git remote add <repo_name> <url>         添加远程仓库,repo_name为shortname,指代仓库地址

git remote rename <old_name> <new_name>    更名

git remote rm <repo_name>            删除远程仓库

git remote show <repo_name>          查看远程仓库信息

git remote fetch <repo_name>           从远程仓库抓取数据(并不合并)

git pull <repo_name> <branch_name>      拉去数据并合并到当前分支

git push <repo_name> <branch_name>      推送指定分支到指定仓库  例如: git push origin HEAD:refs/for/master

git fetch <repo_name> <branch_name>[:<local_branch_name>]    拉去数据,未合并

git相关环境变量

GIT_DIR: 如果指定了那么git init将会在GIT_DIR指定的目录下创建版本库

GIT_OBJECT_DIRECTORY: 用来指示对象存储目录的路径。即原来$GIT_DIR/objects下的文件会置于该变量指定的路径下

git常见变量

HEAD: 表示最近一次的 commit。

MERGE_HEAD: 如果是 merge 产生的 commit,那么它表示除 HEAD 之外的另一个父母分支。

FETCH_HEAD: 使用 git-fetch 获得的 object 和 ref 的信息都存储在这里,这些信息是为日后 git-merge 准备的。

HEAD^: 表示 HEAD 父母的信息

HEAD^^: 表示 HEAD 父母的父母的信息

HEAD~4: 表示 HEAD 上溯四代的信息

HEAD^1: 表示 HEAD 的第一个父母的信息

HEAD^2: 表示 HEAD 的第二个父母的信息

COMMIT_EDITMSG: 最后一次 commit 时的提交信息。


常用基本概念说明
1. Working Directory(工作目录) 
Git的工作目录是保存当前正在工作的文件所在的目录, 和working tree是相同的意思。在这个目录中的文件可能会在 切换branch时被GIT删除或者替换。这个目录是个临时目录,临时存储你从GIT库中取出的文件,这些文件一直会被保存,直到下次提交。

2. GIT Directory(GIT库目录) 
项目的所有历史提交都被保存在了GIT库目录中,只要你不作回滚操作,它应该不会丢失。 

3. GIT Index(Git索引) 
Git index 可以看作是工作目录和Git库目录之间的暂存区,和staging area是相同的意思。可以使用Git index构建一组你准备一起提交的改
变。Git Index和Git Staging area是同一个意思,都是指已经被add的但尚未commit的那些内容所在的区域。最简单的查看目前什么内 容在index中的方法是使用git status命令。 
  • 命令中”Changes to be committed“中所列的内容是在Index中的内容,commit之后进入Git Directory。
  • 命令中“Changed but not updated”中所列的内容是在Working Directory中的内容,add之后将进入Index。
  • 命令中“Untracked files”中所列的内容是尚未被Git跟踪的内容,add之后进入Index。
哪些操作能够改变git index中的内容? 
A).  git add <path>...会将working directory中的内容添加进入git index。 
B).  git reset HEAD <path>...会将git index中path内容删除,重新放回working directory中 



git reset用法小结

  • reset命令的三种方式:
git reset -mixed:为默认方式,不带任何参数的git reset,即时这种方式,它退回到某一个版本,只保留源码,回退commit和index的消息,如果需要提交
                          就需要先git add 再git commit 或者直接git commit -a 

git reset -soft :回退到某一个版本,只回退了commit信息,不会恢复到index file一级, 如果需要提供则直接git commit 即可

git rest -hard: 彻底回退到某个版本,本地的源码也会变为上一个版本的内容


  • 实例
       git reset HEAD^ 回退所有内容到上一版本

git reset HEAD^  test.cpp 回退文件text.cpp到上一个版本

git reset -soft HEAD~3 向前回退到第3个版本 

git reset -hard origin/master 将本地状态回退到和远程的一样

git reset 055d 回退到某一个版本(055d) 

git revert HEAD 回退到上一次提交的状态,按照某一次的commit完全反向进行的一次commit

git reset -hard base 111 本地仓库回退到某一个版本





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值