init
git init 初始化为git项目
clone
git clone <git address> 从远程克隆git 项目
config
git config --global user.email "you@example.com" 设置本地版本库的email
git config --global user.name "Your Name" 设置本地版本库的name
git config --global user.name "Your Name" 设置本地版本库的name
log
显示git提交日志
git log */test.txt 查看test.txt文件的版本历史记录
git log --pretty=oneline 查看git提交日志,每条日志只显示一行
git log --pretty=oneline 查看git提交日志,每条日志只显示一行
git log -p 显示提交记录的具体内容
git log -p -2 显示最近两次提交记录的具体内容
git reflog 查看历史命令
git reflog 查看历史命令
git log --graph 查看合并图
git log --author='bonnie' 查找提交作者为bonnie的日志
add
git add <文件名> 将文件放从工作区放到版本库的暂存区(stage)
git add . 将所有文件从工作区放到版本库的暂存区(stage)
git add . 将所有文件从工作区放到版本库的暂存区(stage)
commit
git commit -m "本次提交的说明" 把文件从暂存区提交到master分支
diff
git diff 比较的是工作区和暂存区的差别
git diff --cached 比较的是暂存区和版本库的差别
git diff HEAD 可以查看工作区和版本库的差别
git diff --cached 比较的是暂存区和版本库的差别
git diff HEAD 可以查看工作区和版本库的差别
git diff HEAD -- <文件名> 比较工作区的该文件和版本库中HEAD的区别
reset
git reset --hard <版本号,--hard参数:恢复HEAD索引,并且恢复工作区中提交之后的文件。
git reset --hard HEAD^ 恢复到上一个版本
git reset --hard HEAD^^ 恢复到上上个版本
git reset HEAD <文件名> 将在暂存区的修改恢复到HEAD版本
git reset --hard HEAD^ 恢复到上一个版本
git reset --hard HEAD^^ 恢复到上上个版本
git reset HEAD <文件名> 将在暂存区的修改恢复到HEAD版本
checkout
切换分支或者恢复工作区
$ git checkout master (1) $ git checkout master~2 Makefile (2) $ rm -f hello.c $ git checkout hello.c (3)
-
切换分支到master
-
将Makefile恢复到前两个版本(这里说的版本是:每add一次产生一个版本)
-
不小心删除hello.c,恢复hello.c
如果正好有个分支叫做hello.c,那么需要用 git checkout -- <文件名> 替换
丢弃工作区所有文件的修改,用 git checkout -- *
git fetch
git checkout -b dev origin/dev 在本地创建分支dev并和远程dev建立关联
rm
git rm 文件名 删除工作区和暂存区的此文件
branch
git branch 查看当前分支
git branch <分支名> 创建分支
git branch -d <分支名> 删除分支
git branch -D <分支名> 强行删除分支
git checkout -b <分支名> 创建分支并指向当前的分支
git merge <分支名> 合并分支到当前分支
git branch <分支名> 创建分支
git branch -d <分支名> 删除分支
git branch -D <分支名> 强行删除分支
git checkout -b <分支名> 创建分支并指向当前的分支
git merge <分支名> 合并分支到当前分支
stash
git stash “储藏”工作区的内容
git stash list "储藏"的列表
git stash pop 恢复stash的内容,并删除stash内容
git stash apply 恢复stash的内容,不会删除stash内容
git stash list "储藏"的列表
git stash pop 恢复stash的内容,并删除stash内容
git stash apply 恢复stash的内容,不会删除stash内容
pull
从远程或者本地获取,并合并。
合并当前分支到远程next分支:
$ git pull origin next
This leaves a copy of next
temporarily in FETCH_HEAD, but does not update any remote-tracking branches. Using remote-tracking branches, the same can be done by invoking fetch and merge:
$ git fetch origin $ git merge origin/next
push
git push --set-upstream origin next
将当前分支推向远程next分支,如果next分支在远程不存在则创建该分支,推送完成后,本地当前分支会和远程next分支建立关联
fetch
$ git fetch origin
拷贝远程refs/heads/ namespace,并存储到本地 refs/remotes/origin/ namespace