Git 基础指令



获取 Git 仓库

在已存在目录中初始化仓库

  进入到需求目录(想要创建仓库的目录),必须是空文件夹。如果在一个而非空文件夹中进行版本控制,你应该开始追踪这些文件并进行初始提交。

命令:

$ git init

  该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件.

.git 的目录典型结构:

.git/
config # 文件包含项目特有的配置选项
description # 仅供 GitWeb 程序使用
HEAD # 指向目前被检出的分支 hooks/ # 包含客户端或服务端的钩子脚本(hook scripts)
info/ # 包含一个全局性排除(global exclude)文件
objects/ # 存储所有数据内容
refs/ # 存储指向数据(分支、远程仓库和标签等)的提交对象的指针

克隆现有的仓库

  Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行克隆命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。

先进入到需求目录(想要创建仓库的目录)

命令:

git clone <url> [name]

<url> 指想要克隆的仓库地址,Git 支持多种协议,包括 https

[name] 可选,克隆后在你本地的名字(你想要一个不一样的名字)

记录仓库与仓库的更新

仓库的记录

  工作目录下的每一个文件都不外乎这两种状态:已记录 或 未记录。

  • 已记录的文件:是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后。它们的状态可能是未修改,已修改或已放入暂存区。简而言之,已记录的文件就是 Git 已经记录的文件。

  • 未记录文件:工作目录中除已记录文件外的其它所有文件都属于未记录文件。它们既不存在于上次快照的记录中,也没有被放入暂存区。

注意:初次克隆某个仓库的时候,工作目录中的所有文件都属于已记录文件,并处于未修改状态,因为 Git 刚刚检出了它们,而你尚未编辑。

更新过程:


未记录 -> 编辑
已编辑 -> 暂存区
暂存区 -> 提交
已提交 -> 已记录

检查当前文件状态

  想要查看哪些文件处于什么状态

命令:

git status

初次克隆的仓库

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

  这说明你现在的工作目录相当干净。否则 Git 会在这里列出来。

三部曲


工作区 - git add -> 暂存区 - git commit -> 历史区 - git push -> 远程仓库 | <- git checkout -- | | |
| | |
| <---- git checkout HEAD ---- | |
| |
| <---------- git pull ---------- |

跟踪新文件

  命令:

git add <files>

开始跟踪一个文件,将文件从工作区存储到暂存区。

可以使用正则表达式一次性完成多个提交。

可以使用 git status 验证操作

提交更新

  命令:

git commit

将暂存区内容提交到历史区,

命令执行后需要填写提交信息

想要快速提交可以:

git commit -m <str>

<str> 为提交信息

移除文件

  如果你直接从工作目录中删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分

$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) deleted: PROJECTS.md no changes added to commit (use "git add" and/or "git commit -a")

需要使用 git rm 这样以后就不会出现在未跟踪文件清单中了。

如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f

推送到远程仓库

  命令:

git push <remote> <branch>

<remote> 地址或仓库简称,

<branch> 推送分支



  如果想查看你已经配置的远程仓库服务器,运行 git remote 命令

指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简称与其对应的 URL。

运行:

git remote add <shortname> <url>

添加一个新的远程 Git 仓库,

<shortname> 给远程仓库设定的简称

<url> 地址



  运行 git remote rename 可以修改一个远程仓库的简写名

$ git remote rename pb paul
$ git remote
origin
paul

这同样也会修改你所有远程跟踪的分支名字。



  使用 git remote removegit remote rm 可以删除配置的远程仓库服务器



  使用 git fetch <remote> 能同步远程仓库。

记录仓库与仓库的撤消操作

在任何一个阶段,你都有可能想要撤消某些操作。

这里,我们将会学习几个撤消你所做修改的基本工具。

注意,有些撤消操作是不可逆的。

这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。

  命令:

git reset HEAD <file>

我们可以这样来取消暂存

  撤消对文件的修改,将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)

git checkout -- <file>

你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

注意:这并不是最好的方法,在 Git 分支保存进度,这通常是更好的做法。

Git 基础指令的更多相关文章

  1. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  2. git 基础入门操作

    前言: 介绍基础的git入门级指令,虽然git指令非常多,但是实际工作中,我们会用到的非常少,小项目中甚至只需要用到2.3个.而且大部分人都会采用gui,而不是每次都打开终端然后输一长串难记的指令. ...

  3. Git基础及进阶-系统总结

    Git基础及进阶-系统总结 by 小强 2019-07-01 考虑到入职后不仅需要熟练掌握git的基本使用,在企业实际操作中还涉及一些进阶指令.作为一个程序员,熟练使用工具是一项基本技能,也是程序员的 ...

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

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  5. [转] Git 基础 - 打标签

    2.6 Git 基础 - 打标签 打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列 ...

  6. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  7. 实践中的Git常用指令分析

    从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...

  8. git基础及分支

    关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

  9. 《Pro Git》笔记2:Git基础操作

    第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

随机推荐

  1. Jenkins 关闭和重启的实现方式

    关闭jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址http://localhost:8080/ , 那么我只需要在浏览器地址栏上敲下 htt ...

  2. Table.ReorderColumns移动…Reorder…(Power Query 之 M 语言)

    数据源: 至少两列 目标: 列顺序重新排列 操作过程: 选取待移动的列>鼠标拖放列标题 选取待移动的列>[转换]>[移动]>选取 M公式:  = Table.ReorderCo ...

  3. 数组队列如何手撕?解密ArrayBlockingQueue的实现内幕!

    队列 聊起队列,你一定会联想到一个与队列相似的数据结构:栈. 为了更好的理解什么是队列,我们将它和栈来比较一下: 队列的特点是:先进先出,如下图,1先进,1就先出. 图1:队列的图解 栈的特点是:先进 ...

  4. CF1092B Teams Forming 题解

    Content 有 \(n\) 个学生,每个学生有一个能力值 \(a_i\).现在想把学生两两分成一组,但是不能让每个组里面的学生能力值不相同,因此可以通过刷题来提升自己的能力值,每次解出一道题,能力 ...

  5. LuoguP7679 [COCI2008-2009#5] JABUKA 题解

    Content Mirko 拥有 \(R\) 个红苹果和 \(G\) 个绿苹果,他想把他分给若干个朋友,使得所有朋友分得的红苹果个数和绿苹果个数都一样.现给定 \(R,G\),请你帮助 Mirko 找 ...

  6. Caused by: java.lang.NoClassDefFoundError: javax/jms/Message报错

    Caused by: java.lang.NoClassDefFoundError: javax/jms/Message at java.lang.Class.getDeclaredMethods0( ...

  7. CountDownLatch源码阅读

    简介 CountDownLatch是JUC提供的一个线程同步工具,主要功能就是协调多个线程之间的同步,或者说实现线程之间的通信 CountDown,数数字,只能往下数.Latch,门闩.光看名字就能明 ...

  8. windows10 c++获取本机IPv4,ipv6,查询本机Ipv4,ipv6

    1.关于 演示环境: win10+VS2017 2.支持 需要下面的库支持: ws2_32.lib 需要下面的宏,添加到项目属性-> c/c++ -> 预处理器定义 _WINSOCK_DE ...

  9. 【LeetCode】962. Maximum Width Ramp 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 单调栈 日期 题目地址:https://leetco ...

  10. 为什么加密后的数据往往都是base64输出而不是hex16进制输出

    通常加密后的数据都是字节数组,比如流行的aes128对称加密,还有Rsa非对称加密,加密后得到了一个字节数组,这个字节数组存在内存中,往往我们需要输出得到我们人眼能看到的字符. 加密aes(xxx) ...