git常用指令整理及说明(详细)

git常用指令整理及说明(详细)


  • git常用指令整理及说明详细

    • 安装和配置
    • 工作区版本库和暂存区
    • 本地库和远程库
      • 新建仓库
      • 从远程库克隆
    • 常用查看指令
    • 常用修改指令
    • 撤销修改和版本回退
    • 分支管理
      • 创建和合并分支
      • 解决冲突
      • bug分支
      • 远程分支
    • 优秀教程笔记


本文是git系列博客的第二篇。本文对指令按照使用场景(建库,查看,修改,分支)进行分类归纳,介绍指令基本含义和用法,方便查阅。

安装和配置

参考我前面的博客:git在各操作系统平台下的安装和配置

工作区、版本库和暂存区

  • 工作区:就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • 暂存区:Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

我们把文件往Git版本库里添加的时候,是分两步执行的:

  1. 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  2. 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。

简单理解:需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

详细知识见工作区和暂存区Git 基础 - 记录每次更新到仓库

本地库和远程库

新建仓库

  • 建立远程库(为空,不要加README.md,不然后面会push不上去)
  • 本地新建文件夹
  • git init初始化仓库,可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的。勿人为瞎改
  • 远程库的名字就是origin,这是Git默认的叫法
  • git remote add origin [email protected]:michaelliao/learngit.git 这个命令是在本地的learngit仓库下执行的。这两个地方的仓库名不需要相同,因为会通过在本地的仓库目录下执行这条命令(命令中包含远程库的名字)已经将两者建立了联系
  • git push -u origin master 把本地库的所有内容推送到远程库上。把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数(推送和关联),Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  • git push origin master每次本地提交后,推送最新修改到远程库

从远程库克隆

假设github上面已经有一个远程库,但是本地没有,需要克隆到本地,远程库的名字叫gitskills

  • git clone [email protected]:michaelliao/gitskills.git 克隆一个本地库,则在当前文件夹下会多一个gitskills的文件夹。
  • cd gitskills进入克隆下来的本地库,默认的名字是和github上的一样的
  • git push origin master 推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上

常用查看指令

  • git status 查看仓库当前的状态
  • git diff 文件名查看对文件做什么修改
  • git diff 版本号1 版本号2 --stat查看两个版本的差异的文件列表,包括被修改行数和增删图。参数改为--name-status前面显示修改说明字母(A,M等),无行数
  • git log显示从最近到最远的提交日志
  • git log --pretty=oneline 简化日志输出的显示信息,commit id很长,详细显示见这里
  • git reflog 记录你的每一次命令,最先显示的是这个命令执行之后的版本的版本号的前七位,这样就算你清屏了或者重启了,也能找到某个版本的版本号,就可以轻松回退到那个版本
  • git branch 查看当前所在的分支。git branch命令会列出所有分支,当前分支前面会标一个*
  • git log --graph --pretty=oneline --abbrev-commit用带参数的git log可以看到分支的合并情况。用git log --graph命令可以看到分支合并图
  • git remote 查看远程库的信息
  • git remote -v 显示更为详细的信息

常用修改指令

  • git add readme.txt添加,但是不提交
  • git commit -m "提交描述"提交,只有add后提交才有效“改文件->add文件->再改->提交”,则第二次修改无效,不会被提交,只会成功提交第一次的修改。

撤销修改和版本回退

  • git checkout -- 文件名把没暂存(即没add)的干掉,或者说,丢弃工作区,回到到暂存状态
  • git reset HEAD 文件名把暂存的状态取消,工作区内容不变,但状态变为“未暂存”。

简单来说,没有add过的修改,只需要git checkout -- 文件名即可撤销;add 过的修改,先git reset HEAD 文件名变成没add 过的修改,再git checkout -- 文件名撤销。操作示例可以看这张图

  • git reset --hard HEAD^ 会回退到上一个版本
  • git reset --hard 某版本号前几位通过命令行上的历史信息(假如你没清屏的话),找到某版本 的版本号回到指定版本。不一定要全部的版本号,就像这个命令的例子,只要前面的约7、8位这样就可以。

分支管理

创建和合并分支

  • git checkout -b dev创建一个新的分支:dev,并且会切换到dev分支。所以这条命令有两个作用。git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:git branch devgit checkout dev
  • git branch dev,新建分支是新建指针,指向当前commit
  • git checkout dev切换到dev分支
  • git checkout masterdev分支的工作完成,我们就可以切换回master分支(此时在dev分支的修改在master上是看不到的)
  • git merge dev 这是在master分支上执行的命令,作用是:把dev分支上的工作成果合并到master分支上
  • git branch -d dev 删除已合并的分支。删除分支就是删除指针
  • git branch -D devGit友情提醒,dev分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用git branch -D dev命令
  • git rebase master变基。在当前分支(非master)下执行该命令,则相当于把当前分支和mater分支合并,和merge操作类似,但提交历史不同,rebase操作的log更干净。具体可参考Git 分支 - 变基

