精华内容
下载资源
问答
  • 简介在现在程序开发过程中,我们使用最多的Git ,但是这个版本管理工具对于...Git基础三种状态要想学会使用 Git ,除了学习使用基础的命令之后,最重要就是了解使用过程中文件三个状态。已提交(committed)表示...

    简介

    在现在程序开发过程中,我们使用最多的Git ,但是这个版本管理工具对于新人并不友好,特别是针对开发过程中,经常会出现提交冲突、上传报错、分支拉取报错等情况。

    本文章主要为了教会大家如何利用 Git 更好的参与到开发过程中,是面向新手的一个教程。

    Git基础

    三种状态

    要想学会使用 Git ,除了学习使用基础的命令之后,最重要的就是了解使用过程中文件的三个状态。

    1. 已提交(committed)

    表示数据已经保存到本地仓库中。

    1. 已修改(modified)

    表示修改了文件,但是还未保存到本地仓库中。

    1. 已暂存(staged):

    表示对一个已修改文件做了标记,使其包含在项目的快照中。

    四个工作区

    这三个状态对应着 Git 工作区中的前三个:

    1. 工作区

    工作区是指的实际开发的过程中参与到修改的文件的保存区域,这个区域可以是一个项目,也可以是一个文件夹,你所要 修改 的内容都在这里修改。

    1. 暂存区

    暂存区是你保存修改的地方,但是这块内容只是将修改的文件加入到要提交的目录之中,对应着 git add 的操作,你修改了,也准备提交了,但是可以继续修改或者进行提交操作。

    1. 本地仓库

    本地仓库就是我们在操作过程中保存文件的内容,每次提交更新都利用的是 git commit 命令,这个过程是将文件快照保存的过程,也是就表示着你完成了一次完整的提交。

    1. 远程仓库

    git push 操作本身与这三个状态没有直接关系,可以将其理解为是一个与远程交互的功能,虽然在一些工具软件中,提交更新这一步可能会将文件同步推送到远程,但是没有这步,也是一个完整的提交过程。

    五个常用命令

    这几个常用的命令是将文件的状态在三种状态间切换的工具。当文件到某一个状态时,自然也就同步到一个工作区了。

    1. git add

    从修改区将文件保存到暂存区,也就是文件状态由已修改 变成了已暂存

    1. git commit

    将文件从暂存区保存到本地仓库,这个命令是将文件从已暂存变成已提交

    1. git diff

    这个命令是查看修改的文件内容,输出之后看到了所有修改的文件,都修改了哪些内容,修改的是否正确,会对文件修改前后的内容都显示出来。

    1. git status

    查看当前状态,这个命令是我们最容易忽略的一个命令,但是这个其实是一个非常好用的命令,我们可以通过这个命令查看当前分支的状态、查看哪些文件修改了、哪些修改的文件已经进行暂存、哪些文件还是未跟踪状态(未纳入到跟踪也就是本地修改,不保存到仓库),可以查看我们是否有遗漏的文件。建议在执行其它命令之前,都可以先用这个命令查看一下你的工作区的状态。

    1. git push/git pull

    这两个命令是使用最频繁的操作,主要工作就是把本地仓库推送到远程或者把远程仓库拉取到本地。

    总结

    这次主要说明了 Git 基础的一个功能,知道这些命令和状态之后,我们就可以利用这个命令来管理我们的版本库了。

    c32814352ff096782521a7a5ad366ac6.png

    展开全文
  • 脚本之家你与百万开发者在一起上一篇讲 Git 文章发出来没想到效果特别好,很多...本文结构如下:作者和开发原由Git 数据模型常用命令资源推荐作者和开发原由Talk is cheap. Show me the code.这句话就出自 Lin...
    b9b45eb1822a5a26c91abd5c60c8c4b3.png

      脚本之家

    你与百万开发者在一起

    b9b45eb1822a5a26c91abd5c60c8c4b3.pngddd298de316e0fa910008d93182ac433.gif上一篇讲 Git 的文章发出来没想到效果特别好,很多读者都要求继续深入的写。

    那今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。

    本文的结构如下:

    1. 作者和开发原由

    2. Git 的数据模型

    3. 常用命令

    4. 资源推荐

    作者和开发原由

    Talk is cheap. Show me the code.

    这句话就出自 Linux 和 Git 的作者Linus Torvalds

    原本 Linux 内核的版本控制系统是用的 BitKeeper,然而 2005 年,BitMover 公司不再让 Linux 开发团队免费使用了。。

    Linus 一听,不给用了?老子自己写!

    于是,大佬十天之内完成了 Git 的第一个版本。

    所以 Git 是一个免费的、开源的版本控制系统。

    版本控制系统

    版本控制其实每个人都用过,那些年修改过的简历:

    小齐简历 2012 版
    小齐简历 2013 版
    小齐简历 2014 版
    小齐简历 2015 版
    小齐简历 2016 版
    小齐简历 2017 版
    小齐简历 2018 版
    小齐简历 2019 版
    ...

    还有那些年打死都不再改的毕业论文:

    毕业论文最终版
    毕业论文最最终版
    毕业论文最最最终版
    毕业论文最最最最终版
    毕业论文最终不改版
    毕业论文最终真不改版
    毕业论文最终真真不改版
    毕业论文最终打死不改版
    毕业论文最终打死不改版 2
    ...

    没错,这就是本地版本控制系统。

    很明显,好处是简单,但是只能一个人在这改,无法和他人完成合作。那么以下两种主流的版本控制系统应运而生。

    1. 集中化版本控制系统

    Centralized Version Control Systems (CVCS)

    比如:CVS, Subversion, Perforce, etc.

    这种版本控制系统有一个单一的集中管理的服务器,保存所有文件的最新版本,大家可以通过连接到这台服务器上来获取或者提交文件。

    d2baf0b2c793c704a6ffdce74d4eea67.png

    这种模式相对本地版本控制系统是有所改进的,但是缺点也很明显,如果服务器宕机,那么轻则耽误工作、重则数据丢失。于是分布式版本控制系统应运而生。

    2. 分布式版本控制系统

    Distributed Version Control Systems (DVCS)

    比如:Git, Mercurial, Bazaar, etc.

    分布式的版本控制系统会把代码仓库完整地镜像下来,这样任何一个服务器发生故障,都可以用其他的仓库来修复。

    更进一步,这种模式可以更方便的和不同公司的人进行同一项目的开发,因为两个远程代码仓库可以交互,这在之前的集中式系统中是无法做到的。

    那么什么叫“把代码仓库完整地镜像下来”呢?

    CVCS 每个版本存放的是当前版本与前一个版本的差异,因此也被称作基于差异的版本控制 (delta-based);

    Git 存储的是所有文件的一个快照 (snapshot),如果有的文件没有修改,那就只保留一个 reference 指向之前存储的文件。

    不是很好理解?那接着看吧~

    Git 的数据模型

    1. 什么是快照 (snapshot) 呢?

    首先我们来学两个 Git 中的术语:

    • blob, 就是单个的文件;
    • tree, 就是一个文件夹。

    快照则是被追踪的最顶层的树。

    比如我的“公众号”文件夹的这么一个结构:

    e1fb0e17bb2404390465f3633cd0bb50.png

    那么一个快照就是追踪的“公众号”这颗树。

    2. 本地库的数据模型

    Git 记录了每个快照的 parent,也就是当前这个文件夹的上一个版本。

    那么快照的迭代更新的过程就可以表示为一个有向无环图,是不是很熟悉?我们在「拓扑」那篇文章里讲过,忘了的小伙伴快去公众号内回复「拓扑」获取拓扑的入门文章吧~

    08339cdf889e426aa133d8d966587734.png

    每个快照其实都对应了一次 commit,我们用代码来表示一下:

    class commit {
    array parents
    String author
    String message
    Tree snapshot
    }

    这就是 Git 的数据模型。

    blob, tree, snapshot 其实都一样,它们在 Git 中都是对象,都可以被引用或者被搜索,会基于它们的 SHA-1 hash 进行寻址。

    git cat-file -t: 查看每个 SHA-1 的类型;git cat-file -p: 查看每个对象的内容和简单的数据结构。

    但是通过这个哈希值来搜索也太不方便了,毕竟这是一串 40 位的十六进制字符,就是第二部分 git log 里输出的那个编码

    因此,Git 还给了一个引用 reference

    比如,我们常见的 HEAD 就是一个特殊的引用。

    本地库就是由 对象引用 构成的,或者叫 Repositories.

    在硬盘上,Git 只存储 对象引用,所有的 Git 命令都对应提交一个快照。

    那有哪些常用命令呢?

    常用命令

    本章分三大部分介绍日常常用命令:

    • 本地操作
    • 和远程库的交互
    • 团队协作 - 分支
    230cc998da5fea9867422cf09f8cb61c.png

    本地操作

    在学习常用命令之前,你首先需要知道的 Git 的「三个分区」和对应的文件的「三种状态」:

    cffa52bd797c0196eedfb48ad933c47a.png
    • 工作区:就是你本地实际写代码的地方,无论你是用 vim 直接改也好,还是在 IDE 里写,都无所谓。

      • 对应的文件状态是:modified,已修改,但还没保存到数据库中。
    • 暂存区:就是临时存放的地方。

      • 对应的文件状态是:staged,Git 已经对该文件做了标记,下次提交知道要包含它。
    • 本地库:存放本地历史版本信息。

      • 对应的文件状态是:committed,文件已经安全的保存在本地数据库中。

    1. $ git add

    工作区改完了代码,就用 git add 提交到暂存区。

    这里如果文件改动的比较多,但又不是每个都需要提交,我会设置 git ignore file,就表示这些文件不要提交,比如在 build project 的时候会自动生成的那些文件等等。

    2. $ git commit -m "comment"

    从暂存区提交到本地库,就需要用 commit。

    一般后面都会跟个 -m 加句 comment,简单说下改动的内容或者原因,我们公司大家默认也会把 Jira链接附上,这样就知道这个改动对应哪个任务。

    那如果想再改,再重新 git add 即可,但是 commit 这句需要改成

    $ git commit --amend

    这样就还是一条 git log 信息。

    3. $ git log

    git log 可以查看到提交过的信息,从近到远显示每次 commit 的 comment 还有作者、日期等信息,比如大概长这个样子:

    commit 5abcd17dggs9s0a7a91nfsagd8ay76875afs7d6
    Author: Xiaoqi
    Date: xxx xxx xxx
    改了 Test 文件

    commit 后面的这个编号,是每次历史记录的一个索引。比如如果需要对版本进行前进或者后退的时候,就需要用到它。

    这样打印的 log 太多,更简洁的打印方式是:

    $ git log --oneline

    就一行打印出来了。

    或者:

    $ git reflog

    更常用一些。

    4. $ git reset

    那我们刚刚说过,如果需要前进或退回到某个版本,就用

    $ git reset --hard 

    这样就直接跳到了这个编号对应的那个版本。

    那么这个 hard 是什么意思呢?

    这里有 3 个参数:hard, soft, mixed,我们一一来说一下。

    回到我们最重要的这张图上来:

    cffa52bd797c0196eedfb48ad933c47a.png

    我们刚刚说的前进或后退到某一版本,是对本地库进行的操作。

    那有个问题:本地库的代码跳到那个版本之后,工作区和暂存区的代码就和本地库的不同步了呀!

    那这些参数就是用来控制这些是否同步的。

    $ git reset --hard xxx

    三个区都同步,都跳到这个 xxx 的版本上。

    $ git reset --soft xxx

    前面两个区不同步,就只有本地库跳到这个版本。

    $ git reset --mixed xxx

    暂存区同步,工作区不动。

    所以呢,用的多的就是 hard.

    230cc998da5fea9867422cf09f8cb61c.png

    远程交互

    f2769c33ede9a10664944bb19913782c.png

    和远程库的交互主要是,也就是写入和读取。

    5. $ git push

    小齐写完了代码,要提交到公司的代码库里,这个过程要用 git push.

    当然了,这么用会被打的。。毕竟还要 cr 呢。

    5. $ git clone

    新来的实习生首先要 clone 整个项目到本地来,然后才能增删改查。

    当然了实际工作中也没人这么用。。因为每家公司都会有自己包装的工具。不过如果是做 Github 上的开源项目,就用得上了。

    6. $ git pull

    小齐提交了新的代码之后,领导要审查呀,所以用 git pull 把最新的代码拉取下来瞅瞅。

    实际上呢,

    git pull = fetch + merge

    7. $ git fetch

    git fetch 这个操作是将远程库的数据下载到本地库,但是工作区中的文件没有更新。

    7b64b2eeea031777005403de58464b23.png

    而要谈 get merge,我们还需要先讲下分支

    mergegit pull 默认的选项,合并其实还有另外一种方法:rebase,中文叫做变基

    8. $ git rebase

    rebase 的作用更多的是来整合分叉的历史,可以将某个分支上的所有修改都移到另一分支上,就像是变了基底。

    分支与合并

    首先我们来看几个关于分支的基本操作:

    9. 查看分支:

    $ git branch

    类似于ls,能够列出当前所有分支。

    git branch -v 能够显示更多信息。

    10. 创建分支:

    $ git branch

    11. 切换分支:

    $ git checkout

    有了分支之后必然会有合并:

    12. 合并分支:

    $ git merge

    而合并时就可能会有冲突,什么时候会有冲突呢?:

    在同一个文件的同一个位置修改时。

    因为 Git 会努力的把你们改动不同的地方合并在一起,但如果实在是在同一个地方改的,那它也没办法了,只能留给程序员去手动处理了。

    当然了,每个命令延伸下去还有无限多个,本文不可能涵盖全部,所以在此重磅推荐齐姐精心挑选的三大学习资源,大家可以自行享用~

    学习资源

    git help

    其实我个人使用最多的是git help

    真心方便又好用啊!

    比如 git help pull:

    92af8492bedd976cf0fc6f42027ec198.png

    先介绍了有哪些参数,然后 description 详细解释了它的工作原理,下面还有图解,有木有太香!!

    不过这种方式更像是 cheatsheet,当你已经知道了这个命令、只是忘了它的用法的时候去查。

    如果你想系统的学习,那么下面 ? 的更适合你。

    Pro Git

    这本书是强烈推荐了!!

    Pro Git 这本书不仅讲了 Git 的基础用法、高级用法,以及最后还深入讲解了 Git 的原理,非常细致全面。

    书的电子版也能在网站上直接下载。

    英文版:

    • https://git-scm.com/book/en/v2

    中文版:

    • https://git-scm.com/book/zh/v2

    玩游戏

    Practice makes perfect!

    推荐一个宝藏资源:玩游戏来练 Git

    项目:https://github.com/pcottle/learnGitBranching

    网址:https://learngitbranching.js.org/

    我熟悉很多工具都是通过小游戏来练习的,比如 vim 的操作,还是蛮推荐这种方式的。就不剧透啦,大家自己去探索吧~

    - END -点击图片参与活动,免费包邮送书??????

    9ce531204c7b73a0decfeca144dc5619.png

    69757da7d2456e70c7d5ece86f57f4e7.gif

    ● 4c26867d535472d09ee7b9c161447546.gif 人人都欠微软一个正版?

    ● 4c26867d535472d09ee7b9c161447546.gif 脚本之家粉丝福利,请查看!

    ● 4c26867d535472d09ee7b9c161447546.gif Git 15周年:当年的分道扬镳,成就了今天的开源传奇

    ● 如何用 Git 优雅回退代码,别搞错了!

    ● 通过 .git 目录深入理解 Git!

    27b52112a5e08e1f1f7c1b42e1350daa.gif

    展开全文
  • 初始化仓库以后就是一些日常操作了,感觉平时用比较多也就是这些,当然也欢迎补充 git branch  分支查看 git branch branch_1  ...git remote  查看当前仓库管理远程仓库信息 git remote show o

    初始化仓库以后就是一些日常操作了,感觉平时用的比较多的也就是这些,当然也欢迎补充

    1. git branch  分支查看

    2. git branch branch_1  增加分支

    3. git checkout branch  分支切换

    4. git merge branch_1  合并分支(合并前要切换当前分支至master)

    5. git branch -d branch_1  删除分支*

    6. git remote  查看当前仓库管理的远程仓库信息

    7. git remote show origin  查看指定的远程仓库的详细信息

    8. git push --set-upstream origin branch_1  第一次将本地分支推到远程仓库

    9. git push <远程主机名> <本地分支名>:<远程分支名>  将本地分支推到远程分支

    10. git pull <远程主机名> <远程分支>:<本地分支>  将远程分支拉到本地分支

    11. git branch -d branch_0  删除本地合并后分支

    12. git brench -D branch_0  删除本地未合并分支

    13. git push origin --delete branch_0  删除远程分支

    14. git restore [filename]  进行清除工作区的改变

    15. git tag  查看标签

    16. git tag v1.0.0  打标签

    17. git push origin v1.0.0  将tag同步到远程服务器

    展开全文
  • Git常用命令有哪些

    2020-09-06 23:13:54
    参考:常用 Git 命令清单 1、常用名词 Workspace:工作区 Index/Stage: 暂存区 Repository:仓库区(或者本地仓库) Remote: 远程仓库 2、新建代码库 $ git init // 在当前目录新建一个Git代码库 3、配置 $ git ...

    参考:常用 Git 命令清单
    在这里插入图片描述

    1、常用名词

    • Workspace:工作区
    • Index/Stage: 暂存区
    • Repository:仓库区(或者本地仓库)
    • Remote: 远程仓库

    2、新建代码库

    $ git init  //  在当前目录新建一个Git代码库
    

    3、配置

    $ git config
    

    4、增加删除文件

    $ git add  // 添加当前目录的所有文件到暂存区
    

    5、代码提交

    $ git commit  // 提交暂存区的文件到仓库区
    

    6、分支

    $ git branch   //  列出所有本地分支
    

    7、远程同步

    $ git fetch [remote]  // 下载远程仓库的所有变动
    
    $ git remote  // 显示所有远程仓库
    
    $ git pull [remote] [branch]   // 取回远程仓库的变化,并与本地分支合并
    
    $ git push [remote] [branch]  // 上传本地指定分支到远程仓库
    
    $ git push [remote] --force   // 强行推送当前分支到远程仓库,即使有冲突
    

    8、撤销

    $ git checkout //   恢复暂存区的所有文件到工作区
    
    展开全文
  • git常用的操作命令有哪些?本篇文章就给到大家归纳了一些git常用操作命令。有一定参考价值,有需要朋友可以参考一下,希望对你有所帮助。 git开始 全局配置:配置用户名和e-mail地址 1 2 ...
  • 1.git与svn区别 1,git是目前世界上最先进分布式版本控制系统,他没有中央服务器,每个人电脑就是一个完整版本库,这样,工作时候不需要联网 2,svn是集中式版本控制系统,版本库...2,git 常用的命令配...
  • git的常用命令

    2019-04-22 15:44:00
    1.查看版本  git branch -av 2.版本回退  git reset --hard 09cb896 ...4.查看有哪些文件改动了  git status 5.提交代码步骤  5.1 git status  5.2 git add -A  5.3 git commit -m "提交记录"  5...
  • php中文网最新课程每日17点准时技术干货分享git常用的操作命令有哪些?本篇文章就给到大家归纳了一些git常用操作命令。有一定参考价值,有需要朋友可以参考一下,希望对你有所帮助。git开始全局配置:配置...
  • Git常用的命令

    2020-09-20 14:08:47
    避免误删,先看一下有哪些分支: git branch -a 要删除服务器远端分支,则执行如下所示的命令git push origin --delete 分支名 如果是要删除本地已经合并了分支,则执行: git branch –d 分支名 删除...
  • Git常用命令

    2017-07-23 10:50:57
    今天我们就讲一下git的常用命令git的常用命令 git init :通过命令行的形式创建一个.git的文件夹,以表示在当前目录下的文件都是在版本控制得范围内。 git status :查看当前仓库的状态 git diff 文件名 : 查看...
  • Git简介Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是 Linus Torvalds 为了帮助管理 Linux 内核...有关Git的详细介绍可以参考Git简介:优课达:Java小白入门,Git是什么?经常使...
  • git 常用命令

    2018-07-30 23:30:25
    git常用命令 是一个开源分布式版本控制系统,可以有效、高速处理从很小到非常大项目版本管理,一般我们开发都会用到git svn这些版本控制和...git diff +文件名 对比自己文件和线上文件有哪些不一样 git p...
  • 常用的版本管理软件有哪些?区别在什么地方? 版本管理好处? 如何使用呢?或者用什么来搭配使用? 如何上手? 1.git安装配置完成后,创建文件夹,打开命令行窗口,切换到刚才创建文件夹目录 2.初始化,选择...
  • git常用命令

    2018-08-15 17:26:05
    git的命令1.git status :查看git是否修改内容需要提交2.git diff 文件名:与远端比较当前文件修改了哪些内容3.git add 文件名:指向需要提交的内容文件4.git commit -m “注释” 提交文件名:提交到本地库5.git ...
  • GIT常用的一些命令

    2019-02-25 17:19:44
    整理一些git常用的命令,都是非常实用的命令 git clone git仓库地址 [proj-name] --将git仓库代码克隆到本地,后面可以加工程名,重命名工程(不建议加) git branch --查看本地仓库下有哪些分支 git branch -D ...
  • git常用命令常用场景

    2016-04-03 22:45:00
    在使用git之前,一直用是svn版本管理;与svn最大不同是,git有两个仓库,一个是本地仓库,一个是服务器上共享仓库...扯了这么多没用,言归正卷,那么在日常开发工作中,哪些git命令是我们常用呢?下面就...
  • Git 常用命令

    2017-06-13 17:36:00
    Git 常用命令: 1、git status #查看本地工作文件夹有哪些改动(和本地仓库对比),把差别列出。 2、git log #查看commit 日志。(git log -2 只看最近2次commit log) 3、git pull #使本地仓库和远程仓库...
  • gitgit常用命令的学习与总结

    千次阅读 2016-07-20 19:22:21
    学习了廖雪峰大大的git教程,受益匪浅,把自己觉着重要总结如下:Git是分布式版本控制系统,分布式和集中式区别有哪些呢?先说集中式版本控制系统,版本库是集中存放在中央服务器,而干活时候,用都是自己...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

git的常用命令有哪些