本地库初始化

git init

效果:

注意: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡 乱修改。

设置签名

其实就是为了区分不同开发人员的身份需要设置一下自己的信息,包括用户名和密码,有两个级别:项目级别和系统用户级别

项目级别/仓库级别:仅在当前本地库范围内有效

# 为了区分这里的用户名加上后缀project的缩写
git config user.name moti_pro
# 添加邮箱标签
git config user.email 1111@qq.com
# 查看配置结果
cat .git/config

系统用户级别:登录当前操作系统的用户范围

# 添加系统用户名Git标签
git config --global user.name moti_glb
# 添加系统用户邮箱Git标签
git config --global user.email @qq.com
# 查看配置结果
git config --list

级别优先级

  • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
  • 如果只有系统用户级别的签名,就以系统用户级别的签名为准
  • 二者必须有一个

基本操作

查看工作区、暂存区状态

git status

将工作区的“新建/修改”添加到暂存区

git add [file name]

将暂存区的内容提交到本地库

git commit -m "commit message" [file name]

新建一个文件先提交到暂存区,再提交到本地库

@Ī▒▒ MINGW64 /e/GitLearn/project1 (master)
$ vim file1.txt @Ī▒▒ MINGW64 /e/GitLearn/project1 (master)
$ git add file1.txt
warning: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory. @Ī▒▒ MINGW64 /e/GitLearn/project1 (master)
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached …" to unstage)
new file: file1.txt @Ī▒▒ MINGW64 /e/GitLearn/project1 (master)
$ git commit -m "第一次提交" file1.txt
warning: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory.
[master (root-commit) f6bccb6] 第一次提交
warning: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory.
file changed, insertions(+)
create mode file1.txt @Ī▒▒ MINGW64 /e/GitLearn/project1 (master)
$ git log
commit f6bccb66ac527360ea69003524e499831e509e0b
Author: moti_pro @qq.com
Date: Sun Dec :: +
第一次提交

查看日志

# 多屏显示控制方式: 空格向下翻页 b 向上翻页 q 退出
git log
# 其他形式
git log --pretty=oneline
git log --pretty=oneline
git reflog

版本的前进后退

# 基于索引值操作[推荐]
git reset --hard [局部索引值]
git reset --hard a6ace91
# 使用^符号:只能后退
git reset --hard HEAD^  注:一个^表示后退一步,n 个表示后退 n 步
# 使用~符号:只能后退 注:表示后退 n 步
git reset --hard HEAD~n

删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库。

操作:git reset --hard [指针位置]

  • 删除操作已经提交到本地库:指针位置指向历史记录ID
  • 删除操作尚未提交到本地库:指针位置使用 HEAD

比较文件差异

# 将工作区中的文件和暂存区进行比较
git diff [文件名]
# 将工作区中的文件和本地库历史记录比较
git diff [本地库中历史版本] [文件名]
# 不带文件名比较多个文件
git diff

分支管理

# 创建分支
git branch [分支名]
# 查看分支
git branch -v
# 切换分支
git checkout [分支名]

新建second分支,并切换

合并分支

  1. 切换到接受修改的分支(被合并,增加新内容)上 。git checkout [被合并分支名]
  2. 第二步:执行 merge 命令。 git merge [有新内容分支名]

解决冲突

冲突的表现

冲突的解决

  1. 编辑文件,删除特殊符号
  2. 把文件修改到满意的程度,保存退出
  3. git add [文件名]
  4. git commit -m “日志信息”

注意:此时 commit 一定不能带具体文件名

Git推送到GitHub

在本地的git上进行如下操作

  • 创建远程库地址别名
# 查看当前所有远程地址别名
git remote -v
# 添加地址别名
git remote add [别名] [远程地址]

  • 推送
git push [地址别名] [分支名]

注意:如果是第一次提交的话需要GitHub的用户名和密码

  • 克隆

在本机新建一个文件夹,然后进入,执行下面命令

git clone [上面复制的地址]
# 注意这里也需要输入用户名和密码

可以看到,成功将github上的my_project克隆下来

效果
  • 完整的把远程库下载到本地
  • 创建 origin 远程地址别名
  • 初始化本地库
  • 团队成员邀请

输入对方github账号,对方会受到邀请邮件,确认后,对方就可以向这个仓库远程提交了。

  • 拉取
# 拉取+合并
pull=fetch+merge
# 拉取
git fetch [远程库地址别名] [远程分支名]
# 合并
git merge [远程库地址别名/远程分支名]
拉取+合并
git pull [远程库地址别名] [远程分支名]
  • 解决冲突
  • 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉 取。 先 Pull,修改之后再 Push
  • 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
  • 跨团队协作

之后在你的github仓库上就多出一个仓库

克隆到本地后,修改,然后再推送到自己账号里的仓库。

