Git的基本知识和常用指令

一、Git代码状态转换图

其中:

  • 未被Git跟踪的状态为unstage状态;
  • 已被Git跟踪的状态为stage状态(stage:阶段),因此包括staging状态和staged状态。

untrack files:是指尚未被git所管理的文件;changed but not updated:是指文件被git管理,并且发生了改变,但改动还没被git管理;这两种状态,都可以看成是改动还没被git管理的状态,我们这里称unstage状态。
staging是commit和未管理之间的一个状态,也有别名叫index状态,也就是git已经管理了这些改动,但是还没完成提交。changes to be commited是指进入staged状态的文件。
.gitignore中的文件,不会出现在以上三个状态中。
注:

  • 这个图也解释了为啥从远端库拉代码,不需要add、commit。
  • 代码一旦修改,就会成为未被git库跟踪的状态。需要add、commit。

二、大白话Git

1.Git是什么?

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

2.Git有什么特点?简单来说就是:高端大气上档次!

  2.1、Git 管理代码,保证代码版本迭代连续性,即:向A分支merge或者push代码时,A分支代码必须是当前代码的上一个版本,不然会产生冲突。(换句话说:Git确保当前的本地的代码为最新)

  2.2、Git有修改就有提交,就有新的代码版本,git管理维护的是修改。

  2.3、Git分支存储的是代码副本。

  2.4、push :实际上就是将本地分支合并到远端库分支;pull:实际就是将远端分支合并到本地分支。

3.那什么是版本控制系统?

如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:

过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。

看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。

更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。

于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

版本 文件名 用户 说明 日期
1 service.doc 张三 删除了软件服务条款5 7/12 10:38
2 service.doc 张三 增加了License人数限制 7/12 18:09
3 service.doc 李四 财务部门调整了合同金额 7/13 9:51
4 service.doc 张三 延长了免费升级周期 7/14 15:17

这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。

三、Git本地常用操作指令

1、创建git库

  git init  #在当前目录中生成一个.git 目录(含有.git目录的目录即是git仓库)

2、注册git用户

--->用于在团队合作开发中,表明代码作者。

  git config --global user.name XXX  #用户名

  git config --global user.email XXX   #用户邮箱

  git config --list  #查看用户信息

注:加--global,全局设置。

3、向git库添加修改

  git add [path] #会把对应目录或文件,添加到stage状态
  git add .  #会把当前所有的untrack files和changed but not updated添加到stage状态

实际上是为修改内容添加index索引。

4、向版本库提交修改

  git commit –m “XXXX”     #提交修改,添加注释

注:git 提示: 未有add红色字体,未有commit绿色字体,已提交则worktree是干净的

5、查看当前代码库的状态

  git status

6、查看版本信息

  --->实际是查看修改提交信息

  git log

  git log --graph  #以图形化(节点)展示当前git库的提交信息。

7、查看指定版本信息

  git show sdjf974654dd….  #(show后面为每次提交系统自动生成的一串哈希值)

  git show sdji97 #一般只使用版本号的前几个字符即可

8、撤销修改

  git reset
(1)撤销整体修改
git reset --hard  #回到原来编辑的地方,改动会丢失。(同样适用于团队对于其他人
的修改恢复)

git reset --hard sdv143kvf…... #可回到指定的版本#(hard后面为每次提交系统自
动生成的一串哈希值)
     git reset [path] 会改变path指定的文件或目录的stage状态,到非stage状态。
     git reset 会将所有stage的文件状态,都改变成非stage状态。

(2)撤销某次修改
    回退1个change的写法就是git reset HEAD^,
    2个为HEAD^^,
    3个为HEAD~3,以此类推。

9、向远端库推送修改(提交修改)

  git push origin 分支名

10、暂存修改

  git stash可以把当前的改动(stage和unstage,但不包括untrack的文件)暂存。

  然后通过git stash list查看。

  并通过git stash apply重新取出来。但apply之前要保证worktree是干净的。

四、Git团队开发常用操作指令

1、获取远端库项目

  git  clone/pull

2、团队开发的基本流程(多分支合并一个分支)

  git add .   #添加改动的文件
  git commit  #(提交至本地)
  git pull --rebase  #(将服务器项目与本地项目合并)
  git push    #(将本地项目上传至远端库)
  (在提交前要git pull --rebase 一下,确保当前的本地的代码为最新。)

五、Git 分支管理

1、建立分支
  git branch AAA   #建立分支AAA

2、分支切换
  git checkout AAA   #从当前分支切换到AAA分支 (若AAA分支不存在,则自动新建)

3、将分支与主枝master合并
  git checkout master   #(首先切换回主枝)
  git merge AAA    #(将分支AAA与主枝合并)

