git的使用方法

线上线下联通:

 a,gitbash中生成密钥(右击选择git Bash):  ssh-keygen -t rsa -C "zhanfangyan"                                              //-t表示密钥类型为rsa。 -C表示用来识别密钥, 就是你自己设定的独一无二的字符串, 此时所生成的公钥中就带有这个独一无二的字符串了, 这样就方便了公钥之间的对比了。                                                        

                           //你的邮箱名绝对是独一无二的,所以你也可以将这个独一无二的字符串设置成你的邮箱名:ssh-keygen -t rsa  -C  "3529742868@qq.com"

                          // 回车后会出现: Enter file in which to save the key (/root/.ssh/id_rsa):
                                                 # 输入要保存的密匙文件位置,直接回车 默认即可, 一定要使用默认的地址
                                    Enter passphrase (empty for no passphrase):
                                               # 输入密匙的密码,可直接回车留空,也可以输入密码来进一步增强安全性
                                    Enter same passphrase again:
                                               # 重复输入一次密匙的密码

-

-

-

-

b,  查看公钥: cat ~/.ssh/id_rsa.pub              // cat表示读取, ~表示生成的ssh密钥的默认根路径,只有使用cat ~才能读取到密钥

-

-

-

c, 将公钥放在码云网:复制生成的公钥——打开码云——点击设置——点击ssh公钥——粘贴到公钥下——在上面标题栏中随便起一个标题——点击确认就ok了

-

-

-

d, 克隆项目到本地git  clone  公钥;   这里的公钥是指克隆里的ssh公钥

1,git的使用方法:

git   clone   SSH地址                   //克隆项目

git   pull    origin  master             //将远程master分支和本地master分支进行合并,

                       //远程分支有a, 本地分支有b, 合并后本地分支就有a和b

                      //当远程分支有a, 本地分支也有a, 但内容不一样,合并后,会将内容不一样的给你标记起来,从头到尾开始比对,只要某一行内容有一点不一样,就会将从这一行往下的所有内容在合并的时候标记起来

        比如:

本地文件aa内容为:

1

2

a1
a2
a3
a4

远程文件aa内容为:

1

2

3
4
5

当远程文件和本地文件通过git  pull进行合并后:

1
2
<<<<<<< HEAD             //这个下面表示本地文件不同的地方    
a1
a2
a3
a4
=======          //这个下面表示远程文件不同的地方
3
4
5
>>>>>>> b19c12cae055631fb0046f22cbb53a614a92f115

git   push  origin   master      //将本地的master分支提交到远程,从而将远程已有的master分支给替换掉了。

git   add  .              //当前文件夹的所有文件保存到缓存区

git   add  aa.txt         //将指定的文件保存到缓冲区

git   commit -m '说明'            //将缓存区中的内容提交到当前分支中

git   checkout   分支名          //切换分支, 当修改了一个分支的内容,没有进行保存的话,是无法切换到另一个分支中的

git   merge   分支名            //将指定的分支名和当前分支进行合并

2, 建立远程仓库和本地仓库的联系

git   remote  add origin   SSH地址                           //在本地和指定SSH地址的仓库建立联系

git  remote   rm    origin                    //删除联系

git   remote   show   origin             //查看remote对象的元信息

3,初始化本地仓库,并在本地仓库创建分支

git  init            //将文件夹初始化成一个仓库,会自动生成一个.git文件夹, 找不到就说明隐藏了,需要设置一下(自己找)

git   pull   origin   master      //将远程的master和本地的进行合并

git   branch   AA           //创建分支AA

git  branch              //查看所有的分支

git  branch  -d   AA        //删除分支AA, -D表示强制删除

4,错误分析:

a) " Already up-to-date”

       在git  pull的时候当提示“Already up-to-date”, 表示远程分支已经和本地分支合并过了,不用再次输入git  pull合并了

-

-

-

b)  ! [rejected]        master -> master (fetch first)
   error: failed to push some refs to 'gitee.com:zfys123/ss.git'

报上面这个错误就说明远程的master分支被别人提交了新的文件,从而使远程master分支发生了一些变化, 你需要git   push   origin  master进行合并, 避免将别人的文件给覆盖了

-

-

-

-

c) fatal: refusing to merge unrelated histories

      在master分支中当第一次进行git   pull合并的时候,报上面这个错误,它的本意是提醒你,这是两个不相关的分支,此时准备合并了,你要注意。

     为什么第一次git  pull的时候,会提示你,此时合并两个不想关的分支呢, 这是因为在本地分支和远程分支建立联系之后,远程分支还不知道和本地分支有联系,当你同意合并,交流了一次之后,就知道了和本地分支直接的关系了,哈哈

     解决方法:

  git  pull  origin  master   --allow-unrelated-histories         //allow表示同意

-

-

-

-

d) fatal: not a valid object name: 'master'

这个报错表示master分支不存在, 当使用git  init初始化后,master分支并不存在,需要给master分支也初始化

   解决方法:

      新建文件aa.txt

      输入: git  add  .

      在输入: git  commit  -m '说明'

