2021-5-16git的使用(后续可能还会有更新油)

主题:

git的使用。本篇主要是学习git时一些粗浅的学习笔记,可能后面会有更新。
因为不够全面。如果想要详细学的话,可以移步廖雪峰的git教程

内容:

  1. git是一个版本控制系统,简单理解就是可以记录一个空间内被追踪文件的每次的修改。
    git的下载安装很简单。直接用apt install git即可。
    git需要建立一个respository,这个respository就是版本库,是git的监管区域,可以监管里面
    的文件,respository建立需要 1 建立一个空文件夹,这是这个respository的专属空间
    也可以使用一个已有文件的目录,这样的话,原来的原文件是不变的。使用init之后,这些文件需要进行add和commit,和init之后建立这些文件效果是一样的。2021520

  2. 使用git init来将这个空间进行改造成一个respository(也可以使用git clone来建立并克隆
    一个其他地方的respository)这一部可以不在respository里面进行

  3. 在里面如果添加一个文件的话,需要先建立一个文件,然后需要 git add filename来说明 系统来监视这个文件的改动,否则,git不会自动来监视一个文件的改动。如果有文件不被监视,会在使用
    git status看到用文字的提示
    ###################
    未跟踪的文件:
    (使用 “git add <文件>…” 以包含要提交的内容)
    readme2.txt
    ###################
    其次,还需要进行git commit来提交这个文件给这个仓库。
    问题:git add和git commit 的联系是什么?为什么要有两个操作?
    git add所做的操作就是
    (1) 为作为参数的文件进行“快照”(快照是对于一个文件的记录,相当于一个
    当前状态的记录,一个断点,可以用来恢复)
    (2) 将快照的索引(通过计算文件的校验和来得到)放到暂存区域(其实就是一个用来暂时存放快照
    索引的文件),方便之后可以将这些快照组织为一个commit对象然后保存为一次完整的快照。
    git add是相当于将一些内容放到暂存区域内,为commit做准备。可以多次add,也就是将不同的内容
    放到暂存区域,然后一次commit
    git commit做的事:
    (1)会创建一个commit对象,里面除了有作者相关信息,还有一个tree指针,指向一个tree
    对象,tree对象包含每一个文件的快照的指针,因此这个tree就可以恢复所有的更改的文件内容。
    当再次提交的时候,就再创建一个commit对象,此时会有一个parent指针,指向之前的commit
    对象。

  4. 当一个文件处于监视列表,并且修改了的时候,如果没有进行add,也就是将内容加入暂存区域
    会提示没有加入暂存区。如果add了,但是没有commit(提交)的话,会产生没有提交的变更的提醒(使用git status)。但是这个时候,已经可以使用git diff来查看
    修改了那些内容了。(只要是修改了就可以使用git diff来查看修改的内容)

  5. git log可以查看commit版本,也就是可以恢复的版本有那些。没一个commit有一个commit id,commit记录是按照时间由前到后来进行显示的。
    使用git reset可以进行回退或者到某一个版本(根据commit id)。git reset --hard HEAD^
    表示上一个版本。HEAD表示当前版本。加几个^表示后退几个版本。
    如果想要回到更为先进的版本的时候(前提是这个版本存在),可以使用commit id作为参数

  6. 对于没有add 或者 没有commit的修改,可以采用git restore 来删除工作区的修改,
    也就是把工作区内的文件恢复为上次commit之前的时候,或者add之前(找到该文件的最近的快照)。
    而git restore --staged 表示将当前暂存区的内容抛弃掉,不改变工作区的内容
    当想要恢复到暂存区内的版本之前的版本(如果还没有进行commit的话),可以使用git reset HEAD 文件
    来进行恢复。如果已经提交的话,那么就要用到版本回退。如果这个commit已经提交到远程
    那么就不可逆转。

  7. 使用git来删除一个文件。一个工作区文件的删除,分为在版本库中删除还是在工作区中删除
    因为在工作区中的文件的删除(rm)不会导致版本库的文件的删除。因此,如果只是rm删除一个文件的话,会留下一个记录,提醒。如果想要在版本库中删除的话,需要用git rm,然后进行commit就可以保存这个了。当然了,可以通过恢复commit版本来回复这个文件。

  8. git支持远程版本库:也就是从一个远程主机上来托下来一个respository,然后在本地进行修改,制作成一个commit,然后再推送上去。同时也可以从远程主机上来找到别人的commit
    步骤:
    (1)通过git remote add 本地认为的远程库名字 链接(可以为ssh版本) 完成关联(这个关联作用区域只是这个respository,在别的respository可以重名,不会有问题:2021520)
    (2)git push -u origin master可以完成本地仓库内容的推送到远程仓库中 -u参数只是第一次
    需要,之后再次提交的时候不需要家-u,这个命令会完成本地的master和远程的master绑定
    (3)之后在本地修改之后,git push origin master会将“最新”的commit推送出去
    (4) git remote rm origin 可以删除这个连接,本地就访问不到了。

  9. git支持多分支,也就是从当前的版本出发,创建一个新的分支,这个分支和原来的版本初始状态
    是一致的,切换到这个分支之后,可以做修改,commit,不会影响主分支。主要是更加安全,
    当分支已经做得很好了,然后再合并到master分支,否则直接不用合并到master分支即可。
    不会对master分支造成影响。鼓励用分支来解决问题。
    创建分支用git branch name 切换分支用 git switch brachname 也可以用
    git switch -c b branchname 来完成创建和切换。
    查看分支用git branch
    合并某分支到当前分支:git merge name
    删除分支:git branch -d name
    有时候合并会有冲突,此时需要手工来进行修改冲突,也就是修改这个文件。然后进行add和commit,
    然后将,当有的文件没有一个
    加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并

  10. git stash 可以保存当前工作区的内容,放到一个栈里面
    然后可以去执行其它的任务。当执行回来之后,使用git stash pop来恢复,并删除工作区现场的
    内容。git stash list可以查看在工作区现场栈里面有什么内容

  11. 一般开发时,master分支是稳定版本的发布分支,dev版本是开发版本的分支,到一定程度
    dev会合并到master。每个开发人员的分支都是在dev下面的。合并到dev上
    修复bug可以使用一个分支,修复完成之后,进行合并,删除bug分支。
    增加新的特性功能时,建立一个feature分支,然后合并,删除分支

  12. git push origin branchname可以完成 向远程的branch来推送最新的commit前提是 远程和本地的一个branch是存在关联的。
    git branch --set-upstream-to branch-name origin/branch-name
    可以完成本地的branch和远程的branch的关联。
    其次,需要远程和本地的提交不存在冲突。如果存在冲突的话,需要先git pull下来,然后进行冲突的解决,然后再提交。

  13. git支持打标签,也就相当于把某一个commit取了一个别名。一般是最新的commit打一个标签当然也可以是使用commit id来指定。
    git tag tagname [commit id]还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
    git tag -a v0.1 -m “version 0.1 released” 1094adb
    使用git tag可以查看所有的tag
    标签可以删除 使用git tag -d name
    标签可以推送到远程
    git push origin tagname
    git push origin --tags可以一次性推送全部本地标签

  14. 在GitHub上,可以任意Fork开源仓库;
    自己拥有Fork后的仓库的读写权限;
    自己的版本修改之后,可以推送pull request给官方仓库来贡献代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值