简介
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,Git就是目前世界上最先进的分布式版本控制系统(没有之一),下面就本人在学习和实践过程中经常使用到的命令与配置。
命令 | 说明 |
安装与配置 | |
sudo apt-get install git | Ubuntu上安装Git命令 |
git config --global user.name 用户名 | 设置全局用户签名 (安装Git后务必设置,去掉--global可给某个项目单独设置) |
git config --global user.email email地址 | 设置全局用户email地址(安装Git后务必设置,去掉--global可给某个项目单独设置) |
git config --global alias.别名 命令 | 给某个命令设置全局的别名例:git config --global alias.a add 以后使用git add . 可用git a .即可(也可以退回到跟目录找到隐藏文件.gitconfig 在alias下添加 别名=命令 也行) |
git config --global pull.rebase true | 使所有的git pull都为git pull --rebase命令:拉取代码时如果没有冲突,则会直接合并,如果存在冲突,手动解决冲突即可,不会再产生那条多余的信息 |
创建项目和获取 | |
git init | 初始化本地库 |
git clone 远程库地址 | 从远程库克隆到本地(克隆时不需要先init,克隆默认会初始化) |
常用命令 | |
git status | 查看本地库状态 |
git status -s | 获得简短的输出结果(文件状态和文件名) |
git add file file ... | 添加一个或多个变动的文件到暂存区 |
git add . | 添加当前目录下所有变动的文件到暂存区 |
git commit -m "备注文本" file | 提交暂存区文件到本地库(文件名缺失时,提交所有暂存区文件) |
git commit --amend | 修改上一次提交的备注文本(i进入修改模式,完成后按esc :wq保存退出) |
git log | 查看提交记录(mac 查看后按Q返回) |
git log --oneline | 只显示历史提交备注 |
git log --reverse | 逆向查看提交记录 |
git log --author 用户名 | 查询某个用户名的提交记录 |
git log --graph | 查看历史中什么时候出现了分支、合并 |
git rm --cached file | 移除在暂存区的文件(add反悔药) |
git reset file file ... | 撤销暂存区指定文件的提交(不传入file为撤销所有暂存区文件)(add反悔药 同上) |
git reset --hard 版本号(7位) | 工作区改变 穿梭到某一个版本(配合git reflog使用,如果没有--hard则不修改工作区只修改暂存区 ) |
git reset --hard HEAD^ | 穿梭到上一个版本(每个添加一个^就多穿梭一个版本,也可用1,2,3代替) |
git branch | 查看本地分支列表 |
git branch -a | 查看远程分支列表 |
git branch 分支名 | 创建新的分支 |
git branch -d 分支名 | 删除指定分支(-D为强制删除,不管是否完全合并) |
git branch --no--merged | 查看没有合并的分支 |
git push origin 分支名 | 将本地分支推送到远程分支(分支名不相同时命令为 git push origin 本地分支名:远程分支名) |
git push --force origin 分支名 | 远程分支和本地分支有差异时,强行推送本地分支 |
git push origin --delete 分支名 | 删除远程分支 |
git push --set-upstream origin 分支名 | 将本地分支在远程创建并推送(远程没有该分支时使用) |
git pull origin 远程分支名:本地分支名 | 将远程分支解压到本地 |
git pull --rebase | 拉取代码时如果没有冲突,则会直接合并,如果存在冲突,手动解决冲突即可,不会再产生那条多余的信息 |
git merge 分支名 | 将该分支合并到当前分支 例 git merge B 当前在A分支 则将B合并到A分支git |
git checkout 分支名 | 切换分支(切换分支前建议先提交当前分支代码,否则可能会导致修改的代码丢失) |
git checkout -b 分支名 | 创建分支并切换 |
git stash | 将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录 |
git stash list | 查看缓存列表 |
git stash apply | 将堆栈中的内容应用到当前目录(该命令 不会 将内容从堆栈中删除) |
git stash pop | 将堆栈中的内容应用到当前目录(该命令 会 将内容从堆栈中删除) |
git stash drop stash@{n} | 从堆栈中移除某个指定的stash(n为stash list 中对应的数字) |
git stash clear | 清除堆栈中所有的stash |
git stash show stash@{n} | 查看指定的stash和当前目录差异(n为stash list 中对应数字) |
git diff | 分支一 分支二 显示两分支差异 |
git diff | 版本号一(7位) 版本号二(7位) 显示同一分支两版本差异 管理 |
git reflog | 可以查看所有分支的所有操作记录 (包括已被删除的commit记录和reset的操作,git log所不能) |
git tag | 列出所有本地标签 |
git tag -l 通配模式文本(*) | 根据符合通配模式文本,列出所有本地标签 |
git tag 标签名 | 为最新提交创建轻量标签 |
git tag | 标签名 版本号(7位) 为对应版本号提交创建轻量标签(在后期打标签) |
git tag -a 标签名 -m 备注文本 | 为最新提交创建附注标签 |
git tag -d 标签名 | 删除指定标签 |