git命令
git init 初始化一个本地仓库,会在当前文件夹下生成一个.git文件夹(该文件夹默认隐藏,需要电脑设置“显示隐藏文件夹”);也可使用git init <directory> 在当前文件夹下新建一个文件夹并在该文件夹下生成.git文件夹;
git clone <url> 从远端git仓库克隆一个项目,也可使用git clone <url> <directory> 指定克隆到某个文件夹下,如果当前目录不存在该文件夹,则自动创建新的文件夹;克隆时存在两种方式:HTTPS和SSH。两者具体区别在于:HTTPS和SSH两种克隆方式及如何配置本地密钥;
git config --list 查看当前项目git配置;
git config -e 编辑当前项目git配置,也可使用git config -e --global编辑所有git配置
git add <directory> 将本地新增、修改、删除后的文件添加到暂存区;可使用git add . 将本地所有修改后的文件添加到暂存区;
git commit -m "message" 将暂存区的文件提交到git仓库,可添加备注说明,方便阅读;
git status 查看在上次提交之后工作目录和暂存区文件是否有修改;可使用-s后缀查看简短的信息;
git diff 比较暂存区和工作区的不同;
git reset 版本回退,git中使用HEAD代表当前版本,上个版本则为HEAD^,上上个版本为HEAD^^,上100个版本为HEAD~100;回退到上个版本即可写成git reset --hard HEAD^,如果需要回退(或切换)到某个指定的版本,可使用git reset --hard <版本号> 可不用将版本号写全,只写前几位即可识别;
git reflog 可查看git操作日志,会记载每次的版本号,若回退版本后又需要换回新版本,可用该命令查询版本号;
git log 查看历史提交日志;
git checkout -- <file> 或 git restore <file> 可撤销工作区的修改;
git reset HEAD <file> 或 git restore --staged <file> 可撤销暂存区的修改;
git rm <file> 删除暂存区的文件;
git remote add origin <address> 本地git仓库连接远程仓库;
git push -u origin master 将本地仓库master分支的代码推送到远程仓库;第一次提交时使用-u命令可将本地分支与远程分支关联起来;
git checkout -b <name> 或 git switch -c <name> 创建并切换到新建的分支,-b相当于同时执行创建分支命令(git branch <name>)以及切换分支( git checkout <name> 或 git switch <name>);
git branch 可查看当前分支和所有分支;
git merge <name> 可将指定分支合并到当前分支,默认使用fast forward模式合并;使用git merge --no-ff -m <message> <name> 即不使用fast forward模式,使用普通模式合并,会新建一个commit,两种合并方式区别如图:


git branch -d <name> 删除分支;
git stash 可以将当前工作空间储藏起来(方便修改临时已提交的bug),当不在使用时,可使用git stash apply(不会删除当前stash的内容,手动删除需要使用git stash drop来实现) 或git stash pop 恢复的同时也会删除stash的内容;使用git stash list 可查看stash;恢复时也可使用git stash apply stash@{0}来指定恢复指定stash;
git remote 查看远程仓库名,使用-v后缀可查看详细信息;
git push origin <branch-name> 推送到远程仓库;
git branch --set-upstream-to <branch-name> origin/<branch-name> 关联本地和远程仓库;
git checkout -b <branch-name> origin/<branch-name> 在本地创建一个与远程分支名相同的分支;
git pull 拉取远程代码;
git tag <tag-name> 给当前HEAD指向创建一个标签;也可使用git tag <tag-name> <版本号>指定某个历史提交的版本;可使用git tag -a <tag-name> -m <message> 指定标签名和说明信息;
git tag 查看所有标签;
git push origin <tag-name> 添加标签都是在本地实现,该命令可推送某标签到远程仓库;也可使用git push origin --tags 推送所有标签
git tag -d <tag-name> 删除本地某个标签;也可使用git push origin :refs/tags/<tagname> 删除某个远程标签;