注:git merge:默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
  使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰(保持提交曲线为直线),建议采用这种方法。

4、当前分支查看
  git branch    #默认有master(也称为主枝)
  git branch -r  #查看远端库分支
  git branch –a  #查看当前所有分支(包括本地分支和远端库分支)

5、删除分支
  git branch –d  AAA   #删除分支AAA

6、切下远端库A分支到本地库A分支

  git checkout -b  A origin/A  (若本地A分支不存在,则自动新建)

注:上面只是一些基本的操作命令,更多的命令可通过帮助文档查询。
         帮助文档的使用:
man git-<需查询的指令>      #(git后面有“-”)
    如commit的查询为  man git-commit

六、本地代码上传Github

1、Gtthub上建立远端仓库,复制下载链接。

2、本地指定目录下,Gitbash粘贴远端仓库下载链接拉取远端仓库代码。

3、复制本地需要提交的代码到远端仓库目录。

3、Git add、commit、push 提交本地代码至Github远端仓库。

原文地址:https://www.cnblogs.com/cr1215995281/p/11676711.html

时间: 2024-08-29 02:58:01

Git的基本知识和常用指令的相关文章

Git版本控制原理和常用指令说明

平时在Android Studio开发Android项目,习惯了点击右键或图标直接拉新fetch,pull,commit和push.但是必要的时候还得在终端输入命令行.比如正在开发新版本v3.0,老板说上个版本的某个地方操作容易误导客户,需要及时改回来发版.这时就需要创建新的分支2.1,回退到上个稳定版本2.0稳定版本tag进行修改,同时正在开发的版本也需要修改,那么可以通过git cherry -pick <commit id>来进行同步修改. 上了一定年纪,记性不太好(虽然刚毕业一年).每

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

git常用指令整理及说明(详细) git常用指令整理及说明详细 安装和配置 工作区版本库和暂存区 本地库和远程库 新建仓库 从远程库克隆 常用查看指令 常用修改指令 撤销修改和版本回退 分支管理 创建和合并分支 解决冲突 bug分支 远程分支 优秀教程笔记 本文是git系列博客的第二篇.本文对指令按照使用场景(建库,查看,修改,分支)进行分类归纳,介绍指令基本含义和用法,方便查阅. 安装和配置 参考我前面的博客:git在各操作系统平台下的安装和配置 工作区.版本库和暂存区 工作区:就是你在电脑里

git/github常用指令、入门

git的基本常用指令: 1.cd:切换路径 2.mkdir:进入文件夹目录 3.pwd:显示当前目录的路径 4.git init:把当前的目录变成可以管理的git仓库,生成隐藏.git文件 5.git add 文件名:把文件添加到暂存区去 6.git commit –m "版本提交备注":提交文件 –m 后面的是注释 7.git commit -a -m "版本提交备注":此指令是5.6两个步骤的合并版,添加所有更新过的文件并提交 8.git status:查看仓库

源代码管理——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日程操作 服务器常用操作 ①同步master git pull origin master ②创建分支 git checkout -b 分支名 ③常规操作 git diff git add 文件名 git commit -m "版本说明" ④push操作 git push -u origin 分支名 ⑤发起merge请求 服务器 常用指令 ①看日志 tailf ".../.../localhost.log" ②看catalina.out tailf "

linux下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢X,因此不推荐. (如果是第一次提交文件,很可能会出现"svn:'.'不是工作副本",即当前目录不是工

Markdown语法 与 Hexo常用指令

Markdown语法 与 Hexo常用指令 Markdown Hexo Markdown是一种超轻量级的标记语言,常用的标记符号不超过十个,相对于更为复杂的HTML标记语言来讲,Markdown实在简便多了,因此学习成本也不是很大.更多关于Markdown的认识,我们可以参考:认识与入门 Markdown Markdown工具 关于支持Markdown的书写工具网络上有很多推荐,这里不再一一列举,常用的有: Mou:外文世界对 MarkDown 的热衷在 Mac 上可见一斑,目前虽是免费的,但功

Linux基础整理-vi/vim常用指令与简单配置

常用指令部分摘自:http://www.runoob.com/linux/linux-vim.html 说明:常用指令这里直接copy过来了,因为我对照鸟哥的书和自己的经历,觉得这里的已经整理的很好了,就不自己浪费时间去整理了,千人栽树,后人乘凉吧,绿色部分是我觉得比较实用的部分. vi/vim 按键说明 除了上面简易范例的 i, [Esc], :wq 之外,其实 vim 还有非常多的按键可以使用. 第一部份:一般模式可用的按钮说明,光标移动.复制贴上.搜寻取代等 移动光标的方法 h 或 向左箭