此时,修改的只是你自己账号里的仓库,最原始的仓库(你从别那里Fork的)并没有发生改变。这时候你需要如下操作

之后对方的账户会收到消息

点击这里可以看到修改的地方

  • SSH 免密登录
  1. 进入当前用户的家目录 cd ~
  2. 删除.ssh 目录 rm -rvf .ssh
  3. 运行命令生成.ssh 密钥目录 ssh-keygen -t rsa -C [github账号的邮箱]
  4. 进入.ssh 目录查看文件列表 cd .ssh
  5. 查看 id_rsa.pub 文件内容 cat id_rsa.pub
  6. 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys
  7. New SSH Key
  8. 输入复制的密钥信息
  9. 回到 Git bash 创建远程地址别名 git remote add [别名] [ssh方式的仓库链接]
  10. 推送文件进行测试

使用 Git和Github的更多相关文章

  1. 简单使用Git和Github来管理自己的代码和读书笔记

    原文链接:http://my.oschina.net/bxxfighting/blog/378196   先注册github.com的账号官方网站: https://github.com/ 注册界面, ...

  2. git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议

    1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...

  3. git与github安装、配置、pull、push

    操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...

  4. 转:sublime上使用git连接github

    "工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...

  5. git与github使用

    Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...

  6. linux下git以及github的连接与使用

    简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git.在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作 ...

  7. Git和Github简单教程

    原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...

  8. Git和Github简单教程(转)

    这篇文章只挑一部分命令来讲,差不多够用就行的程度.如果需要其他命令,到时候再去其他地方了解就行了先在Github上写好再搬过来的:本文Github链接 目录: 零.Git是什么 一.Git的主要功能: ...

  9. WebStorm和sublime上使用git连接github(转)

    WebStorm使用git连接github的方法: 用webstorm上传代码时,首先要先下载git,网址一搜就可以搜到,安装git,并且把ssh配置到github上.然后开始配置webstorm,打 ...

  10. git和github使用方式

    git 和github github是远程管理代码的服务器的名称 git代码管理系统 (git既然是一个系统,所以说git也有一些命令) git操作过程 首先在本地建立一个仓库,用来把代码提交到git ...

随机推荐

  1. 14.libgdx的一些坑记录(持续更新)

    1. internal的文件路径 无法用list获取目录下文件     2.动态打包散图无法放入资源管理器,只能在资源加载器打包后的散图再合成打包,但都不如提前打包 3.资源加载器读入以texture ...

  2. python 处理图像出现The lower bounary is neither an array of the same size and same type as src, nor a scalar in function inRange

    在用python处理图像过程中出现如下错误 导致这个错误的原因是im是二维,而lower_green和upper_green是三维,所以无法用inRange处理. 由上图可以看出image本来是具有高 ...

  3. 从遇见到信任 | Apache Dubbo 的毕业之旅

    所谓信任,就是多一次机会. 2018年2月16日,Apache Dubbo 加入 Apache 基金会孵化器. ... 2019年5月16日,Apache 软件基金会董事会决议通过了 Apache D ...

  4. 阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态

    摘要: 应用实时监控服务 (ARMS) 是一款APM类的监控产品. 用户可基于 ARMS 的前端.应用.自定义监控,快速构建实时的应用性能和业务监控能力.ARMS 让所有性能问题“一屏了然”,不遗余力 ...

  5. Simpson公式的应用(HDU 1724/ HDU 1071)

    辛普森积分法 - 维基百科,自由的百科全书 Simpson's rule - Wikipedia, the free encyclopedia 利用这个公式,用二分的方法来计算积分. 1071 ( T ...

  6. Chrome接口请求一直是pending状态,但接口实际上是正常的

    1.现象 个别机器突然出现Chrome访问我司产品异常,本该通过接口获取的数据没有呈现,之前都是好好的,而且其他机器同样用同版本Chrome访问正常. 出现问题的机器重装Chrome问题依然存在,直到 ...

  7. php 向数组 首位插入 和 尾部插入

    首位插入: <?php$queue = array("orange", "banana");array_unshift($queue, "app ...

  8. js实现方块的碰撞检测

    文章地址:https://www.cnblogs.com/sandraryan/ 个人感觉.方块的碰撞检测比圆形麻烦~~ <!DOCTYPE html> <html lang=&qu ...

  9. supersockets服务器配置热更新

    Keywords: 配置,热更新 此功能能够允许你在不重启服务器的前提下更新服务器实例的配置. (仅限1.6.5及其以上版本)

  10. [转载] CentOS系统开机自动挂载光驱 和 fstab文件详解

    参考 http://blog.itpub.net/12272958/viewspace-676977/ 一.开机自动挂载光驱 1.按习惯,root用户,在/media目录下建立目录cdrom——mkd ...