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 "yanhooIT@163.com"
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 init和git init –-bare的区别

  • 用git init初始化的版本库,用户也可以在该仓库目录下执行所有git方面的操作,这就会导致一个问题:容易出现版本冲突
  • 举例:
    • 假设远端仓库有两个分支(master和b1),
    • 用户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 ""