-
git的常用命令有哪些_Git系列教程(一)
2020-11-29 21:32:53简介在现在程序开发过程中,我们使用最多的Git ,但是这个版本管理工具对于...Git基础三种状态要想学会使用 Git ,除了学习使用基础的命令之后,最重要的就是了解使用过程中文件的三个状态。已提交(committed)表示...简介
在现在程序开发过程中,我们使用最多的Git ,但是这个版本管理工具对于新人并不友好,特别是针对开发过程中,经常会出现提交冲突、上传报错、分支拉取报错等情况。
本文章主要为了教会大家如何利用 Git 更好的参与到开发过程中,是面向新手的一个教程。
Git基础
三种状态
要想学会使用 Git ,除了学习使用基础的命令之后,最重要的就是了解使用过程中文件的三个状态。
- 已提交(committed)
表示数据已经保存到本地仓库中。
- 已修改(modified)
表示修改了文件,但是还未保存到本地仓库中。
- 已暂存(staged):
表示对一个已修改文件做了标记,使其包含在项目的快照中。
四个工作区
这三个状态对应着 Git 工作区中的前三个:
- 工作区
工作区是指的实际开发的过程中参与到修改的文件的保存区域,这个区域可以是一个项目,也可以是一个文件夹,你所要 修改 的内容都在这里修改。
- 暂存区
暂存区是你保存修改的地方,但是这块内容只是将修改的文件加入到要提交的目录之中,对应着
git add
的操作,你修改了,也准备提交了,但是可以继续修改或者进行提交操作。- 本地仓库
本地仓库就是我们在操作过程中保存文件的内容,每次提交更新都利用的是
git commit
命令,这个过程是将文件快照保存的过程,也是就表示着你完成了一次完整的提交。- 远程仓库
git push
操作本身与这三个状态没有直接关系,可以将其理解为是一个与远程交互的功能,虽然在一些工具软件中,提交更新这一步可能会将文件同步推送到远程,但是没有这步,也是一个完整的提交过程。五个常用命令
这几个常用的命令是将文件的状态在三种状态间切换的工具。当文件到某一个状态时,自然也就同步到一个工作区了。
git add
从修改区将文件保存到暂存区,也就是文件状态由已修改 变成了已暂存。
git commit
将文件从暂存区保存到本地仓库,这个命令是将文件从已暂存变成已提交。
git diff
这个命令是查看修改的文件内容,输出之后看到了所有修改的文件,都修改了哪些内容,修改的是否正确,会对文件修改前后的内容都显示出来。
git status
查看当前状态,这个命令是我们最容易忽略的一个命令,但是这个其实是一个非常好用的命令,我们可以通过这个命令查看当前分支的状态、查看哪些文件修改了、哪些修改的文件已经进行暂存、哪些文件还是未跟踪状态(未纳入到跟踪也就是本地修改,不保存到仓库),可以查看我们是否有遗漏的文件。建议在执行其它命令之前,都可以先用这个命令查看一下你的工作区的状态。
git push/git pull
这两个命令是使用最频繁的操作,主要工作就是把本地仓库推送到远程或者把远程仓库拉取到本地。
总结
这次主要说明了 Git 基础的一个功能,知道这些命令和状态之后,我们就可以利用这个命令来管理我们的版本库了。
-
git的常用命令有哪些_Git 看这一篇就够了
2020-11-21 17:30:45脚本之家你与百万开发者在一起上一篇讲 Git 的文章发出来没想到效果特别好,很多...本文的结构如下:作者和开发原由Git 的数据模型常用命令资源推荐作者和开发原由Talk is cheap. Show me the code.这句话就出自 Lin...脚本之家
你与百万开发者在一起
上一篇讲 Git 的文章发出来没想到效果特别好,很多读者都要求继续深入的写。
那今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。
本文的结构如下:
作者和开发原由
Git 的数据模型
常用命令
资源推荐
作者和开发原由
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.
这种版本控制系统有一个单一的集中管理的服务器,保存所有文件的最新版本,大家可以通过连接到这台服务器上来获取或者提交文件。
这种模式相对本地版本控制系统是有所改进的,但是缺点也很明显,如果服务器宕机,那么轻则耽误工作、重则数据丢失。于是分布式版本控制系统应运而生。
2. 分布式版本控制系统
Distributed Version Control Systems (DVCS)
比如:Git, Mercurial, Bazaar, etc.
分布式的版本控制系统会把代码仓库完整地镜像下来,这样任何一个服务器发生故障,都可以用其他的仓库来修复。
更进一步,这种模式可以更方便的和不同公司的人进行同一项目的开发,因为两个远程代码仓库可以交互,这在之前的集中式系统中是无法做到的。
那么什么叫“把代码仓库完整地镜像下来”呢?
CVCS 每个版本存放的是当前版本与前一个版本的差异,因此也被称作基于差异的版本控制 (delta-based);
Git 存储的是所有文件的一个快照 (snapshot),如果有的文件没有修改,那就只保留一个 reference 指向之前存储的文件。
不是很好理解?那接着看吧~
Git 的数据模型
1. 什么是快照 (snapshot) 呢?
首先我们来学两个 Git 中的术语:
- blob, 就是单个的文件;
- tree, 就是一个文件夹。
快照则是被追踪的最顶层的树。
比如我的“公众号”文件夹的这么一个结构:
那么一个快照就是追踪的“公众号”这颗树。
2. 本地库的数据模型
Git 记录了每个快照的 parent,也就是当前这个文件夹的上一个版本。
那么快照的迭代更新的过程就可以表示为一个有向无环图,是不是很熟悉?我们在「拓扑」那篇文章里讲过,忘了的小伙伴快去公众号内回复「拓扑」获取拓扑的入门文章吧~
每个快照其实都对应了一次
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 命令都对应提交一个快照。那有哪些常用命令呢?
常用命令
本章分三大部分介绍日常常用命令:
- 本地操作
- 和远程库的交互
- 团队协作 - 分支
本地操作
在学习常用命令之前,你首先需要知道的 Git 的「三个分区」和对应的文件的「三种状态」:
工作区
:就是你本地实际写代码的地方,无论你是用 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
,我们一一来说一下。回到我们最重要的这张图上来:
我们刚刚说的前进或后退到某一版本,是对
本地库
进行的操作。那有个问题:本地库的代码跳到那个版本之后,工作区和暂存区的代码就和本地库的不同步了呀!
那这些参数就是用来控制这些是否同步的。
$ git reset --hard xxx
三个区都同步,都跳到这个 xxx 的版本上。
$ git reset --soft xxx
前面两个区不同步,就只有本地库跳到这个版本。
$ git reset --mixed xxx
暂存区同步,工作区不动。
所以呢,用的多的就是 hard.
远程交互
和远程库的交互主要是
推
、拉
,也就是写入和读取。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
这个操作是将远程库的数据下载到本地库,但是工作区中的文件没有更新。而要谈
get merge
,我们还需要先讲下分支
。merge
是git 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
:先介绍了有哪些参数,然后 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 -点击图片参与活动,免费包邮送书??????●
人人都欠微软一个正版?
●
脚本之家粉丝福利,请查看!
●
Git 15周年:当年的分道扬镳,成就了今天的开源传奇
● 如何用 Git 优雅回退代码,别搞错了!
● 通过 .git 目录深入理解 Git!
-
git常用的命令有哪些?
2020-06-15 23:29:03初始化仓库以后就是一些日常操作了,感觉平时用的比较多的也就是这些,当然也欢迎补充 git branch 分支查看 git branch branch_1 ...git remote 查看当前仓库管理的远程仓库信息 git remote show o初始化仓库以后就是一些日常操作了,感觉平时用的比较多的也就是这些,当然也欢迎补充
-
git branch 分支查看
-
git branch branch_1 增加分支
-
git checkout branch 分支切换
-
git merge branch_1 合并分支(合并前要切换当前分支至master)
-
git branch -d branch_1 删除分支*
-
git remote 查看当前仓库管理的远程仓库信息
-
git remote show origin 查看指定的远程仓库的详细信息
-
git push --set-upstream origin branch_1 第一次将本地分支推到远程仓库
-
git push <远程主机名> <本地分支名>:<远程分支名> 将本地分支推到远程分支
-
git pull <远程主机名> <远程分支>:<本地分支> 将远程分支拉到本地分支
-
git branch -d branch_0 删除本地合并后分支
-
git brench -D branch_0 删除本地未合并分支
-
git push origin --delete branch_0 删除远程分支
-
git restore [filename] 进行清除工作区的改变
-
git tag 查看标签
-
git tag v1.0.0 打标签
-
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中常用的操作命令有哪些?常用操作命令归纳
2019-07-12 08:34:00git中常用的操作命令有哪些?本篇文章就给到大家归纳了一些git中常用操作命令。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 git开始 全局配置:配置用户名和e-mail地址 1 2 ... -
git常用的命令你知道有哪些?
2019-09-29 19:13:041.git与svn的区别 1,git是目前世界上最先进的分布式版本控制系统,他没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候不需要联网 2,svn是集中式版本控制系统,版本库...2,git 常用的命令配... -
git的常用命令
2019-04-22 15:44:001.查看版本 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... -
git 命令_git常用操作命令归纳
2020-11-29 21:32:51php中文网最新课程每日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切换用户密码_Java小白入门,常用Git命令有哪些?
2021-01-14 12:46:28Git简介Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是 Linus Torvalds 为了帮助管理 Linux 内核...有关Git的详细介绍可以参考Git简介:优课达:Java小白入门,Git是什么?经常使... -
git 常用命令
2018-07-30 23:30:25git常用命令 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,一般我们开发都会用到git svn这些版本控制和...git diff +文件名 对比自己的文件和线上的文件有哪些不一样 git p... -
版本管理(git)常用命令
2020-12-20 21:43:10常用的版本管理软件有哪些?区别在什么地方? 版本管理的好处? 如何使用呢?或者用什么来搭配使用? 如何上手? 1.git安装配置完成后,创建文件夹,打开命令行窗口,切换到刚才创建文件夹目录 2.初始化,选择... -
git常用命令
2018-08-15 17:26:05git的命令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:00Git 常用命令: 1、git status #查看本地工作文件夹有哪些改动(和本地仓库对比),把差别列出。 2、git log #查看commit 的日志。(git log -2 只看最近2次的commit log) 3、git pull #使本地仓库和远程仓库... -
【git】git常用命令的学习与总结
2016-07-20 19:22:21学习了廖雪峰大大的git教程,受益匪浅,把自己觉着重要的总结如下:Git是分布式版本控制系统,分布式和集中式的区别有哪些呢?先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己...
-
基于特征联合概率分布和实例的迁移学习算法
-
如何在 ASP.Net Core 中对接 WCF
-
为什么年薪百万程序员都说,能不能从小公司的应届程序员翻身进入大公司,看的是命...
-
ATCA PICMG_3_0_Shortform标准
-
Python是怎样创建NumPy数组的?
-
未来可能发生的十大颠覆性创新
-
2017年数学建模美赛个人国际一等奖论文-附件资源
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
2021年 系统架构设计师 系列课
-
Unity RUST 逆向安全开发
-
[TcaplusDB知识库]TXHDB存储引擎的介绍
-
地下室旁站监理实施细则.doc
-
MySQL Router 实现高可用、负载均衡、读写分离
-
数据库系统工程师教程 (第三版)前言-附件资源
-
PS亮度蒙版扩展插件:Lumenzia for Mac 支持ps2021
-
自定义HttpMessageConverter学习笔记
-
制作复杂结构的计划完成表_.wmv
-
PowerBI重要外部工具详解
-
Oracle_11g_Linux到Linux_DataGuard部署
-
2021年 系统分析师 系列课