跳转至

Git 命令

显示当前路径:

pwd

配置 user.name 和 user.email:

git config --global user.name 'your_name'
git config --global user.email 'your_email@domain.com'

设置用户名:

git config --global [user.name](<http://user.name/>) ''

设置用户邮箱:

git config --global user.email ''

查看配置:

git config --list

config 的三个作用域(缺省的话等同于 local):

git config --local ##只对某个仓库有效,切换到另外一个仓库失效,在local中local的优先级比global高
git config --global ##当前用户的所有仓库有效,工作当中最常用
git config --sysstem ##系统的所有用户,几乎不用
##local的在.git/config里面;global的在个人home目录下的.gitconfig里面;system应该在git安装目录的下

查看 Git 状态:

git status

查看日志:

git log

把已有的项目代码纳入Git管理:

cd 项目代码所在的文件夹
git init

新建的项目直接用Git管理

cd 某个文件夹
git init your_project #会在当前路径下创建和项目名称同名的文件夹
cd your_project

拷贝文件

cp 来源文件路径 目标文件路径

拷贝文件夹

cp 源文件夹路径 目标文件夹路径

新建文件夹

mkdir 文件夹名

提交

git commit -m'changelog'

查看文件内容:

vi 文件名
cat 文件名

在 vi 中修改内容:c

退出 vi:

:q

保存更改:

:w!

退出命令行:

Ctrl + Z

将文件添加到暂存区(新加入的文件没有被Git管控)

git add 文件名
git add -u # 将已经纳入管控但发生修改的文件一起提交管控

将文件从暂存区删除

git rm 文件名

恢复暂存区和工作路径上所有的变更:

git reset --hard

重命名文件并自动纳入 Git 管控

git mv 原文件名 现文件名

查看提交日志

git log --oneline
git log -n1 --oneline #最近一次的提交
git log --all #查看所有分支的历史
git log --graph #图形化查看历史

查看本地有多少分支

git branch -v
git branch -av

创建分支并切换到新创建的分支

git checkout -b 新分支名 基于的分支名

切换分支

git checkout 分支名

删除分支

git branch -d 分支名 #清除分支
git branch -D 分支名 #强行清除分支

在浏览器中查看git log的帮助文档

git help --web log

cat HEAD 查看HEAD文件的内容

git cat-file #显示版本库对象的内容、类型及大小信息。
git cat-file -t b44dd71d62a5a8ed3 #显示版本库对象的类型
git cat-file -s b44dd71d62a5a8ed3 #显示版本库对象的大小
git cat-file -p b44dd71d62a5a8ed3 #显示版本库对象的内容

显示当前所在工作目录的全路径

pwd

0新建文件并添加内容

echo "内容" > 文件名

比较commit之间的差异

git diff commit名1 commit名2 #比较两个commit之间的差异
git diff HEAD HEAD^1 == git diff HEAD HEAD^ == git diff HEAD HEAD~1 #比较当前commit和上一次commit的差异
git diff HEAD HEAD^1^1 == git diff HEAD HEAD^^ == git diff HEAD HEAD~2 #比较当前commit和上上一次commit的差异

修改最新一次commit的message

git commit --amend

修改以前的commit的message(仅限于本地未commit状态)

git rebase -i 父commit的ID号
reword
git rebase --skip

合并多个连续的 commit:

git rebase -i 父commit的ID号
squash
git rebase --skips

合并多个不连续的 commit:

git rebase -i 自己的ID号
pick 自己的ID号
squash 想合并的ID号
git rebase --skips

比较工作区和暂存区的区别:

git diff

比较暂存区文件和 HEAD 文件的差异:

git diff --cached

比较暂存区指定文件和工作区该文件的差异:

git diff -- 文件名 文件名 ...

让暂存区恢复成和 HEAD 的一样:

git reset HEAD
回到页面顶部