git 相关学习笔记

本贴最后更新于 2547 天前,其中的信息可能已经东海扬尘

GIT

分布式版本控制系统,跟踪并管理修改而非文件

1.配置

git config --global user.name "your name"
git config --global user.email "email.@example.com"

  • 文件添加到本地仓库 git add(工作区添加到暂存区)

git add readme.txt

  • 文件提交到本地仓库 git commit(暂存区提交到版本库)

git commit -m "wrote a readme file"

  • 仓库当前状态

git status

  • 查看不同 git diff

git diff readme.txt

  • 查看提交日志 git log
    git log (--pretty=online)

  • 回退(未 push 到远程仓库,只针对本地仓库)

git reset -- hard HEAD^
回退到上一个版本,HEAD 为当前版本,上一版本则是 HEAD^,上上一版本则是 HEAD^^

git reset --hard 3628165
3628165 为你需要回退的版本号,可通过 git log 查看,版本号不需要写全,只需前几位即可,但一定要唯一

git checkout -- [文件]
说明:git checkout readme.txt,将 readme.txt 在工作区的修改全部撤销
情况一:还未 git add,则回退到版本库一模一样
情况二:已经 git add,则回退到暂存区的状态
针对二:git reset HEAD readme.txt 可以把暂存区的修改撤销掉(unstage),重新放回工作区

  • 查看自己的每一次命令

git reflog

  • 删除

git rm

  1. github 建立远程仓库

  • 第 1 步:创建 SSH Key。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开 Shell(Windows 下打开 Git Bash),创建 SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
  • 第 2 步:登陆 GitHub,打开“Account settings”,“SSH Keys”页面
    然后,点“Add SSH Key”,填上任意 Title,在 Key 文本框里粘贴 id_rsa.pub 文件的内容

  • 第 3 步:建立本地库和 github 的链接

新建库

echo "# smart4j" >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/admin-wl/smart4j.git git push -u origin master

已有库和 github 的链接

git remote add origin https://github.com/admin-wl/smart4j.git git push -u origin master

使用命令 git push -u origin master 第一次推送 master 分支的所有内容
使用命令 git push -u origin master 第一次推送 master 分支的所有内容

  • 克隆

git clone 地址

  1. 分支

  • 创建并切换分支(git checkout -b [分支名])

git checkout -b dev
-b 参数表示创建并切换,相当于以下两条命令

git branch dev git checkout dev
  • 创建分支

git branch [name]

  • 切换分支

git checkout [name]

  • 查看当前分支

git branch

  • 合并指定分支分支到当前分支(git merge [指定分支名])

git merge dev
说明: 为 fast forward 合并,看不出来曾经做过合并。

git merge --no--ff -m "test" dev
说明: 合并分支时,加上--no-ff 参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而 fast forward 合并就看不出来曾经做过合并。

  • 删除分支

git branch -d dev

  • 查看分支合并图

git log --graph

  1. 解决 bug 方法

git stash 当前工作现场“储藏”起来,等以后恢复现场后继续工作
恢复 stash
一是用 git stash apply 恢复,但是恢复后,stash 内容并不删除,你需要用 git stash drop 来删除;
另一种方式是用 git stash pop,恢复的同时把 stash 内容也删了

  • 强行删除未合并的分支

git branch -D

  • 查看远程仓库信息

git remote

  • 创建远程 origin 的 dev 分支到本地

git checkout -b dev origin/dev

  • 把最新的提交从 origin/dev 抓下来

git pull

  1. 多人合作

  • 查看远程库信息,使用 git remote -v;
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/branch-name;
  • 从远程抓取分支,使用 git pull,如果有冲突,要先处理冲突。
  1. 标签

  • 命令 git tag 用于新建一个标签,默认为 HEAD,也可以指定一个 commit id;
  • git tag -a -m "blablabla..."可以指定标签信息;
  • git tag -s -m "blablabla..."可以用 PGP 签名标签;
  • 命令 git tag 可以查看所有标签。
  • 命令 git push origin 可以推送一个本地标签;
  • 命令 git push origin --tags 可以推送全部未推送过的本地标签;
  • 命令 git tag -d 可以删除一个本地标签;
  • 命令 git push origin :refs/tags/可以删除一个远程标签。
  1. 搭建 git 服务器

  • 第一步,安装 git:

$ sudo apt-get install git

  • 第二步,创建一个 git 用户,用来运行 git 服务:

$ sudo adduser git

  • 第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到/home/git/.ssh/authorized_keys 文件里,一行一个。

  • 第四步,初始化 Git 仓库:

先选定一个目录作为 Git 仓库,假定是/srv/sample.git,在/srv 目录下输入命令:
$ sudo git init --bare sample.git

  • 第五步,禁用 shell 登录

编辑/etc/passwd 文件完成。找到类似下面的一行:
git❌1001:1001:,,,:/home/git:/bin/bash
改为:
git❌1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git 用户可以正常通过 ssh 使用 git,但无法登录 shell,因为我们为 git 用户指定的 git-shell 每次一登录就自动退出。

  • 第六步,克隆远程仓库
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 407 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖 • 1 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 118 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 111 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 2 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 469 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 2 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 735 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖 • 1 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖 • 4 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 739 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 3 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 2 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 3 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Anytype
    3 引用 • 31 回帖 • 28 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 143 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 615 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖 • 2 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 2 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    4 引用 • 16 回帖 • 196 关注
  • AWS
    11 引用 • 28 回帖 • 7 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