结合自己的开发实践,梳理常用操作命令。用于后续的参考(做备忘录)
Git 安装
OS : Ubuntu 16.0.4
# 安装
sudo apt install git
# 验证
git --version
Git 配置
# 用户名、邮箱配置 与 取消配置
git config [--global] user.name user.name/email
git config [--global] --unset user.name/email
# 查看项目配置信息
git config -l
# commit 默认编辑器
1. git config --global core.editor "vim"
2. export GIT_EDITOR=vim
3. 修改~/.gitconfig, 添加
[core]
editor = 'vim'
# 查看远程库
git remote
# 配置多个远程库
git remote add [upstream(远程库别名)] [ssh仓库地址]
# 删除远程库
git remote rm [upstream(远程库别名)]
Git 多账号配置
# 新建ssh key (~/.ssh),并自定义秘钥文件名(id_rsa_xxx)
ssh-keygen -t rsa -C "XXXX@xxx.com"
# SSH 添加新私钥
ssh-add ~/.ssh/id_rsa_xxx
# 添加配置文件(~/.ssh/config)
vim config
以下内容添加到config文件中:
# start
# 该文件用于配置私钥对应的服务器
Host github
HostName github.com
User xxx
IdentityFile C:/Users/Administrator/.ssh/id_rsa
# 建一个别名xxx,新建的帐号使用这个别名做克隆和更新
Host xxx //别名
HostName xxx
User xxx
IdentityFile C:/Users/Administrator/.ssh/id_rsa_xxx
# end
# 测试
ssh -T git@github.com
ssh -T git@github
# 应用
git clone git@github:xxx.git
Git 基本命令
# 仓库拉取
git clone [仓库地址]
# 拉取更新
git pull / fetch [远程仓库名] :git fetch origin
# 分支查看
git branch
# 分支创建
git branch -b branchXX
# 切换分支
git checkout branchXX
# 分支删除
git branch -D branchXX
# 远程分支删除
git push origin --delete branchXX
# 分支合并
git merge branchXX
# 修改内容查看
git diff [文件全路径] //查看文件修改内容,便于review
git diff [分支名] //比较间的不同
# 查看提交日志
git log
git fetch 与 git pull 区别,简单讲,git pull会自动与本地代码合并,而git fetch 需要手动执行merge操作。官方介绍
数据回滚
git reset
git reset 命令执行本地仓库中数据的回退
git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit_id>]
--mixed 重置本地仓库当前版本,以及重置缓存区(默认)(缓存区对应图中的index)
--soft 仅仅重置本地仓库
--hard 重置工作区、暂存区、本地仓库
--merge 重置工作区、暂存区、本地仓库
--keep 重置本地仓库 但是保留本地修改
# HEAD指向的版本就是当前版本
git reset --hard HEAD^ //回退的上一个版本,可以用来清除已经add到缓存区但是不想进一步提交的内容
git reset --hard HEAD^^ //回退的上上一个版本
git reset --hard HEAD~10 //回退的上10个版本
# 使用commit id回退(commit_id使用 git log 查看)
git reset --hard commit_id
git reset --hard 3628164 // commit_id 可以只输入前几个字符
git reflog // 查看命令历史,即便自己回退错误,也能正确的返回
git revert
git revert 用一个新提交来消除一个历史提交所做的任何修改
git revert [commit_id] //commit_id使用 git log 查看
git checkout --
git checkout -- 用来回退本地已修改但没有 commit 的文件
git checkout -- [文件全路径/通配符]
git stash
git stash 临时存储。你正在开发A功能,B功能的有个紧急的bug需要修复,但是正在开发的代码不能构成一个commit,你该怎么办?使用 git stash 储藏当前工作状态。
# 储藏
git stash
# 查看储藏的队列
git stash list
# 还原
git stash pop/apply [stash] //stash 为 git stash list 中的索引值,如stash@{0},
默认还原队列中的第一个存储状态
# 清除储藏的所有状态
git stash clear
git pop 与 git apply的区别为 git pop 还原后会删除该储藏记录,git stash pop 相当于 git stash apply && git stash drop
Git 小技巧
# 删除本地还未add的修改
git clean -f -d
# 在本地库中删除一个文件
git rm 文件名
# 内建的图形化 git:
gitk
# 彩色的 git 输出:
git config color.ui true
# 显示历史记录时,每个提交的信息只显示一行:
git config format.pretty oneline
# 可视化分支合并图
git log --graph