Git常用命令(一)
开始前的配置
// 配置用户信息
// 系统级设置
git config --system user.name username
git config --system user.email email address
// 用户级设置
git config --global user.name username
git config --global user.email email address
// 项目级设置
git config user.name username
git config user.email email address
// 其他配置(以global为例)
// 指定默认编辑器
git config --global core.editor vim
//指定默认分支合并工具
git config --global merge.tool vimdiff
// 查看配置
// 查看系统级设置
git config --system --list
// 查看用户级设置
git config --global --list
// 查看所有设置
git config --list
开始使用Git
取得项目的Git仓库
// 在工作目录中初始化新仓库
git init
// 从现有仓库克隆
git clone git://address | http(s)://address | user@server:/path.git [被克隆仓库的本地名字]
记录每次更新到仓库
// 检查当前文件状态
git status
// 跟踪新文件 OR 暂存已跟踪并被修改了的文件
git add filename
//查看暂存区状态
git status
忽略某些文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表,所以我们可以创建一个名为 .gitignore
的文件,列出要忽略的文件模式。
// 在工作目录创建 .gitignore 文件
vim ./.gitignore
// 编辑 .gitignore 文件
#忽略所有以 .o 或 .a 结尾的文件
*.[oa]
# 但lib.a除外
!lib.a
#忽略所有以 ~ 结尾的文件
*~
#忽略项目根目录下temp目录下以 .text 结尾的文件,但不包括其子文件夹下以 .text 结尾的文件
/temp/*.text
#忽略项目根目录下temp目录下以 .text 结尾的文件,包括其子文件夹下以 .text 结尾的文件
/temp/\*.text
查看已暂存和未暂存的更新
git status
的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff
命令。git diff
会使用文件补丁的格式显示具体添加和删除的行。
// 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容
git diff
// 看已经暂存起来的文件和上次提交时的快照之间的差异
git diff --cached
提交更新
//提交更新, -m 后跟说明信息
git commit -m "balabala"
//不加 -m 会启动默认的文本编辑器,这里推荐用vim进行编辑
git commit
//跳过使用暂存区域,直接将两个步骤合并成一个步骤,前提是这个文件已经被跟踪了
git commit -a -m "balabala"
移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,直接 rm 命令是不行的。
git rm "文件地址"
// 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm -f "文件地址"
// 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中
git rm --cached "文件地址"
移动文件
git mv "old file address" "new file address"
就像 mv 命令可以重命名文件名一样,git mv 同样用来给 git 追踪过的文件重命名
//就等于一下三条指令
mv oldname newname
git rm oldname
git add newname
查看提交历史
// 按提交时间列出所有的更新
git log
// 展开显示每次提交的内容差异
git log -p
// 只显示最近 n 条更新记录
git log -n
// 仅显示简要的增改行数统计
git log --stat
// 指定使用完全不同于默认格式的方式展示提交历史
git log --pretty=oneline
git log --pretty=short
git log --pretty=full
git log --pretty=fuller
// 自定义格式
git log --pretty=format:"%h - %an, %ar : %s"
/*
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
*/
// 形象地展示了每个提交所在的分支及其分化衍合情况
git log --graph
撤销操作
修改最后一次提交
git commit --amend
取消已经暂存的文件
git reset HEAD "文件路径"
取消对文件的修改
git checkout -- "被修改的文件路径"
远程仓库的使用
// 要查看当前配置有哪些远程仓库
git remote
// 显示对应的克隆地址
git remote -v
// 添加一个新的远程仓库,并指定一个简单的名字
git remote add [shortname] [url]
// 从远程仓库抓取数据到本地,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支
git fetch [remote-name]
// 把本地的 master 分支推送到 origin 服务器上
git push origin master
// 查看某个远程仓库的详细信息
git remote show origin
// 修改某个远程仓库在本地的简称
git remote rename pb paul
// 移除对应的远端仓库,并不会删除远程仓库
git remote rm paul
技巧和窍门
自动补全
你可以输入命令的一部分,然后按tab键自动补全
Git 命令别名
// 以修改用户级配置为例
git config --global alias.[简称] [完整的命令]