git 命令

63 阅读3分钟

git在日常工作用的比较多,但是总有些不那么常用的命令记不住,所以最近又重新学习了一下大神的git教程,然后记录一下git命令,方便以后查找。

  • 工作区 暂存区 版本库 远程仓库

  • git init 初始化一个Git仓库

  • git add <file> 添加文件到暂存区

  • git commit -m "<message>" 记录提交信息到版本库

  • git commit 只提交添加到暂存区的修改,不提交文件

  • git status 查看状态

  • git diff <file> 查看/对比修改的文件

  • git reset --hard commit_id 回到历史版本

  • git log 查看版本

  • git reflog 查看命令记录,确定需要回到未来的哪个版本

  • git checkout --file 放弃工作区的修改

  • git reset HEAD file 撤销添加文件到暂存区

  • git rm <file> 删除版本库中的文件

  • git checkout --file 把误删的文件恢复到版本库的最新版本(git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)

  • git remote add origin git@server-name:path/repo-name.git 关联到远程仓库(关联远程库时必须给远程库指定一个名字,origin是默认习惯命名)

  • git remote rm origin 删除已有的远程库

  • git push -u origin master 首次推送master分支的所有内容

  • git push 推动到远程仓库(简化命令)

  • git branch 查看分支 - git branch <name> 创建分支

  • git branch -d <name> 删除分支

  • git switch <name> 或者 git checkout <name> 切换分支

  • git switch -c <name> 或者 git checkout -b <name> 创建+切换分支

  • git merge <name> 合并指定分支到当前分支;合并分支时通常用的一般是Fast forward模式,这种模式下,删除分支后,会丢掉分支信息;--no-ff 表示禁用Fast forward模式,合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并。

  • 例如:git merge --no-ff -m "merge with no-ff" dev 本次合并创建一个新的commit,所以加上-m参数,把commit描述写进去。

  • git log --graph 查看分支合并图

  • git stash 保留当前工作区(可用于当前工作未完成,新建分支修复bug)

  • git stash pop 回到工作区(bug修复完之后,用这个命令回到工作区)

  • git cherry-pick <commit> 合并某次提交到当前分支(当多个分支有bug时,这个命令可将修改bug提交的修改“复制”到当前分支,避免重复劳动)

  • git branch -d <name> 删除分支

  • git branch -D <name> 强行删除分支(如果要删除一个没有被合并过的分支用这个命令)

  • git remote -v 查看远程库信息

  • git pull 从远程仓库获取代码

  • git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支(分支名最好一致)

  • git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联

  • git tag 查看所有标签

  • git tag <tagName> 创建一个新的标签;还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:git tag -a v0.1 -m "version 0.1 released" 1094adb

  • git show <tagName> 查看标签的详细信息

  • git push origin <tagName> 推送一个本地标签到远程仓库

  • git push origin --tags 推送全部未推送过的本地标签

  • git tag -d <tagName> 删除一个本地标签

  • git push origin :refs/tags/<tagName> 删除一个远程标签

  • 学习链接: www.liaoxuefeng.com/wiki/896043… liaoxuefeng.gitee.io/resource.li…