Git学习笔记

1、获取Git仓库

通常有两种获取 Git 项目仓库的方式:

  1. 将尚未进行版本控制的本地目录转换为 Git 仓库;
  2. 从其它服务器克隆 一个已存在的 Git 仓库。

两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。

  • 克隆一个已存在的 Git 仓库比较简单,命令是 git clone <url>
  • 初始化一个空仓库命令git init
    在这里插入图片描述
    该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。

2、提交更新

添加一个文件,把文件添加到暂存区,使用命令git add <file>...,然后提交当前工作空间修改的内容,使用命令git commit -m "message"git comiit -se
在这里插入图片描述
在这里插入图片描述
git commit -m "message"提交信息与命令放在同一行,可以直接输入提交信息
git comiit -se会启动你选择的文本编辑器来输入提交说明

3、远程仓库的使用

  • 添加远程仓库命令git remote add <shortname> <url>
    在这里插入图片描述
    图中我初始化了一个空的bare仓并将它添加成我当前仓库的远程仓库,通过 git remote -v命令可以查看远程仓库使用的 Git 保存的简写与其对应的 URL。
  • 把代码推送到远程仓库
    在这里插入图片描述
    git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名>
    如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

git push origin :develop
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
  
在这里插入图片描述

在这里插入图片描述

4、stash:用于临时保存和恢复修改

使用场景:项目正在develop分支更新版本,突然已上线的版本出bug了,此时我们要切换到hotfix分支去改bug。此时此刻develop分支上修改的文件还不想提交,但是切换分支会提示错误有文件未提交。
在这里插入图片描述
直接输入 git stash 命令,将当前分支存起来,id为12da570
然后输入 git stash list 命令去查看我们“存储”的列表
在这里插入图片描述
接下来可以随意切换分支,在其他分支任务完成后可以再切回来,我们想恢复刚刚存储的文件,继续被打断的工作。
恢复的方式有两种:
方法一:用 git stash pop 命令,恢复的同时把 stash 存储列表的内容也删了。这时候再执行 git stash list 命令,id 为 12da570的储藏项目不会在列表中。
在这里插入图片描述
执行 git status 就会继续显示该分支上有改动未提交。
方法二:用 git stash apply 命令恢复,但是恢复后,stash内容并不删除,这时候再执行 git stash list 命令,id 为 4b6be40的储藏项目还会在列表中,你需要用 git stash drop 来删除;
在这里插入图片描述
注意: 如果有一个分支上多个 stash,如果需要恢复指定的 stash ,可以在命令尾部加id,如 git stash apply stash@{0} ,同样删除指定 stash 项目则执行如 git stash drop stash@{0} 。

5、撤销操作

  • 漏掉文件或提交信息写错重新提交,使用命令git commit --amend
    在这里插入图片描述
  • git restore --staged <file>将文件从暂存区撤出,但不会撤销文件的更改
    在这里插入图片描述
  • git resore <file>... 将不在暂存区的文件撤销更改
    在这里插入图片描述

6、查看提交历史

  • git log查看所有历史提交记录
    在这里插入图片描述
    限制显示的日志条目数量,可以使用命令git log -p -num
    在这里插入图片描述
    查看分叉历史 运行 git log --oneline --decorate --graph --all ,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。
    在这里插入图片描述

  • git blame <file>以列表形式查看指定文件的历史修改记录
    在这里插入图片描述
    显示文件的每一行最后修改的版本、作者、时间

7、分支合并

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。
第一种情况:A分支的所有代码改动合并到B分支,使用git merge
在这里插入图片描述
删除已合并到master的iss25分支
在这里插入图片描述
第二种情况:只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

$ git cherry-pick <commitHash>

例如:hotfix分支修改了bug和一些定制化功能,但是修改的bug需要提交到master分支上。
查看hotfix分支提交历史,找到修改bug的提交记录
在这里插入图片描述
切换到master分支,将hotfix分支修改bug的提交记录合并到master分支上
在这里插入图片描述

8、rebase

场景:不同分支之间的合并
分支develop开发了一些功能,并且保存提交
在这里插入图片描述
现在新功能开发完毕,需要将它合并到hotfix中。
首先切换到hotfix分支,然后使用merge直接合并develop分支
在这里插入图片描述
竟然失败了,原因很简单,两个分支修改个同一个文件产生了冲突,需要手动合并冲突,再提交:
打开文件修改完成后,通过add添加,然后commit提交
在这里插入图片描述
重新合并,合并成功,然后查看一下分支提交历史:
在这里插入图片描述
虽然合并成功了,但是合并历史分叉了,可以通过rebase合并分支:
在hotfix分支上执行:git rebase develop
这是以develop为基础,将feature分支上的修改增加到develop分支上,并生成新的版本。
在这里插入图片描述
失败了,通过git status查看冲突文件,有一个文件没有提交,将该文件重新提交
在这里插入图片描述
之前的rebase其实只是完成了一半,由于出现冲突而终止,现在冲突解决,可以通过git rebase —continue继续完成之前的rebase操作。
在这里插入图片描述
rebase完成,再查看一下提交历史:
在这里插入图片描述
提交记录已经是一条完美的直线。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳絮吹成雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值