GIT 安装和使用

一、GIT 介绍

  1. Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务。

  2. GIT 下载页面 https://git-scm.com/downloads

  3. 相关书籍 https://git-scm.com/book/zh/v2

  4. GIT 工作流程

    • Workspace(工作区):就是电脑里看到的目录。
    • Stage/Index(暂存区):一般存放在 ".git目录下" 下的index文件中。
    • Repository(本次仓库/版本库):工作区有一个隐藏目录.git
    • Remote(远程仓库):Github 或者是公司内部搭的服务器

二、GIT 安装

  1. 下载完成后,选择安装路径,进行安装,我是用的是Git 2.23.0

  2. 选择组件

  3. 选择默认编辑器

  4. 选择命令行工具

  5. 选择客户端

  6. 选择安全连接方式

  7. 检出和提交换行格式

  8. 默认终端

  9. 其它选项

  10. 实验性功能

  11. 安装成功

三、GIT 使用

1. 配置

  1. 检查是否安装成功。在桌面右击Git Bash Here,出现终端,输入命令 git --version 查看版本号。
  2. Git 配置文件
    • ``/etc/gitconfig文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有--system选项的git config` 时,它会从此文件读写配置变量。
    • ~/.gitconfig~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。
    • 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
    • 每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
    • 在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users\$USER)的 .gitconfig 文件。 Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。
  3. 配置用户名和邮箱
    • 设置用户名: git config --global user.name "abc"
    • 设置邮箱: git config --global user.email "xxx@xx.com"
    • 查看用户名:git config user.name
    • 查看邮箱:git config user.email
  4. 查看当前配置信息 git config --list
  5. 使用帮助信息 git help 命令

2. 创建版本库

  1. 版本库又名仓库,英文名repository,这是一个目录,目录里的文件被Git 管理。所以创建一个版本库只需要在一个空目录里使用 命令即可。

    git init

但是要注意,git 只能跟踪文本文件的改动,避免出现编码问题,所有文本最好使用标准的 无BOm 的UTF-8 编码。

  1. 添加文件到git 仓库

    • 先任意编辑一个文本文档。比如一个readme.txt,随意填写一些内容。
    # 首先将文件添加到 sage
    git add readme.txt
    # 提交到 Repository 的当前分支,我们创建 git版本库的时候,会自动创建一个master 分支。
    git commit -m "My first submission."
    # 查看还有那些文件没有提交
    git status
    # 修改readme.txt 文件,可以使用 git status 查看是否有修改。查看workspace 与 Repository,当stage 不是空,对比的是 workspace 和 stage 的差异。
    git diff readme.txt
    # 显示摘要而非整个 diff
    git diff --stat
    # 查看 Repository 和 stage 的差异。
    git diff --cached readme.txt
    git diff --staged
    # 查看 Repository 和 workspace 的差异
    git diff HEAD -- readme.txt
    # 然后再使用以上几步,进行提交
  2. 版本回退

    # 查看历史记录,记录会按时间顺序逆序展示
    git log
    # 如果感觉输出信息太多,可以使用参数
    git log --pretty=oneline
    # HEAD 表示当前版本,id 就是那个很长度字符串。上个版本就是 HEAD^,上上个就是 HEAD^^。以此类推,如果比较多,可以使用 HEAD~100
    git reset --hard HEAD^
    # 如果要想恢复,需要使用 id,每个人的都不一样,id 不用写完,但是要和已有的不冲突
    git reset --hard fb110
    # 如果回退后,希望恢复,但是忘记id了,可以查看命令记录,有相应的id号。顺序也是按照时间逆序
    git reflog
    # 撤销workspace的修改,将Repository的最近文件覆盖workspace。没有--,就变成了“切换到另一个分支”的命令
    git checkout -- readme.txt
    # 撤销 stage 的修改。使用已提交到Repository的最近文件覆盖stage
    git reset HEAD -- readme.txt
    # 如果已提交到Repository,则需要使用版本回退
    git reset --hard HEAD^
    # 自己错删文件,需要恢复
    git checkout -- test.txt
    # 确定要删除库中的文件
    git rm test.txt
    git commit -m "remove test.txt"

每次提交的信息以时间逆序排列,HEAD 就是最新记录的指针,可以快速的找到需要的记录。

3. 远程仓库

  • 创建SSH Key

    ssh-keygen -t rsa -C "xxx@xx.com"
  • 将用户目录下的.ssh 目录下的公钥内容复制到 https://github.com/settings/keys 中即可,title 任意。

  • 由于现在是 Remote 上的仓库是空的,所以 Repository 连接 Remote

    # 将 Repository 与 Remote 相连。添加后,远程库的名字就是origin,这是Git默认的名称。
    git remote add origin git@github.com:username/repositoryname.git
    # 现象 remote 复制到本地
    git clone git@github.com:JackingQueen/FirestTest.git
    # 将 Repository 的当前分支 master 推送到 origin
    git push -u origin master

4. 分支管理

  • 创建与合并分支

    # 创建other1分支
    git branch other1
    # 切换other1分支
    git checkout other1
    # 快速创建并切换分支,相当于上面两个命令
    git checkout -b other1
    # 创建并切换分支也可以使用
    git switch -c other1
    # 查看当前分支
    git branch
    # 合并other1分支到当前分支,这次合并是“快进模式(Fast-forward)”,不是每次合并都能Fast-forward
    git merge other1
    # 切换回 master
    git checkout master
    # 切换回已有分支也可以使用
    git switch master
    # 删除 other1分支
    git branch -d other1
  • 解决冲突

    # 以上是在当前分支要超过合并分支的时候,可以使用快进模式,但是如果两个分支对同一文件进行了不一样的操作,就会出现冲突
    git switch -c other2
    # 加入新内容 123456789
    vi test.txt
    git add test.txt
    git commit -m "o2 commit"
    git switch master
    # 加入新内容 123abc
    vi test.txt
    git add test.txt
    git commit -m "master commit"
    # 此时将other2 合并到 master将出现冲突,合并失败
    git merge other2
    # 使用命令查看冲突文件
    git status
    # 活着使用 git log 来看
    git log --graph --pretty=oneline --abbrev-commit
    # 查看合并文件冲突的地方,手动解决完冲突后在提交
    git add test.txt
    git commit -m "test merge"
    # 删除 other2 分支
    git branch -d other2 # 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
    # 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
    git merge --no-ff -m "merge with no-ff" dev
  • bug 分支 和 Feature 分支

    #####bug 分支#####
    # 当前工作正执行到一半,但是突然有新的 bug 需要修复,可以先使用 stash 将现场储藏起来,等到以后恢复现场继续工作
    git stash
    # 查看刚刚的工作现场
    git stash list
    # 第一种:恢复后,stash内容并不删除
    git stash apply
    # 需要使用命令来删除
    git stash drop
    # 第二种:恢复的同时把stash内容也删了
    git stash pop
    # 再次查看,就看不到什么内容了
    git stash list
    # 将某个提交 复制到当前分支,需要使用这次提交的 id。比如 把bug提交的修改“复制”到当前分支,避免重复劳动
    git cherry-pick 4c805e2 #####Feature分支#####
    # 开发一个新feature,最好新建一个分支。如果要丢弃一个没有被合并过的分支
    git branch -D dev
  • 多人协作

    # 查看远程库的信息
    git remote
    # 显示更详细的信息
    git remote -v
    # 推送分支
    # bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug
    # feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
    # master分支是主分支,因此要时刻与远程同步
    git push origin master
    # dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步
    git push origin dev # clone时,只能看到本地的master分支
    git remote add origin git@github.com:JackingQueen/FirestTest.git
    # 如果push 失败,就先抓取分支
    git pull
    # 如果 pull 也失败,就设置dev和origin/dev的链接
    git branch --set-upstream-to=origin/dev dev
    # 最后在 pull ,然后 push # rebase操作可以把本地未push的分叉提交历史整理成直线
    git rebase
    git log --graph --pretty=oneline --abbrev-commit

5.标签管理

  • Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动)。

    # 创建标签
    git tag v1.0
    # 查看所有标签
    git tag
    # 根据 commid 打标签
    git tag v0.9 f52c633
    # 查看标签信息
    git show v0.9
    # 可以携带参数。用-a指定标签名,-m指定说明文字。
    git tag -a v0.1 -m "version 0.1 released" 1094adb
    # 删除本地标签
    git tag -d v0.1
    # 推送标签
    git push origin v1.0
    # 一次性推送全部尚未推送到远程的本地标签
    git push origin --tags
    # 删除远程标签,先删本地,再删远程
    git tag -d v0.9
    git push origin :refs/tags/v0.9

6. 自定义

  • 修改颜色: git config --global color.ui true
  • 忽略特殊文件:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
  • 配置别名:git config --global alias.st status

GIT 安装和使用的更多相关文章

  1. CentOS 7 Git安装

    Git安装 yum -y install git 安装后,在srv目录下建立Git的目录. 初始化一个git空仓库 git init --bare project.git 增加用于访问git仓库的用户 ...

  2. Git安装

    前面说了很多废话,说得再好,还不如实践一次.要想使用Git,首先得安装.这次实验主要是实践怎样安装Git. 安装与检查是否安装成功 1. 在Linux(Ubuntu)上安装 上篇的Git简介已经介绍过 ...

  3. Git安装与配置

    一.简介 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...

  4. 版本管理之Git(二):Win7上Git安装及简单配置过程

    一.安装包 msysgit(Windows版本的Git) 下载地址:http://code.google.com/p/msysgit/downloads/list?q=full+installer+o ...

  5. git安装及命令使用和github网站

    最近参与别人的github项目时,学习了git的使用,首先需要在https://github.com/网站上注册账号和邮箱,然后fork一个开源项目,然后下载目前Windows下最新版本的git,下载 ...

  6. Git 安装

    安装参考资料: http://lzw.me/a/msysgit-tortoisegit-win-git.html http://blog.csdn.net/qwiwuqo/article/detail ...

  7. 转 git安装配置

    Win7上Git安装及配置过程 一.安装说明 1.Git在windows平台上安装说明. Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 ...

  8. git学习1:git安装和配置

    Git是什么?世界上最先进的分布式版本控制系统,记录了一个文本文件的每次一修改信息,比如,一篇散文,从草稿到最终出版,经历过无数次修改,修改了标点符号形成一个版本,老师帮助修改形成一个版本,同学帮忙修 ...

  9. ubuntu下git安装及使用

    ubuntu下git安装及使用   其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...

  10. 分布式管理系统-git安装及配置

    安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入: $ git config - ...

随机推荐

  1. 攻防世界-web -高手进阶区-PHP2

    题目 首先发现源码泄露 /index.phps 查看源代码 即: <?php if("admin"===$_GET[id]) { echo("<p>no ...

  2. Android Okhttp POST提交键值对

    以前的项目网络连接那块一直坚持使用HttpClient,总是会出现一些莫名奇妙的问题,现在新的项目使用了OKHttp网络框架,发现超级好用,上网再了解下,发现OkHttp口碑真的不错,对比之下Http ...

  3. java获取客户端请求IP地址(公网ip)

    之前写了一个获取ip地址的方法,但是放网上一查显示此Ip地址是局域网ip地址,要是想获取请求端的真实公网ip地址怎么样了,看了一些别人的博客后发现,想要获取客户端的公网ip必须借助第三方. packa ...

  4. MySQL报错合集解决办法: server has gone away, @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON

    server has gone away: 如下图 执行以下命令 show global variables like '%timeout%'; set global interactive_time ...

  5. AIX运维常用命令

    目前传统的磁盘管理仍有不足:如果下Unix系统中的存储容量需要扩展,文件系统就必须停止运行,然后通过重构分区的手段来进行分区和文件系统的扩容.一般采用的方法是先备份该文件系统并删除其所在的分区,然后重 ...

  6. SSIS-WMI监视文件夹

    在文档交互数据时,通常会排个job每隔几分钟执行来解析文档,但是jOb不能排的太频繁了,所以文档不能及时的被解析. 在SSIS中可以使用WMI这个组件来监视文件夹,一旦有新文档丢入就马上执行解析程序, ...

  7. HTTP中分块编码(Transfer-Encoding: chunked)

    转自: 妙音天女--分块传输编码~ 参考链接: HTTP MDN--HTTP协议 一.背景: 持续连接的问题:对于非持续连接,浏览器可以通过连接是否关闭来界定请求或响应实体的边界:而对于持续连接,这种 ...

  8. VUE的路由器的总结

    vue的路由器,我们在使用vue进行开发的时候,是必须用到的一个vue自带的组件,下面进行vue经常的操作的一些说明 1.vue-router的安装 在命令行里面使用 cnpm install vue ...

  9. 201871010102-常龙龙《面向对象程序设计(java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. Comet OJ 夏季欢乐赛 Gree的心房

    Comet OJ 夏季欢乐赛 Gree的心房 题目传送门 题目描述 据说每一个走进Gree哥哥心房的小姑娘都没有能够再走出来-- 我们将Gree哥哥的心房抽象成一个n \times mn×m的地图,初 ...