Git的一些简单而且常用的操作
转载自我自己的博客
介绍
很多初学者可能并不太清楚Git 与GitHub 这两个概念的联系和区别,在这里我大致介绍一下这两个名词。 Git 是一个免费、开源的分布式版本控制系统(VCS)。版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。版本控制系统分为集中式的版本控制系统(CVCS)比如SVN 、VSS 和分布式版本控制系统(DVCS)比如Git 、Bazaar ,前者有一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人们通过客户端连接到这台服务器,获取最新的文件或者提交更新,不过显而易见的缺点就是中央服务器的单点故障问题。如果宕机,那么就会出现谁都无法提交更新的情况,那么也就无法协同工作甚至会丢失数据;分布式版本控制系统的特点是用户每次迁出的不是某一个版本的快照,而是原始数据的整个镜像。因此当服务器发生故障的时候,可以用任何一个本地镜像进行恢复。
GitHub 是一个用Git 做版本控制的代码托管平台。它在代码托管领域是先行者,与之类似的还有Gitlab 、Bitbucket 、GitCafe 等。
clone
如果你经常在网上下载一些源码之类的话,这段命令你就再熟悉不过了。这是克隆仓库的命令,其格式为git clone [url]
。比如,要克隆 GitHub用户zfb132
的代码仓库zfb132.github.com
,可以用下面的命令:
git clone git@github.com:zfb132/zfb132.github.com.git
这会在当前目录下创建一个名为zfb132.github.com
的目录,其中包含一个.git
的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的zfb132.github.com
目录,你会看到项目中的所有文件已经在里边了。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
git clone git://github.com/zfb132/zfb132.github.com.git myName
init
要对现有的某个项目开始用Git管理,只需到此项目所在的目录,执行命令:
git init
初始化后,在当前目录下会出现一个名为.git
的目录,所有Git需要的数据和资源都存放在这个目录中。不过这只是初始化,还没有开始跟踪管理项目中的任何一个文件。
add
如果当前目录下有一个文件test.py想要纳入版本控制,需要使用此命令:
git add test.py
需要注意的是,add命令后面支持简化的正则表达式,比如:
git add *.py
git add .
前者表示将该目录下所有扩展名为py的加入版本控制,后者表示将该目录下所有文件加入版本控制。
branch
列出本地已经存在的分支,并且在当前分支的前面加*
号标记:
git branch
列出远程分支:
git branch -r
列出本地分支和远程分支,并且在当前分支的前面加*
号标记:
git branch -a
在本地创建一个新的分支test:
git branch test
切换分支到test(如果当前不在test分支的话):
git checkout test
在本地创建并切换到test分支:
git checkout -b test
在本地删除一个名为test的分支:
git branch -d test
在远程删除test分支只需要再加上-r
参数即可
remote
列出已经存在的远程分支的简要信息:
git remote
列出远程分支的详细信息(在每一个名字后面列出其远程url):
git remote -v
添加一个新的远程仓库origin(此处origin自定义,代表的是远程仓库myTest):
git remote add origin git@github.com:zfb132/myTest.git
commit
提交当前工作目录的修改内容,一般都会加上-m
参数填写修改描述:
git commit -m "修复若干bug"
pull
取回远程仓库的next分支与本地的master分支合并:
git pull origin next:master
如果远程分支是与当前分支合并,则可以省略一部分:
git pull origin next
如果当前分支与远程分支存在追踪关系,则可以省略远程分支名:
git pull orign
如果当前分支只有一个追踪分支,可以继续省略:
git pull
push
push命令与pull命令是类似的,若要上传本地当前分支到远程master分支:
git push -u origin master
如果已经在本地新建一个dev分支,但是远程仓库并没有这个分支,可以使用以下命令在远程建立dev分支的同时把本地的dev分支推送到远程的dev分支(需要保证此时在dev分支下执行命令):
git push origin dev:dev
reset
彻底回退所有内容到上一个提交的版本:
git reset --hard HEAD^
彻底回退所有内容到指定版本04ag58,先用git log
查看历史提交记录,再指定回退的版本号(提交代号的前六位):
git log
git reset --hard 04ag58
示例
以下内容是在安装配置好git的前提下才能正常进行的,如果你需要将自己的远程仓库下载到本地E:\github
目录下,修改后再上传到原仓库的master
分支
按照以下步骤:
- 切换到你的工作目录
E:\github
- 下载远程仓库到本地:
git clone git@github.com:zfb132/zfb132.github.com.git
,其中git@github.com:zfb132/zfb132.github.com.git
是在点击下载按钮时显示的地址,不同的仓库对应不同的地址 - 在本地修改后,终端切换到
E:\github\zfb132.github.com
,其中zfb132.github.com
是自动生成的对应于这个仓库的目录 - 输入
git branch
,输出分支的名字(假设显示* master
,就是属于master
分支) - 输入
git add .
,添加文件 - 输入
git commit -m "修复bug"
,提交修改记录 - 输入
git remote add origin git@github.com:zfb132/zfb132.github.com.git
(大部分时候并不需要) - 输入
git push -u origin master
(master
为刚才查看的分支名)
等待完成后,再进入网页查看就已经更新了
Git的一些简单而且常用的操作的更多相关文章
- git分布式版本控制系统常用的操作
Git是一个版本控制系统,用来追踪计算机文件的变化的工具,也是一个供多人使用的协同工具.它是一个分布式的版本控制系统,本文将简单介绍如何使用.简单来说,就是你要和你的伙伴一起完成一项任务,但是你们要互 ...
- Git常用的操作指令
修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了.想要撤消刚才的提交操作,可以使用--amend 选项重新提交: 1 $ git commit --amend -m& ...
- Git 工作原理以及常用命令操作
GIT工作原理 要了解GIT工作原理,先了解GIT的这几块区域: 工作区域划分 工作区:指的是本地工作空间,如果刚拉取下来的代码,没有修改的内容,这块区域是空白的 (modified-已修改状态) 暂 ...
- git初级浅入其常用操作
1. git init 我们从初始化一个仓库开始,通过此命令可以初始化一个仓库 git init 首先我们在当前目录下创建一个目录pratice和一个文件test.js mkdir pratice c ...
- Git的原理简介和常用命令
Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...
- Git 学习(三)本地仓库操作——git add & commit
Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...
- Git深入浅出使用教程:Git安装、远程控制、常用命令(全)
一.软件安装 1.先安装[Git-2.24.1.2-64-bit.exe]软件.(官网下载的很慢,可以在百度云盘下载我的) 链接:https://pan.baidu.com/s/1uoIS9DWSBp ...
- Git和Github简单教程
原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...
- SNMP常用数据操作
SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...
随机推荐
- c# winform快捷键实现
我们在软件中经常用到快捷键,这里整理备份一下. 首先我们要定义可以作为快捷键的按键,以下是整理的 一些,自己可以根据情况来修改 public static Dictionary<int, str ...
- Ubuntu下使用Docker搭建MySQL步骤备忘
docker 安装和 pull MySQL镜像这里就不介绍了,很多介绍,建议去docker官方网站查看. 本文主要介绍MySQL container 运行起来之后的一些配置 在往下看之前,确保 doc ...
- Realm_King 之 .NET操作XML完整类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;u ...
- poi 操作Excel 以及大数据量导出
maven 依赖 (版本必须一致,否则使用SXSSFworkbook 时程序会报错) <dependency> <groupId>org.apache.poi</grou ...
- kali 源文件 更改和使用 更新日期:2018.04.21
我的公众号,正在建设中,欢迎关注: 0x01 源文件格式: kali下常用的更新命令有: apt-get install update和apt-get install upgrade,update是下 ...
- CTF练习资源大全集
练习CTF清单/永久CTF清单 以下列出了一些长期运行的CTF实践站点和工具或CTF.谢谢,RSnake用于启动这是基于的原始版本.如果您有任何更正或建议,请随时通过dot com tld在域psif ...
- 继承Comparable接口来实现排序
1.java代码里进行排序(若sql能排序,就不要用代码排序) 可以继承Comparable接口来实现,若是在类中,可以声明Comparator对象,来进行比较 List<Map> map ...
- Oracle insert all用法简介
insert all是oracle中用于批量写数据的 现在直接通过例子学习一下,比较简单直观,例子来自<收获,不止SQL优化>一书 环境准备 create table t as selec ...
- 15 | 过不了的坎:聊聊GUI自动化过程中的测试数据
- 数据结构与算法---查找算法(Search Algorithm)
查找算法介绍 在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 1)线性查找算法 示例: 有一个数列: {1,8, 10, 89, 1000, 123 ...