工欲善其事,必先利其器,git就是撸码人必不可少的小工具。
sourcetree,vs code自带的git工具超级便利,然而···,身为一个资深的撸码人怎能不懂命令行,下面请听我一一道来。
注:星号标识的是当前分支
一、git工作流
二、常用命令
1.新建仓库
git init //创建新文件夹,打开,执行
2.检出仓库
git clone https://********.git
git clone username@host:https://******.git //远端服务器上的仓库
3.添加 & 提交:创建一个新的提交记录
git add filename //某个文件添加到暂存区
git add * //添加全部修改到暂存区
git commit -m "代码提交信息" //提交改动------->Head,还没到远端仓库
git commit -a -m '信息' //-a 将所有被修改或者已经删除的且被git管理的文档提交到仓库中;不会造成新文件的提交
4.推送改动
git push origin <branch> //提交到远端分支,master可以换成其他分支名
//带有分支名:只能提交 同名的本地分支代码到远端分支
//不带分支:可直接提交当前本地分支的代码到远端分支
//新本地分支push 需要带上分支名
git remote add origin <server> //没有克隆仓库的情况下,将现有修改连接到某个远程服务器eg:https://******/test.git
5.分支:指向某个提交记录,不会造成存储或内存的开销
git checkout <branch> //切换到**分支
git checkout -b <branch> //在当前分支的基础上创建一个新分支,并切换过去
git branch //查看本地分支
git branch -a //查看远程分支
git branch <branch name> //创建分支
git branch -d <branch> //删除**分支
git push origin --delete <branch> //删除远程分支
git branch -f master HEAD~3 //不切换分支,使master分支强制移动到HEAD~3的位置
6.更新与合并
git pull //更新本地仓库
git merge <branch> //合并其他分支到当前分支
git rebase <branch> //线性合并到当前分支,实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
git cherry-pick <提交号> //提交复制到当前所在的位置(HEAD)下面
git merge bugFix
git rebase -i master git checkout master git rebase bugFix
git cherry-pick c2 c4
7.标签
git tag 1.0.0 1b2e1d63ff //给commitID:1b2e1d63ff标记为1.0.0
git log //获取提交ID, --oneline查看历史记录简洁版本;--reverse逆向显示历史记录;--author=**只查找**用户的提交日志
git blame <filename> //以列表形式查看制定文件的历史修改记录
8.替换本地改动,HEAD:总是指向当前分支上最近一次提交记录
git checkout -- <filename> //替换本地改动,使用Head的最新内容替换工作目录中的文件,添加到 暂存区的改动和新文件不受影响
git checkout . //取消全部本地改动
git checkout HEAD . //取消本地和暂存区的全部改动
git fetch origin //从远程仓库拉去代码
git reset --hard origin/master //回退版本,撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset HEAD^ //回退所有内容到上一个版本
git reset HEAD^ hello.php //回退 hello.php 文件的版本到上一个版本
git reset 052e //回退到指定版本
git reset //通过回退提交记录来实现撤销改动
git revert //重新创建新节点(回退版本的节点 )
git reset HEAD~1 git revert HEAD (c2`和c1一致)
9.查看状态
git status //查看仓库当前的状态,显示变更文件,-s获取简短的输出结果
git diff <source_branch> <target_branch> //查看两个分支的不同
git diff //未缓存的改动
git diff --cached //已缓存的改动
git diff HEAD //查看已缓存和未缓存的改动
git diff --stat //显示diff摘要,不是diff全部信息
git rm //删除工作区文件
git mv //移动或重命名工作区文件
10.配置
git config --list //查看git配置
git config -e //针对当前仓库,编辑配置文件
git config -e --global //针对系统上所有仓库,编辑配置文件
git config --global user.name "runoob" //设置用户信息,去掉global只对当前仓库有效
git config --global user.email test@runoob.com //设置用户信息
参考:https://www.runoob.com/manual/git-guide/
附git可视化学习平台:https://learngitbranching.js.org/?locale=zh_CN