git常用指令

  • 注意:以下所有操作都是在仓库目录下执行的,而非.git目录
  • 通过git help命令来学习git操作的相关指令
    • 输入需要查看的git指令(如:git help fetch),就会进入一个不可编辑的vim编辑器指南
    • q键退出指南
    • 空格显示下一页
    • control + B显示上一页
    • /键再输入要搜索的内容就可以可以进行搜索
指令 注释 演示
git help 查看所有git命令
git help xxx 查看指定git命令的帮助 git help checkout查看checkout的用法,这里会进入vim编辑器,退出vim编辑器的命令是:wq
git init 初始化一个空的本地仓库,会在当前目录下产生一个.git隐藏文件夹git config的相关命令其实改的就是这个文件夹下的config文件的内容
git init 指定仓库路径 初始化一个空的本地仓库,会在指定目录下产生一个.git隐藏文件夹git config的相关命令其实改的就是这个文件夹下的config文件的内容
git config user.name "用户名" 配置用户名,用于跟踪修改记录,双引号可以省略即:告诉git你是谁 git config user.name "yanhoo"
git config user.email "邮箱" 配置邮箱,用于多人开发间的沟通,双引号可以省略即:告诉git怎么联系到你 git config user.email "[email protected]"
git config -l 查看配置信息
git config -e 编辑配置信息,会进入vim编辑器,按i键开始编辑配置信息的内容,使用方向键将光标移动到指定位置进行编辑,编辑完毕后按esc退出编辑模式,再输入:wq or :x保存并关闭vim编辑器
git config alias.别名 "原指令名称" 设置指令的别名,建议少用别名 git config alias.st "status",将status命令用别名st来代替
git config alias.别名 "原指令名称 参数" 设置带参数指令的别名 git config alias.ci "commit -m",将commit -m命令用别名ci来代替
git config ––gloabal 全局配置,此设置会应用到整个系统中 git config ––gloabal user.name "yanhoo",yanhoo这个用户名将被应用到所有git仓库中
git clone 仓库的URL 下载远程仓库当前路径
git clone 仓库的URL 存放仓库的路径 下载远程仓库本地指定路径
git pull 下载远程仓库的最新信息到本地仓库
git push 将本地的仓库信息推送到远程仓库
git add 文件名 git add命令是将工作区的文件保存到暂缓区,(增、改)操作过的文件,每次commit文件前都必须做add操作,此处的命令表示保存指定文件到暂缓区 git add Person.m,保存Person.m文件到暂缓区
git add . 保存当前路径的所有文件到暂缓区,注意最后是一个
git rm 文件名 删除文件,删完之后必须要进行commit操作,才能同步到版本库,无需执行git add操作
git commit 文件名 –m "注释" 暂缓区的文件提交当前分支,提交指定文件到分支,必须写注释
git commit –m "注释" 保存当前路径的所有文件到分支,必须写注释
git status 文件名 查看指定文件的状态
git status 查看当前路径所有文件的状态
git diff 文件名 查看指定文件的最新改动的地方,显示绿色代表新增,显示红色代表删除
git diff 查看当前路径所有文件最新改动的地方
git checkout 文件名 用于回退未提交的文件,回退指定文件到上一次提交版本,对应于图形化界面的Discard指定文件
git reset ––hard HEAD 用于回退未提交的文件,回退多个文件到上一次提交版本,对应于图形化界面的Discard All Changes
git reset ––hard HEAD^ 用于回退已提交的文件,回退到上一个版本
git reset ––hard HEAD^^ 用于回退已提交的文件,回退到上上个版本
git reset ––hard HEAD~N(N是一个整数 用于回退已提交的文件,回退到上N个之前的版本
git reset ––hard 版本号(版本号用前7位即可) 用于回退已提交的文件,回退到指定版本

项目版本号

  • 在git中,项目版本号是一个由SHA1生成的40位哈希值,通过版本号让我们可以切换到指定版本

git initgit init –-bare的区别

  • git init初始化的版本库,用户也可以在该仓库目录下执行所有git方面的操作,这就会导致一个问题:容易出现版本冲突
  • 举例:
    • 假设远端仓库有两个分支(masterb1),
    • 用户A在远端仓库下的master分支上执行git相关操作
    • 用户B想把自己在本地仓库的master分支的内容提交到远端仓库的master分支上,他就想当然的敲了git push origin master:master
    • 于是乎出现冲突,因为远端仓库的用户A正在master的分支上操作,而用户B又把更新提交到这个master分支上,当然就出错了
  • 备注:如果用户B是往远端仓库中空闲的分支上提交还是可以成功的,比如提交到分支b1上:git push origin master:b1
  • 解决办法
    • 就是使用git init --bare方法创建一个所谓的裸仓库
    • 之所以叫裸仓库是因为这个仓库保存git历史提交的版本信息,而不允许用户在此仓库中进行各种git操作
    • 如果你硬要操作的话,只会得到下面的错误This operation must be run in a work tree
  • 这就是最好把远端仓库初始化成bare仓库的原因

results matching ""

    No results matching ""