共计 2615 个字符,预计需要花费 7 分钟才能阅读完成。
请放弃 IDE 中 git 的傻瓜式操作,上面通过移步换景的形式相熟罕用 git 命令,而后爱不释手。
场景 1 上传代码到近程仓库
# 初始化 git 仓库
git init
# 全副写入暂存区
git add .
# 将暂存区内容增加到本地仓库
git commit -m "first commit"
# 关联近程仓库
git remote add origin https://github.com/username/*.git
# 提交到近程仓库
git push -u origin master
以上操作实现后,代码就顺利上传到近程仓库了。
场景 2 查看操作记录
# 查看工作区和和暂存区的文件状态
git status
# 查看全副的提交记录
git log
# 查看某人的提交记录
git log --author='username'
# 查看文件提交记录和 commit id
git log --pretty=oneline 目录 / 文件名
# 查看某次提交的操作记录
git show <commit id>
# 查看文件操作记录和文件变动
git log -p 目录 / 文件名
# 查看简写的提交记录
git log --oneline
# 查看版本路线
git log --oneline --graph
git log
命令的更多参数,请查阅官网文档。
场景 3 配置用户名和邮箱
# 配置用户名
git config --global user.name '<username>'
# 为以后仓库配置用户名
git config --add --local user.name '<username>'
# 配置邮箱
git config --global user.email '<email>'
# 为以后仓库配置邮箱
git config --add --local user.email '<email>'
# 查看配置,重点关注 user.name 和 user.email 变量的值
git config --global --list
git config
命令的更多配置,请查阅官网文档。
场景 4 批改文件
git add 文件名
git add 文件名 1 文件名 2 ...
git add .
git commit -m "批改文件"
git add
命令能够将单个具体文件、多个具体文件或所有改变文件写入暂存区,而后执行后续的提交操作。
场景 5 删除文件
能够手动删除文件,但也能够用 git 命令删除文件。
git rm 文件名
场景 6 挪动并重命名文件
能够手动挪动并重命名文件,然而须要 git add
和git rm
操作后能力使文件的状态变为renamed
。更方便快捷的计划就是应用git mv
。
git mv 原文件名 新目录 / 新文件名
场景 7 文件操作后进行还原
未提交至暂存区的状态下,通过 git diff
查看文件改变,手动进行还原,效率太低,举荐应用git checkout
。
# 未提交至暂存区的状态下,回到上一次提交的状态
git checkout -- 目录 / 文件名
# 撤销追踪,回到上一次提交的状态
git reset HEAD 目录 / 文件名
git checkout -- 目录 / 文件名
场景 8 回到指定版本
# 回到上一个版本, 一个 ^ 代表回退一个版本
git reset --hard HEAD^
# 回到指定版本
git reset --hard <commit id>
# 指定文件回到指定版本
git checkout <commit id> -- 文件名
场景 9 版本标签治理
新创建的标签会默认加在最近一次的提交记录上。
# 创立标签
git tag <tag name>
# 查看标签
git tag
# 为指定的提交记录创立标签
git tag <tag name> <commit id>
# 删除标签
git tag -d <tag name>
# 推送某个标签
git push origin <tag name>
# 推送所有标签
git push origin --tags
场景 10 分支治理
# 创立分支
git branch <branch name>
# 查看分支
git branch
# 同时查看近程分支及版本
git branch -av
# 切换分支
git checkout <branch name>
# 删除分支
git branch -d <branch name>
# 强制删除分支
git branch -D <branch name>
# 关联远端分支
git branch –set-upstream <branch name> <remote branch name>
# 创立并切换分支,也可关联远端分支
git checkout -b <branch name> [remote branch name]
# 合并分支
git merge <branch name>
# 合并时如果有抵触保留以后分支的代码
git merge --abort
# 拉取分支
git fetch
# 删除近程分支
git push origin --delete <branch name>
# 拉取合并
git pull
更多分支治理操作,请查阅官网文档
最佳实际
别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
# 勾销暂存文件
# git reset HEAD -- < 文件名 >
git config --global alias.unstage 'reset HEAD --'
# 查看最初一次提交
git config --global alias.last 'log -1 HEAD'
# 关上 gitk
git config --global alias.visual '!gitk'
rebase
git checkout experiment
git rebase master
git checkout master
git merge experiment
cherry-pick
转移提交
git cherry-pick <commit id>
stash
# 保留以后进度,会别离对暂存区和工作区的状态进行保留
git stash
# git stash 带上 message
git stash save '<message>'
# 显示已保留的进度列表
git stash list
# 复原最新保留的进度,并将复原的进度删除
# 如果提供 --index 除了复原工作区的文件外,还尝试复原暂存区
# 如果提供 stash id 则复原该进度
git stash pop [--index] [stash id]
# 除了不删除复原的进度之外,其余和 git stash pop 命令一样
git stash apply [--index] [stash id]
# 删除进度
git stash drop [stash id]
# 删除所有存储的进度
git stash clear
正文完