学习Git

概念

1、 什么是Git:
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,是用来保存工程源代码历史状态的命令行工具。
2、Git与Github:
Git是版本控制系统,Github是在线的基于Git的代码托管服务。
3、分布式:
在分布式版本控制系统里,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

下载安装

1、下载
官网:https://git-scm.com/ 直接百度
2、安装
Windows 上安装,可默认配置直接next安装完成,其他可参考 Git安装
3、配置
安装好之后,
右键选择Git Bash Here,会打开一个终端
在这里插入图片描述
会打开一个终端

在命令行输入

     $ git config --global user.name "username"
      $ git config --global user.email "myname@email.com"
       $ git config --list

设置用户名和密码并查看是否设置成功
4、问题:
Git用户名邮箱有什么作用,和github账号有什么关系?
Git本地库推送到远端(github)时会匹配邮箱,如果一致会认定这次这个push是账户拥有者自己做的,跟直接登
录到GitHub,从网站上修改,是相同的,修改人是一样,就是账户拥有者。参考Git账户与GIthub账号关系

初步使用

参考

初始化

在Git Bash Here命令行终端进入自定义的工作目录(保存代码的地方),或是直接在工作目录中打开命令行,输入

$git init

即可初始化一个本地GIt库,这时候你当前工作目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。

在这里插入图片描述
该目录是隐藏目录,win10下可以在文档界面的功能区的查看下勾选隐藏项目,如下:
在这里插入图片描述
win7在文档界面的组织的文件及文件夹选项中(大概0.0)

上行更新

大致示意如下:

添加跟踪暂存 add
提交 commit
推送 push
工作区
暂存区
本地库
远端库

1、初始化一个版本库
2、新建\修改一个文件
3、将文件添加到暂存区
4、提交到本地库,后面备注为提交说明

git init
git add 1.c
git commit -m "新增1.c"

在这里插入图片描述
5、推送到远端版本库
第一次向远端(此使用远端为github)推送内容时步骤如下:
a、需要一个GitHub账号
Github官网
b、由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要设置密钥。cmd命令行中输入
ssh-keygen -t rsa –C “youremail@example.com”

三次回车后会在用户目录 .ssh目录下生成了私钥和公钥,也可填入文件名密码在用户目录当前目录生成,其中.pub后缀为公钥
在这里插入图片描述

将公钥添加到github中 在settings菜单下ssh中,点击new ssh 按键后如下

在这里插入图片描述

将公钥内容复制到key栏中,填入一个title名后,Add SSH key完成添加。
c、在github上创建一个仓库用于接收本地库推送
点击右上角+号选择new repository创建一个仓库

在这里插入图片描述

d、关联本地和远端仓库
在这里插入图片描述

e、推送到远端仓库

$ git push -u origin master

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

在这里插入图片描述

完成
在这里插入图片描述

我这次操作弹出了登入窗口,需要输入账号密码才完成推送。

更改和远端的链接方式
(还没试>_<)

下行更新

将在Github或是其他平台的仓库,同步到本地。
换一个工作目录将刚刚更新的远端仓库克隆下来

$ git clone https://github.com/shazip/we

在这里插入图片描述

版本控制

1、版本回退
修改提交的版本
经过两次修改后出现了3个版本状态
在这里插入图片描述
1.c当前内容如下
在这里插入图片描述
输入

git reset  --hard HEAD^

退回到上一版本。

那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。

在这里插入图片描述
此时1.c内容
在这里插入图片描述

但是现在我想回退到最新的版本,222222内容要如何恢复呢?我们可以通过版本号回退,使用命令方法如下:
git reset --hard 版本号 ,可以通过git reflog命令获取到版本号

