git使用以及相关命令

Git介绍

Git 是什么?

1. Git 是目前世界上最先进的分布式版本控制系统(没有之一)。

2. Git 有什么特点?

简单来说就是:高端大气上档次!

3. 那什么是版本控制系统?

如果你用 Microsoft Word 写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文
件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的 Word 文档就会变成n多个
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻
烦。
看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。
更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过 Email 发送一
份给她),然后,你继续修改 Word 文件。一天后,同事再把 Word 文件传给你,此时,你必须想想,发给她之
后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。

于是我们就可以使用git:不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管
理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以

  1. Git理解总结
    git,是一个分布式版本控制软件,最初目的是为更好地管理Linux内核开发而设计
    分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来

github或者gitee实际就可以充当这个服务器角色,其是一个开源协作社区
当我们通过git init创建或者git clone一个项目的时候,项目目录会隐藏一个.git子目录,其作用是用来跟踪管理版本库的

文件状态对应的,不同状态的文件在Git中处于不同的工作区域,主要分成了四部分:
工作区:相当于本地写代码的区域,
暂存区:暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中
本地仓库:提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库
远程仓库:远程的仓库,如 github

Git安装

在 Windows 上安装 Git
msysgit 是 Windows 版的 Git,从 http://msysgit.github.io/ 下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明 Git 安装成功!

安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因为 Git 是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和 Email 地址。你也许会担心,如
果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是
有办法可查的。
注意 git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当
然也可以对某个仓库指定不同的用户名和 Email 地址。

Git常用命令

  • git init 初始化仓库,默认为 master 分支
  • git add . 提交全部文件修改到缓存区
  • git add <具体某个文件路径+全名> 提交某些文件到缓存区
  • git diff 查看当前代码 add后,会 add 哪些内容
  • git diff --staged查看现在 commit 提交后,会提交哪些内容
  • git status 查看当前分支状态
  • git pull <远程仓库名> <远程分支名> 拉取远程仓库的分支与本地当前分支合并
  • git pull <远程仓库名> <远程分支名>:<本地分支名> 拉取远程仓库的分支与本地某个分支合并
  • git commit -m “<注释>” 提交代码到本地仓库,并写提交注释
  • git commit -v 提交时显示所有diff信息
  • git commit --amend [file1] [file2] 重做上一次commit,并包括指定文件的新变化
  • git branch 查看本地所有分支
  • git branch -r 查看远程所有分支
  • git branch -a 查看本地和远程所有分支
  • git merge <分支名> 合并分支
  • git merge --abort 合并分支出现冲突时,取消合并,一切回到合并前的状态
  • git branch <新分支名> 基于当前分支,新建一个分支
  • git checkout --orphan <新分支名> 新建一个空分支(会保留之前分支的所有文件)
  • git branch -D <分支名> 删除本地某个分支
  • git push <远程库名> :<分支名> 删除远程某个分支
  • git branch <新分支名称> <提交ID> 从提交历史恢复某个删掉的某个分支
  • git branch -m <原分支名> <新分支名> 分支更名
  • git checkout <分支名> 切换到本地某个分支
  • git checkout <远程库名>/<分支名> 切换到线上某个分支
  • git checkout -b <新分支名> 把基于当前分支新建分支,并切换为这个分支
  • git fetch [remote] 下载远程仓库的所有变动
  • git remote -v 显示所有远程仓库
  • git pull [remote] [branch] 拉取远程仓库的分支与本地当前分支合并
  • git fetch 获取线上最新版信息记录,不合并
  • git push [remote] [branch] 上传本地指定分支到远程仓库
  • git push [remote] --force 强行推送当前分支到远程仓库,即使有冲突
  • git push [remote] --all 推送所有分支到远程仓库
  • git checkout [file] 恢复暂存区的指定文件到工作区
  • git checkout [commit] [file] 恢复某个commit的指定文件到暂存区和工作区
  • git checkout . 恢复暂存区的所有文件到工作区
  • git reset [commit] 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
  • git reset --hard 重置暂存区与工作区,与上一次commit保持一致
  • git reset [file] 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
  • git revert [commit] 后者的所有变化都将被前者抵消,并且应用到当前分支
  • git stash 暂时将未提交的变化移除
  • git stash pop 取出储藏中最后存入的工作状态进行恢复,会删除储藏
  • git stash list 查看所有储藏中的工作
  • git stash apply <储藏的名称> 取出储藏中对应的工作状态进行恢复,不会删除储藏
  • git stash clear 清空所有储藏中的工作
  • git stash drop <储藏的名称> 删除对应的某个储藏

git冲突的场景,如何解决

一般情况下,出现分支冲突的场景有如下:
多个分支代码合并到一个分支时
多个分支向同一个远端分支推送

具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称
如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可
应用在命令中,就是push、pull、stash、rebase等命令下都有可能产生冲突情况,从本质上来讲,都是merge和patch(应用补丁)时产生冲突

当Git无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交

说说你对git rebase 和git merge的理解?区别?

这两种方法之间的最大区别在于,合并保留了作品的完整历史记录,包括按时间顺序排列,而Rebase使提交变得整洁,仅与分支上的作品相关。当审阅者审阅您的PR时,如果您选择合并,她将看到A,B,C,D,E,F提交,如果您选择Rebase,则只会看到C,D,E。

合并具有较高的可追溯性。无论与该公关相关如何,您都可以找到整个工作历史。但它可能对审稿人来说是痛苦的,因为该分支包括许多无关的犯罪,并且往往很难识别它们。

Rebase的确可以使PR整洁,干净且相关,而不会产生嘈杂的提交。审阅者可以轻松了解此PR的含义以及该分支内进行的更改。但是,如果您想跟踪存储库的详尽历史记录,可能并没有太大帮助。
Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。

Git本地仓库与远程仓库建立连接

初始化本地仓库

  1. 新建一个空文件夹,cd 进入该文件夹,打开命令行,输入: git init
  2. 在该目录下尝试创建一个txt文件,如fzy.txt
  3. 打开命令行,输入:git add fzy.txt, 将fzy.txt存到本地的暂存区
    也可以输入git add .将所有文件存到本地暂存区
  4. 打开命令行,输入:git commit -m “message”,提交到本地仓库

本地仓库和远程仓库建立连接

  1. 在gitee上创建一个远程仓库,获取http地址
  2. 打开本地仓库位置,在命令行中输入:git remote add origin 获取到的地址
  3. 输入:git pull origin master --allow-unrelated-histories
    会打开一个页面,输入i进入输入模式,随便输入一些东西,再esc,输入:wq
  4. 提交到远程仓库。输入git push -u origin master
    按照提示输入gitee的用户名和密码,将本地仓库提交到远程仓库。
    以后只需要输入git push origin master进行提交即可
  • Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

修改/新增的文件提交完整流程

  1. 将文件/文件夹添加到本地暂存区
  • 提交单个文件:git add file_name (提交当前目录全部文件:git add .)
  • 提交到本地仓库git commit -m “message”

从远程的仓库分支拉取最新文件
git pull origin master

推送到远程分支
git push origin master

创建本地分支
git branch:查看本地分支
git checkout -b dev:创建并切换到dev分支=>git check out dev + git branch dev
git merge : 将其它分支合并到当前分支
git branch -d :删除分支

创建远程分支
在gitee上添加dev分支

提交到远程dev分支
git push —set-upstream origin dev

注意:在命令git push -u origin master中 ,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值