就是该当前分支随便添加一点数据,这样就相当于给当前的master分支初始化了

-

-

-

-

-

e) error: you need to resolve your current index first,

aa.txt: needs merge

在切换分支的时候报这个错误,则说明远程分支和本地分支git  pull合并的时候发生了一些错误,导致无法切换分支

     解决方法:

     git   reset   --merge          //终止合并失败的分支

    git  checkout  master        //此时就可以切换到master分支了

-

-

-

-

-

f) error: Your local changes to the following files would be overwritten by checkout: aa.txt

当你想要切换到其他分支的时候,会不允许你切换分支,并且会报上面这个错误,意思是你的本地文件aa.txt发生了修改,但是还没有保存到aa.txt所在的分支中,请进行保存

   解决方法:

        git  add .

        git   commit   -m  '保存'

5,注意事项:

1,新建文件与删除文件:

a)删除文件

    在本地的master分支中删除一个文件,要进行保存,如果没有保存就切换到另一个分支中的话, 当你再次切换会master分支的时候,所删除的文件还是会存在的,因为你并没有将分支中的文件给删除,属于无效操作

   解决方法:

      首先删除指定文件

      然后保存到当前分支: 

               输入: git   add  .   

               在输入: git  commit   -m  '删除' 

-

-

-

-

b) 创建文件

   在本地的master分支中,创建了一个文件aa.txt, 

    然后你切换到另一个分支中后,aa.txt文件也会跟随你到另一个分支中,当你没有将aa.txt文件保存到具体分支的话,你在任何分支中都能看到该文件

    解决方法:

        在master分支中输入: git  add .

         然后输入: git  commit  -m  '保存’

        此时aa.txt文件就保存到了master分支中了

git   pull合并造成的冲突:

 当别人修改内容并提交到远程主分支中后,你通过git  pull将远程分支和本地分支进行合并的时候,会弹出一个编辑窗口,让你解释造成冲突的原因:

解决方案:

  1. 按键盘左上角"Esc"
  2. 输入":wq",注意是冒号+wq,按回车键即可

git   push远程替换造成的冲突:

1,远程有一个分支AA

2,当你将远程分支AA拉取到本地后,该远程分支AA和本地的分支AA之间还存在联系,你在本地修改完后,可以直接git  push提交到远程,将远程分支AA给替换掉了,只要对远程分支进行了git  push后, 远程分支将AA和所有的本地分支AA断开联系

3,而此时远程分支AA还有被另一个人拉取到本地后,另一个人在修改后,进行git  push,总是报错,显示无法提交,这就说明已经被人提交过了一次,

      此时你想要进行提交的话,就必须先进行git  pull,如果存在同一个文件内容不一样的话,也会给你标记起来, 然后你就可以进行git   push了

总结:当git  push报错无法提交的时候,就说明远程和本地分支断开了联系,也就说明已经被另外一个人提交过了一次

          你只需要进行git   pull从新建立联系,就可以进行提交了

总结:

1,git  merge是将本地的两个不同分支进行合并

          比如: 在master中输入: git  merge   AA          //就是将分支AA合并到master中

2, git  pull是将远程和本地相同的分支进行合并,指定合并的分支必须和当前本地分支是同一个名字

     比如: 在分支AA中输入: git  pull origin  AA       //就是将远程的AA分支合并到本地的AA分支中

              

3, git   push是将远程分支给替换成本地分支,就相当于将远程分支给删除,让本地分支上位

比如: 在master中输入: git  push  origin  master          //就相当于将远程的master分支删除,然后将本地的master分支上传过去

注意:在git  push和git  pull的时候,所指定的远程分支名一定要和当前分支名是一样的

4,合并分支的注意事项:

    a) 主分支master中有一文件aa.txt, 然后创建它的一个分支AA, 在分支AA中修改文件aa.txt,

修改完之后,在回到主分支中,并通过git  merge  AA合并分支AA, 此时就相当于将master分支中的aa.txt给删除,然后替换成了分支AA中的aa.txt(这是因为在创建分支的时候,顺带将内容复制过来了,所以合并时它是不算冲突的) 

b) 合并造成冲突的原因

首先在主分支master中创建一个文件bb.txt,并输入内容"我是master"保存。

 然后在分支AA中也创建一个文件bb.txt, 并输入内容"我是AA"保存, 

  然后回到master中并合并分支AA

   此时bb.txt的内容为:

  <<<<<<< HEAD          
我是master
=======
我是AA
>>>>>>> AA

这就表示由于在不同分支中创建了相同文件名的文件,导致在合并的时候造成了冲突

当你在切换的时候,就会无法切换并报错:

error: you need to resolve your current index first
aa.txt: needs merge                     
bb.txt: needs merge            //这个表示冲突文件为aa.txt和bb.txt

            //旁边也会有显示(master|MERGING), 告诉你合并有问题

解决方法:

 git   reset  --merge                  //取消合并
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值