Git 学习

本地操作

windows下安装msysGit
运行Git Bash

设置全局name和email:

$ git config --global user.name "qinyuchen"
$ git config --global user.email "xxx@xxx.xxx"

创建目录,并将此目录设置为版本库(repository),这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。

$ mkdir testgit
$ cd testgit
$ git init

在该目录下手动创建文件,如 t.txt
查看是否还有文件未提交 – >添加到暂存区 --> 提交到仓库 -->查看是否还有文件未提交

$ git status 
$ git add t.txt
$ git commit -m "t.txt提交"
$ git status 

修改文件内容,查看做了什么修改:

$ git diff t.txt

再次,提交:

$ git status 
$ git add t.txt
$ git commit -m "t.txt 2.0 提交"
$ git status 

查看历史记录:

$ git log

版本回退到上一个版本:

$ git reset --hard HEAD^

版本回退到上上个版本:

$ git reset --hard HEAD^^

版本回退到前100个版本:

$ git reset --hard HEAD~100

查看版本号:

$ git reflog

回退到指定版本:

$ git reset --hard 版本号

撤销修改:

  1. 直接手动修改文件,add并commit
  2. 回退到上一个版本
  3. 使用 git restore <file>, 它能将未add到暂存区的内容撤销掉。

commit文件后,将文件删除,可以使用restore恢复文件:

$ git add b.txt
$ git commit -m "提交b.txt"
$ rm b.txt
$ git restore b.txt

远程仓库

在这里插入图片描述
在这里插入图片描述

id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

将公钥复制黏贴:
在这里插入图片描述
在GIthub上创建一个名字同样为testgit的仓库:
在这里插入图片描述
在这里插入图片描述
把一个已有的本地仓库与之关联,把本地仓库的内容推送到GitHub仓库,在本地的testgit仓库下运行命令:

git remote add origin https://github.com/qinyu0831/testgit.git

再把本地仓库分支master内容推送到远程仓库去:

git push -u origin master

在这里插入图片描述
推送成功,可以在GitHub仓库看到相同的文件了:
在这里插入图片描述

从远程仓库克隆

在GitHub仓库创建一个新仓库,名为testgit2,并创建README文件:
在这里插入图片描述
在本地克隆一个本地库:
在这里插入图片描述
在这里插入图片描述

创建合并分支

在这里插入图片描述
在dev分支上修改内容,并提交:
在这里插入图片描述
切换回master分支,内容仍为之前的:
在这里插入图片描述
将dev的内容合并到master上:
git merge命令用于合并指定分支到当前分支上
在这里插入图片描述
合并完成后,我们可以接着删除dev分支了,操作如下:
在这里插入图片描述
总结创建与合并分支命令如下:

  • 查看分支:git branch
  • 创建分支:git branch name
  • 切换分支:git checkout name
  • 创建+切换分支:git checkout –b name
  • 合并某分支到当前分支:git merge name
  • 删除分支:git branch –d name

如何解决冲突

创建并切换到一个新分支 fz1, 并修改文件提交:
在这里插入图片描述
切换到master分支,添加一行内容6666666
在这里插入图片描述
在master分支上合并fz1的内容:
在这里插入图片描述
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fz1 是指fz1上修改的内容,我们可以修改如下后保存:
在这里插入图片描述
将内容修改成和master分支一样的,后commit:
在这里插入图片描述
查看合并情况:
在这里插入图片描述

分支管理策略

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:

  1. 创建一个dev分支。
  2. 修改readme.txt内容。
  3. 添加到暂存区。
  4. 切换回主分支(master)。
  5. 合并dev分支,使用命令 git merge –no-ff -m “注释” dev
  6. 查看历史记录
    在这里插入图片描述
    使用no-ff合并后删除的分支,查看历史时还能找到:28b1c9e
    在这里插入图片描述
    分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

bug分支

在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

在这里插入图片描述
dev分支正在readme文件上工作,还未提交,此时接到了一个bug需要紧急修复,工作进行到一半时候,我们还无法提交,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。如下:
在这里插入图片描述
此时,我们可以切换到bug分支,进行bug修复工作:
在这里插入图片描述
修复完成后,切换到master分支上,完成合并,并删除xxx-bug分支:
在这里插入图片描述
完成后我们就可以回到dev分支上干活:

在这里插入图片描述
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:

  1. git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
  2. 另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。

在这里插入图片描述

多人协作

当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。

  • 要查看远程库的信息 使用 git remote
  • 要查看远程库的详细信息 使用 git remote –v
  • 在这里插入图片描述
    此时,远程库的内容如下:
    在这里插入图片描述
    本地代码如下:
    在这里插入图片描述
    将本地更新的readme.txt推送到远程库中:
    (注意:手动输入yes,不要直接回车)
    在这里插入图片描述
    在这里插入图片描述
    推送成功。

可以看到 推送成功了,如果我们现在要推送到其他分支,比如dev分支上,我们还是那个命令 git push origin dev

那么一般情况下,那些分支要推送呢?

master分支是主分支,因此要时刻与远程同步。

一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值