请放弃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 idgit 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 addgit 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 checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st status# 勾销暂存文件# git reset HEAD -- <文件名>git config --global alias.unstage 'reset HEAD --'# 查看最初一次提交git config --global alias.last 'log -1 HEAD'# 关上gitkgit config --global alias.visual '!gitk'

rebase

git checkout experimentgit rebase master

git checkout mastergit merge experiment

cherry-pick

转移提交

git cherry-pick <commit id>

stash

# 保留以后进度,会别离对暂存区和工作区的状态进行保留git stash# git stash带上messagegit 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