在这里插入图片描述
退回操作如下
在这里插入图片描述
此时1.c内容
在这里插入图片描述
2、版本检出
检出当前暂存的版本
此时将1.c修改增加“333333”但并未使用git add命令暂存
在这里插入图片描述
使用git checkout – 1.c后1.c中内容“333333”没有了
在这里插入图片描述
3、创建分支
使用git branch test 创建一个名为test的分支
使用git checkout test检出test新分支内容到工作区,当前分支切换为新分支
也可使用git checkout –b test直接创建并切换到新分支
在这里插入图片描述
4、合并分支
将目标分支合并到当前分支上,在切换到master分支后,使用git merge text命令可将text分支合并到master分支

先在text分支下修改内容并提交
在这里插入图片描述
再切换到master分支
在这里插入图片描述
使用git merge test命令可将text分支合并到master分支
在这里插入图片描述

!合并冲突
当出现合并时当前分支和目标分支有相斥的内容,使用合并命令时会出现冲突,需要修改内容并提交后在合并

在两个分支内修改不一致内容,修改后必须提交后才能切换分支

在这里插入图片描述
在这里插入图片描述
此时在master上合并test分支时会提示冲突
查看1.c内容可以发现冲突内容都被标记出来存在文件中

在这里插入图片描述
再直接选择修改内容到自己想要的结果后提交
在这里插入图片描述
还可以使用rebase指令进行合并 参考

其他

git help指令查询git指令
在这里插入图片描述

Git基本常用命令如下:

指令说明
git init把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX把xx文件添加到暂存区去。
git commit –m “XX”提交文件 –m 后面的是注释。
git status查看仓库状态
git diff XX查看XX文件修改了那些内容
git log查看历史记录
git reset --hard HEAD^或者 git reset --hard HEAD~回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )
git reflog查看历史记录的版本号id
git checkout – XX把XX文件在工作区的修改全部撤销。
git rm XX删除XX文件
git remote add origin 远程仓库地址关联一个远程库
git push –u origin master把当前master分支推送到远程库(第一次要用-u 以后不需要)
git clone 远程仓库地址从远程库中克隆
git checkout –b test创建dev分支 并切换到test分支上
git branch查看当前所有的分支
git checkout master切换回master分支
git merge dev在当前的分支上合并dev分支
git branch –d dev删除dev分支
git branch XX创建XX分支
git stash把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list查看所有被隐藏的文件列表
git stash apply恢复被隐藏的文件,但是内容不删除
git stash drop删除文件
git stash pop恢复文件的同时 也删除文件
git remote查看远程库的信息
git remote –v查看远程库的详细信息
git push origin masterGit会把master分支推送到远程库对应的远程分支上

使用图形化版本控制软件

可以使用Sourcetree软件进行版本控制
安装时需要注册账号,可以使用Sourcetree跳过登陆跳过登陆步骤,我当前测试版本为3.1.3版本完成安装,早期版本只需添加accounts.json文件即可。

1、打开安装文件,提示需要登陆账号
2、文件地址栏直接输入 %LocalAppData%\Atlassian目录,接着进入SourceTree目录,创建accounts.json文件,并修改accounts.json内容如下:

[
  {
    "$id": "1",
    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
    "Authenticate": true,
    "HostInstance": {
      "$id": "2",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
      "Host": {
        "$id": "3",
        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
        "Id": "atlassian account"
      },
     "BaseUrl": "https://id.atlassian.com/"
    },
    "Credentials": {
      "$id": "4",
      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
      "Username": "",
      "Email": null
    },
    "IsDefault": false
  }
]

3文件地址栏直接输入%LocalAppData%\Atlassian,进入“SourceTree.exe_Url_iayhtc13zv3obzuz5vchezjs1az2q5ef”(注该目录可能和版本相关,不同版本的路径可能不完全一样。)
接着进入"3.1.3.3158"目录,打开user.config文件,在
“<SourceTree.Properties.Settings>”
后面加入以下代码。

<setting name="AgreedToEULA" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="AgreedToEULAVersion" serializeAs="String">
                <value>20160201</value>
            </setting>

安装完成后就可以使用Sourcetree管理版本库了
使用参考Sourcetree使用版本控制原则与命令行操作一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值