Git学习笔记

生成SSH:可以通过git bash


分支:
    用于独立完成每个单独功能,最后合并到主干。
    
Merge Request :分支提出合并请求。     
    审阅人审阅通过后点击Merge通过请求是该分支的代码合并到主干。
        审阅人Merge时如果选择delete会合并该分支代码到主干后删除该分支。
                     如果选择另一个会合并代码到主干后保留该分支。
    
    
知识点(概念):    
    Git里创建的文件不带后缀名,需要自己添加后缀名。
    
    
    fork:用于拷贝项目代码。


    issue board:多任务管理栏(类似贴任务便利条的黑板)


    CI(continued integration):持续集成
        pipeline(时间线):build 
    
    
    WiKi:用于记录信息


    什么是SSH协议:用于拉代码时进行验证,用这种方式不需要每次都输入用户名和密码(当然如果用大乌龟会自动记录用户名和密码,也不用每次都输),并且这种方式比较安全(好像会检测登录电脑)。

    git add命令将修改保存到暂存区,git commit命令将所有暂存区的内容一次提交到本地的分支。
    注意commit时只会将在暂存区(add过的进入暂存区)的内容提交到分支,如果多次修改而有些add有些没add,这时候commit则只会提交add过后在暂存区的内容。


常用命令:
    配置:
        第一次安装后需要配置自己的用户名和邮箱:
            git config --global user.name "Your Name“.           (经过检验,格式必须是两条横杠)
            git config --global user.email you@example.com.
            
        配置完之后如何查看配置的信息:
            git config --global --list.
            
        生成SSH公钥:
            ssh-keygen -t rsa -C "your.email@example.com" -b 4096

        查看SSH公钥:
            cat ~/.ssh/id_rsa.pub        ##(图形化界面下可以直接找到该文件打开)
        
        
    基础功能:
        添加修改的代码到缓冲区:
            git add 加文件全路径或相对路径名
            
        提交修改的代码到本地仓库:
            git commit -m "双引号内写提交日志,就用这种写法一步到位,否则还要再弹出vi编辑器编辑日志,非常麻烦"      ##这种写法必须在完成前一步的情况下才能进行
            git commit -a -m "日志"            ##这种写法在该git文件夹进行的是非添加文件的更改时,可以不用写git add,被-a代替完成。如果新增文件,则必须一个一个的git add。
        
        查看分支状态(是否有什么没提交或add);
            git status
            git diff
            git branch            ##查看有哪些分支
        
    
    分支相关(本地):
        概念:
            1.主干的名称为master
            2.如果分支只是在主干的基础上添加内容,则主干合并该分支时默认会使用fast forward模式,直接将新增内容合并到主干中,这种合并模式在git log中看不到分支出现过的记录。
              如果想看到分支记录,就要使用普通的分支合并模式,合并时加上--no-ff参数。即:
                git merge --no-ff -m "这里写信息" 加分支名        ##例:git merge --no-ff -m "merge with no-ff" branchA
            
        创建分支:
            git branch 加分支名
            
        切换分支:
            git checkout 加分支名    或    git switch 加分支名
            
        创建分支并切换到该分支(前两步的整合,快捷方式):
            git checkout -b 加分支名    或    git switch -c  加分支名   
            
        使用分支想要和主干合并:
            使用gitlab网站提交merge request申请,添加申请备注,并指定代码审查人。
            
        使用主干想要合并分支:
            git merge 加想合并的分支名
            
        查看分支合并图:
            git log --graph
            
        删除分支:        ##只能删除别的分支,不能在自己的分支上删除自己,不知道为什么删除后不能提交到云端
            git branch -d 加分支名
            git branch -D 加分支名        ##如果删除有不同的内容却还没有合并过的分支,git会报错,这时可以使用-D参数强制删除
            
        分支push:
            如果想将在本地创建的分支(云顿没有)push到云端,
                方式一:在该分支使用命令: git push --set-upstream origin 加分支名         ##推荐,用过一次后就将当前分支与云端分支绑定,以后可以直接使用git push
                方式二:使用git push origin 加分支名                ##这种方式每次都养注明分支名
                
        临时储存(不提交的情况下保存工作区的内容):
            git stash            ##将当前所在分支的工作区内容存储起来
            git stash list        ##查看stash命令存储的工作区内容(因为该命令可以多次使用,储存多个不同的进度时的工作区内容)
        
            恢复:
                只存储了一个工作区内容的情况下:
                    git stash pop        ##恢复成储存的内容并删除该储存内容
                存储了多个工作区内容的情况下:
                    1.git stash list        ##查看存储的有哪些版本的内容
                    2.git stash apply 加版本号        ##应用成该版本号对应的内容
                    3.git stash drop         ##删除存储的内容(git pop相当于23两个命令加起来)
        
        cherry-pick:
            廖雪峰老师是这么说的:
                在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。        ##这里的commit是指修改bug的那个提交对应的SHA1值
                    
                    
            
    调出自带的分支发展图:
        gitk
        
    撤销(回退):    
        撤销在工作区进行的修改(新建了文件无法通过该命令撤销):
            git restore 加文件名        ##撤销是直接撤销至该文件最近自此add的内容处,不论你修改了多少(次)内容,只要你没add,都会直接撤销成上一次add的内容。
                                                ##可以通过此命令撤销自己的修改,但你想再还原回修改的内容就不可能了。git reflog都不会显示这个操作。
        
        撤销删除:
            使用rm删除后恢复::
                git restore 加文件名        ##文件进行add操作后被删除可以恢复工作区删除的文件至add版本,只在工作区新建删除没有add过无法恢复。
                                            ##如果文件还被commit过,则被删除后会优先恢复到commit的版本,如果commit后又修改了然后add,不会恢复成add版本。
            使用git rm删除后恢复(git rm操作只能删除已经被commit到分支的内容,没有add过或add过没有commit的使用该命令会报错,自然恢复的也是commit版本;git rm相当于rm a.txt后又git add a.txt,即删除并将删除操作记录到了暂存区,一步相当于两步):
                1.git restore --staged 加文件名    
                2.git restore 加文件名
            
        撤销add操作(add进暂存区后想撤回):
            git restore --stage 加文件名    
            
        版本回退(撤销commit操作,无法撤销到add状态,只能直接回退到上一个commit版本):
            1.git log         ##显示历史提交记录,及每条记录对应的SHA1值
            2.git reset --hard 加要回退到的记录处对应的SHA1值 
            
        版本前进(如果回退后又想重回现在时间之后的记录处,则只需知道该处的SHA1值,也可以通过git reset恢复成该记录的内容):
            1.git reflog        ##该命令可以显示所有操作过的命令记录,从而可以获得当前时间之后的记录的SHA1值。因为git log只会显示该记录时间线之前的commit历史,而不会显示之后的历史
            2.git reset --hard 加要前进到的记录处对应的SHA1值    
        
    
    云端仓库相关(gitee,github,gitlab):
        连接方式:
            一:本地创建仓库连接:
                1.git init
                2.git remote add origin 加仓库SSH的URL            ##将本地仓库与云端仓库关联
                    注意一:如果云端已有内容,本地想推送就要解决冲突:将云端内容拉下来并rebase来解决冲突:    git pull origin master --rebase
                    注意二:如果提示git origin already exists.则说明这个本地仓库已经和一个其他远程仓库关联,这时的解决方式:
                        1.git remote -v            ##查看该本地仓库已经关联了哪些远程库
                        2.方式一:git remote rm origin        ##删除关联的远程库
                          方式二:git remote add 加给远程库起的名字(如github,gitee) 加从云端仓库网站复制的URL        ##这种方式使一个本地仓库关联多个远程仓库
                                注意:使用这种方式下面的推送方式就不再适用了,应该使用:
                                            git push 加自己起的远程库名字 加push到该库的哪个分支
                3.git push --set-upstream origin master          ##将本地内容推送到云端并将本地此分支与云端master分支关联
                4.git  push            ##之后再推送就只需要使用git push了。
                
            二:直接使用clone命令:
                git clone 加从云端仓库网站复制的URL
                
        查看连接的云端仓库:
            git remote (-v)        ##加-v参数可以更详细的显示远端仓库的信息
            
        将本地仓库分支推送到云端仓库分支:
            git push 加云端仓库名 加本地仓库分支名        ##push前一定要先检查自己是否commit了,想push成功本地最新内容,无论进行了增删改哪种操作,都要commit后再push。
                                                            ##如果将本地仓库的分支和云端仓库的分支关联了,则只需要适用git push即可。
            
        云端代码被别人合并了,被更改,我们需要重新拉取:
            git pull
            
        概念:
            云端有多个分支,但我们拉取时只能拉取到master分支
            
        本地切换成云端的其他分支:
            git switch -c 加分支名 加云端仓库名/云端仓库分支名        ##在本地创建一个分支并与云端的相应分支关联。
    


    多人协作的工作模式通常是这样:

        1.首先,可以试图用git push origin <branch-name>推送自己的修改;

        2.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

        3.如果合并有冲突,则解决冲突,并在本地提交;

        4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

        5.如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

    这就是多人协作的工作模式
            
            
    
    git pull --rebase:
        因为git log的查看是按照时间线排序的,所以如果你push后会按照你本地add和commit来显示git log,这样会显得非常乱,
    而如果用git rebase就会将你原来的add,commit时间都改为你进行执行该git rebase的时间后,这样时间线就会显得比较清晰明了。
    git pull + git rebase == git pull --rebase ??? 没实践,懒得弄了
        

    标签:就是给commit一个易于寻找的标记
        查看所有已经存在的标签:
            git tag
        
        查看某个标签的详细信息:
            git show 加标签名        ##例:git show v1.1
            
        给最新commit后的仓库打标签:
            git tag 加标签名        ##例:git tag v1.0
        
        给历史上某个commit后的仓库打标签:
            git tag  加标签名 加该commit对应的SHA1值    ##例:git tag v1.1 s3c68v
            
        给某个commit打标签的同时添加说明信息:
            git tag -a 加标签名 -m "引号内添加说明信息" 加commit对应的SHA1值
            
        删除标签:
            git tag -d 加标签名
            
        标签都存储在内地,如果要推送某一个标签到远程:
            git push origin 加标签名
            
        推送所有标签到远程:
            git push origin -tags
            
        删除自己推送到远程的标签:
            1.git tag -d 加标签名        ##删除本地仓库的标签
            2.git push origin :refs/tags/加该标签名        ##删除对应的云端仓库的标签
            
            
                
        
    老师的三个问题:        
        git rebase     ##取代git merge功能,使条理更清晰                        --第二个问题:怎么。。。。
        git pull --rebase     ##用于团队协作时从云端拉代码,这种拉法是git rebase的方式拉。
        cherry pick  ##用于将多条功能中取一条功能保留合并到master上。        --第三个问题:怎么将多条功能中取一条功能保留
    
            
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值