git入门教程

1、 前置知识
git:分布式的版本控制系统
GitHub:远程代码托管仓库

2、连接git
a.本地生成公钥私钥:ssh-keygen -t rsa -C "1330888958@qq.com"
b.验证本地仓库能不能和远程GitHub通信:ssh -T git@github.com
c.设置邮箱和用户名,以后在GitHub上提交信息,都会附带你的邮箱和用户名信息
    git config --global user.name "ghqcentos"
    git config --global user.email "gaohuqun@qq.com"

3、git操作
    3.1 克隆远程仓库  git clone git@github.com:xizighq/HelloWorld.git
    3.2 自动创建
        3.2.1 自动生成默认远程仓库名称 origin。 可以修改,通过 .git/config 文件修改
        3.2.2 本地生成一默认的分支。对应远程的分支,通过git branch -r可以看到。如下:
            origin/HEAD -> origin/main
            origin/main
    3.3 流程概念
        3.3.1 工作区:就是gitclone下来的那个文件夹。代码修改之后,可以通过git add . 或者 git add filename吧工作区的改动,提交到暂存区。
        3.3.2 暂存区:有改动,先不提交,积攒到这里,最后加上说明统一提交。可以通过git commit -m "message"提交到本地仓库
        3.3.3 本地仓库:可以通过git push origin main:main 将本地仓库的main分支代码,提交到远程的main分支。查看自己当前分支:git branch
        3.3.4 远程仓库:
    3.4 更新拉取代码:git pull
    3.5 git  log  获取修改记录。
        commit 649c77e88ba8f7050f82a73538977521dd8e980b (HEAD -> main, origin/main, origin/HEAD)
        其中:head 指针指向最新一次修改。
    3.6 回退操作
        3.6.1 工作区代码回退
            git status 发现已经修改,但是修改不想要了。
            git checkout -- filename 回退到没有修改的时候。(此处不记录到git log)
            原理:就是用本地仓库的代码,覆盖掉工作区的代码。
            --不能去掉,git checkout filename 是分支切换
        3.6.2 暂存区代码回退
            git reset HEAD filename.将暂存区代码回退,回退到工作区代码修改但是未add的状态。
        3.6.3 本地仓库代码回退
            git reset --hard 649c77,将本地仓库的代码回退到某个版本。
        3.6.4 拓展
            上述回退操作都被记录,可以通过 git reflog 查看。
        3.6.5 远程仓库代码回退。
            向远程仓库提交了错误代码。
            错误方法:将本地仓库代码版本回退,然后 git push origin main:main给远程。这种操作是会因落后被拒绝的。
            正确方法: 将本地仓库代码版本回退,然后git push -f origin main:main  (-f  force)
    3.7 修改冲突
        3.7.1 不同文件
            AB修改不同文件,push。Apush之后,Bpush会被提示先poll。这种情况无冲突
        3.7.2 同一文件不同行。
            AB修改V1 版本main文件。A在第五行开始添加一个函数,B在第十行开始添加一个函数。A提交。
            B会被提示先poll,poll之后,AB添加的连个函数,会在B的本地仓库被合并。这种情况无冲突。
        3.7.3 同一文件同行
            A修改V1 版本main文件第五行,B修改V1 版本main文件第五行,A提交。B提交,出现冲突,poll一下,提示要自己手动合并。
            <<<< HEAD
            。。。。。。。。
            ==========
            。。。。。。。。。
            >>>> xxxxxxxxxxxxxxx版本号
            第一个。。。。是B,第二个是A提交的。这个时候B要手动合并。
            手动合并:将冲突文件本地打开,修改,然后提交。
    3.8 创建本地分支
        3.8.0 https://www.jianshu.com/p/305723736c7c :git branch 的使用
        3.8.1 git branch 查看本地分支,git branch -r 查看远程分支。
              git branch -vv(两个v),就能够看到本地分支跟踪的远程分支。
        3.8.2 git checkout -b sortdev。创建一个新的分支,并切换到这个分支。
            此时 git pull 会出现错误,因为不知道从哪里拉取,没有对应的远程的分支。
            分支切换:git checkout main 
            正确做法:在自己本地分支代码写好之后,检查之后,可以合并到自己的主分支。本地仓库合并之后,
        3.8.3 git branch -d sortdev
            Deleted branch sortdev (was 96df94d).
            PS:如果被删除分支,还有待合并的代码,是删除不了的。
        3.8.4 git push origin sortdev:main 将本地分支sortdev的代码提交到远程main分支,其中远程不存在sortdev分支
            虽然没有创建远程分支,但是可以指定推到哪个分支上面。
            不建议使用,详见3.9.0 。可能会有分支冲突
    3.9 本地分支合并冲突处理
        3.9.0 场景分析
            远程main分支,V1版本,
            A得到V1版本,A创建本地分支“cpy”。
            B得到V1版本,B提交代码,远程main分支成为V2版本。
            此时A将cpy分支合并到自己本地main分支的V1版本。
            此时:A提交,失败。
            解决方法:详见3.7.33.10 git的远程分支管理
        3.10.1 管理员在github上创建新分支。
        3.10.2 git pull本地看到新分支
        3.10.3 git checkout -b dev origin/dev。本地创建一个新分支,链接到远程新分支。   



附3.6.1注:
    Git checkout:
    1. 操作文件  2. 操作分支
    操作文件
        git checkout filename 放弃单个文件的修改
        git checkout . 放弃当前目录下的修改
    操作分支
            git checkout master 将分支切换到master
            git checkout -b xxx 如果分支存在则只切换分支,若不存在则创建并切换到xxx分支,
                repo start是对git checkout -b这个命令的封装,将所有仓库的分支都切换到xxx,xxx是分支名,




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值