解决冲突

假设在master分支和feature1分支对同一文件做了修改

  • git merge feature1 在master分支上执行该命令,与feature1分支合并。这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

  • git merge --no-ff -m "merge with with no-ff" dev准备合并dev分支,注意--no-ff参数表示禁用Fast forward,因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

bug分支

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

  • git stash保存工作现场
  • git stash list 查看工作现场
  • git stash apply恢复工作现场,但是恢复后,stash内容并不删除,有多个工作现场时可以git stash apply [email protected]{0}恢复特定的现场
  • git stash drop删除stash的内容
  • git stash pop恢复的同时也把stas内容删除了

远程分支

这部分只介绍常用的几个操作

  • git fetch origin 这个命令查找 “origin” 是哪一个服务器,从中抓取本地没有的数据,并且更新本地数据库,移动 origin/master指针指向新的、更新后的位置
  • git push (remote) (branch)推送本地的分支来更新远程仓库上的 同名分支。如前文提到的git push origin master就是将本地master分支推送到远程master分支;复杂一点的,git push origin serverfix:awesomebranch将本地的 serverfix分支推送到远程仓库上的awesomebranch分支
  • git push origin --delete serverfix或者git push origin :remotebranch,删除远程的serverfix分支
  • git pull在大多数情况下它的含义是一个git fetch紧接着一个git merge命令。具体可参考Git远程操作详解Documentation git-pull

优秀教程&笔记


作者@brianway更多文章:个人网站 | CSDN | oschina

时间: 2024-10-10 22:01:24

git常用指令整理及说明(详细)的相关文章

git常用指令整理

整理自廖雪峰的git教程 创建空目录: $ mkdir learngit 把目录变成仓库 $ git init 把文件添加到仓库 $ git add readme.txt 把文件提交到仓库 $ git commit -m "wrote a readme file" 查看历史记录 $ git log git版本回退,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100.用re

【转载】Git 常用命令整理

Git 常用命令整理 博客分类: Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux 初始化配置 C代码   #配置使用git仓库的人员姓名 git config --global user.name "Your Name Comes Here" #配置使用git仓库的人员email git config --global user.email [email protected] #配置到缓存 默认15分钟 git config

(小组)Git 常用命令整理

Git 常用命令整理 取得Git仓库 初始化一个版本仓库 git init Clone远程版本库 git clone [email protected]:wordpress.git 添加远程版本库origin,语法为 git remote add [shortname] [url] git remote add origin [email protected]:wordpress.git 查看远程仓库 git remote -v 提交你的修改 添加当前修改的文件到暂存区 git add . 如果

源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Benedict Torvalds 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码) git的现状 在国外已经非常普及,国内并未普及(在慢慢普及) 越来越多的开源项目已经转移到git CVS 最早的开源.免费的集中式版本控制工具 自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况 SVN

Git常用指令总结

git 已经成为日常开发流不可或缺的一部分,甚至说是核心部分,但有些不常用指令时常会忘记,再次坐下备忘,省的用到的时候再去找了.用到的时候才会记录,指令是不断增加的,请不要见怪 ~>~ git 常用指令总结 command 说明 备注 git pull 从远程拉去代码到本地,并自动合并 merge Text git push git fetch 从远程拉取代码到本地,不自动合并 可能会有缓存问题 git fetch -p 从远程拉取代码到本地,不自动合并 可以解决缓存问题 git branch

【续谈git常用指令】

前言 本篇是续上篇[浅谈git常用命令]之后的补充一些git指令.本篇主要介绍git merge和git rebase命令. 补充git指令 1)git merge <branch> 合并指定分支到当前分支.在实际的项目开发中总会需要将其他分支的开发合并到master主分支.如果在合并的过程中出现冲突,需要先解决冲突后再合并.合并的过程如下图所示: 首先在主干分支创建first.txt并提交,模拟主干分支正常业务开发.在某一个时刻有其他的项目成员加入项目组开发,即出现mywork分支,该成员也

【前端小小白的学习之路】Git常用命令整理

Git 常用命令清单. 几个专用名词的译名如下: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url] 二.配置 Git的设置文件为.gitconfig,它可以在用户主目录下(全局

Git 常用指令

查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id git co -- <file> # 抛弃工作区修改 git co . # 抛弃工作区修改 git add <file> # 将工作文件修改提交到本地暂存区 git add . # 将所有修改过的工作文件提交暂存区 git rm <file> # 从版本库中删除文件 git r

Git 常用命令整理(转)

初始化配置 #配置使用git仓库的人员姓名 git config --global user.name "Your Name Comes Here" #配置使用git仓库的人员email git config --global user.email [email protected] #配置到缓存 默认15分钟 git config --global credential.helper cache #修改缓存时间 git config --global credential.helpe