总结了一下,目前比较比较常用的 Git 命令。即使在平常工作,我们使用的都是如 SourceTree 等图形化工具,学习好命令,还是能帮助我们更深入使用和理解 Git 的。这里是学习资料。
Git 配置
// 设置用户名
git config user.name 'Your name'
// 设置邮箱
git config user.email 'Your email'
// 有效范围:当前 git 仓库
git config --local user.name 'Your name'
// 有效范围:全局
git config --global user.name 'Your name'
// 设置命令的快捷操作
git config —local alia.newName 'cmd'
(如:git config --local alia.last 'log -1')
// 查看配置列表
git config --list --local
git config --list --global
Git 搭配常用的命令行
// 切换到具体某个目录
cd 完整目录名
// 切换到上一级目录
cd ../
// 展示当前目录文件
ls -al
// 打印当前目录名 print work directory
pwd
// 打印文件内容
cat 目录名
// 进入 edit 中,按 is 进入编辑模式
// 按 esc 退出编辑模式
// :wq 表示保存并退出
Git 基本操作
// 初始化 git 仓库
git init
// 将工作区指定文件加入暂存区
git add newFile
// 将当前工作区所有修改文件加入暂存区
git add .
// 将暂存区修改进行提交
git commit 'commit message'
// git add 和 git commit 两个操作合二为一
git commit -am 'commit message'
// 查看当前分支状态
git status
// 文件重命名
git mv old_name new_name
// 文件删除
git rm filename
// 查看某个哈希值 代表类型
git cat-file -t hash_value
// 查看某个哈希值 具体内容
git cat-file -p hash_value
分支管理
// 创建并切换到分支(以当前所在分支为基准创建)
git checkout -b new_branch_name
// 创建并切换到分支(以指定的 commit_id 为基准创建)
git checkout -b new_branch_name commit_id
// 创建并切换到分支(以指定的分支为基准创建)
git checkout -b new_branch_name old_branch_name
// 删除分支
git branch -d branch_name
// 强制删除分支
git branch -D branch_name
// 切换分支
git checkout branch_name
// 查看所有分支以及当前所在分支
git branch
// 查看所有分支以及当前所在分支,此外还有每个分支的最新一条 commit message
git branch -v
// 合并分支,当 A 分支中变更合并到当前分支
git merge A
// 合并分支,当 A 分支中变更合并到 B 分支
git merge A B
变基
// 变基(将当前分支变基到 分支 b 上)
git rebase b
// 交互式变基(将当前分支变基到 分支 b 上,并允许修改需要变基的 commit message,或者调整 commit 顺序等等)
git rebase -i b
// 允许将指定的某个 commit 的修改应用到当前分支(rebase 的弱化版)
git cherry-pick commit_id
// 变基过程如果有冲突,可以选择解决冲突并继续或者停止变基
git rebase -continue
git rebase -abort
// 如何撤销 rebase
// 1 通过 git reflog 查看 HEAD 的所有变动情况,找到变基前的 old_commit_id
git reflog
// 2 根据 old_commit_id 执行重置
git reset --hard old_commit_id
diff
// 查看工作区和暂存区的不同
git diff
// 查看暂存区和当前分支的不同
git diff --staged
// 查看具体某个文件的不同
git diff — fileName
// 查看两个不同 commit 的 某文件的不同
git diff commit_id1 commit_id2 filename
日志
// graph 表示图形化
// all 代表显示所有分支
// oneline 表示只显示一行
git log --graph --all --oneline
// 有时候 git log 行数太多,需要按 q 键才可以退出查看模式
代码回滚
/// 提交层面
// 删除原先提交历史(xx 可以是 commit_id、分支名、HEAD~2 头指针之类)
git reset xx
等效于
git reset --mixed
// soft mixed hard
// soft 只重置了 commit,修改仍存在于暂存区和工作区,
// mixed 只存在于工作区,
// hard 全部重置
// 新增一个新的提交,以覆盖
git revert xx
/// 文件层面
// 将文件从 暂存区移除
// soft mixed hard 没有区别
git reset HEAD~2 fileName
// 丢弃工作区的修改
git checkout -- fileName
等效于
git checkout HEAD fileName
// 将工作区恢复到上一个提交的样子
git checkout HEAD~2 fileName
// 丢弃工作区所有修改
git checkout -- .
标签
// xxx 可以是 分支名、commit_id
// 打 tag
git tag -a v1.2 xxx
// 删除 tag
git tag -d xxx
Stash
// 存储当前修改
git stash
// 展示存储列表
git stash list
// 恢复存储中的修改(如果有多个,默认恢复最新的一个)
git stash apply
// 恢复并删除
git stash pop
// 清除所有暂存
git stash clear
忽略文件
// 如何将已上传的文件,进行忽略?
// 1 新建 .gitignore,将想要忽略的文件名写入
// 2 取消追踪
git rm -- cached fileName
远程
// 克隆已有的远端工程
git clone address
// 同步远端仓库,并且没有合并到本地分支中
git fetch
// 同步远端分支,并同步到本地分支
git pull
// 拉取同步 并变基
git pull --rebase
// 推送
git push
// 添加远程仓库 upstream 是指定的仓库名
git remote add upstream address
引用
// 显示 HEAD 祖父节点的提交
git show HEAD~2
// 如果 HEAD 是一个合并分支,显示第2个父节点的提交
git show HEAD^2
警告
不要对已经上传到远程服务器的提交历史,实施变基操作,这会造成协作者的困惑。
除此之外
// 同理,强制 push 在协作环境下,也尽量避免使用。
git push —force
网友评论