[Git][远程操作]详细讲解

1.理解分布式版本控制系统

  • 形象理解每个⼈的电脑上都是⼀个完整的版本库
    • 这样⼯作的时候,就不需要联⽹了, 因为版本库就在⾃⼰的电脑上
  • 既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?
    • 例如:在⾃⼰电脑上改了⽂件A,同事也在他的电脑上改了⽂件A,这时,两个人之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了
  • 分布式版本控制系统的安全性要⾼很多,因为每个⼈电脑⾥都有完整的版本库,某⼀个⼈的电脑坏掉了不要紧,随便从其他⼈那⾥复制⼀份就可以了
  • 在实际使⽤分布式版本控制系统的时候,其实很少在两⼈之间的电脑上推送版本库的修改
    • 因为可能俩人不在⼀个局域⽹内,两台电脑互相访问不了,也可能今天同事病了,他的电脑压根没有开机
    • 因此,分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑
      • 但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已
      • 有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了
        请添加图片描述

2.克隆远程仓库

  • 克隆/下载远端仓库到本地git clone repositry_uri
  • SSH协议和HTTPS协议是Git最常使用的两种数据传输协议
    • SSH协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性
      • 使⽤此协议需要将自己的公钥放上服务器,由Git服务器进⾏管理
    • 使⽤HTTPS⽅式时,没有要求,可以直接克隆下来
  • 如何使用SSH方式克隆仓库呢?
    • 前置检查:在⽤⼾主⽬录下,看看有没有.ssh⽬录
      • 如果有,再看看这个⽬录下有没有id_rsaid_rsa.pub这两个⽂件
        • 如果已经有了,可直接跳到下⼀步
        • 如果没有,需要创建SSHKey
      • 如果没有需要先手动创建出该目录mkdir ~/.ssh
    • 创建SSH KEYssh-keygen -t rsa -C "email",配置一路默认即可
      • 创建完成后,可以在用户主目录里的.ssh文件夹内找到id_rsaid_rsa.pub,这两个就是SSH KEY的密钥对
      • id_rsa是私钥,不能泄露出去
      • id_rsa.pub是公钥,可以放心地告诉任何人
    • 添加公钥至远端仓库cat id_rsa.pub获取公钥内容,原封不动复制到远端仓库的SSH公钥部分即可
    • 至此,已经可以成功在本地用SSH方式克隆仓库了
  • 注意SSH协议每次推送是不用输入密码的,但如果是HTTPS协议,每次推送都必须输入密码
  • 从远程仓库克隆后,实际上Git会⾃动把本地的master分⽀和远程的master分⽀对应起来
    • 远程仓库的默认名称是origin ,本地可以使⽤git remote命令,来查看远程库的信息
    • git remove -v可以显示更详细的信息

3.向远程仓库推送

  • 前提:在本地仓库配置了和远端仓库一样的用户名和邮箱
  • 将本地仓库的内容推送至远端仓库git push
  • 详细命令格式git push <远程主机名> <本地分支名>:<远程分支名>
  • 如果本地分支名与远程分支名相同,则可以省略冒号git push <远程主机名> <本地分支名>

4.拉取远程仓库

  • 如果远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地
  • 从远程获取代码并合并本地的版本git pull
  • 详细命令格式git pull <远程主机名> <远程分支名>:<本地分支名>
  • 如果远程分支名与本地分支名相同,则可以省略冒号git push <远程主机名> <远程分支名>

5.配置 Git

1.忽略特殊文件

  • 在⽇常开发中,有些⽂件不想或者不应该提交到远端,那如何让Git知道该忽略哪些文件呢?
    • 在Git⼯作区的根⽬录下创建⼀个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件了
  • 如果已经忽略了某个类型的文件,但是又想追踪管理某个特定的该类型文件,该怎么办?
    • 方法一:使用git add -f file_name强制添加
    • 方法二:在.gitignore中添加配置!file_name即可让Git不忽略该文件
  • 如果觉得.gitignore有问题,想知道哪个规则写错了,该怎么办?
    • 可以使用git check-ignore -v file_name来检查相关配置
  • 配置示例
    # 忽略特定文件格式
    *.so
    *.ini
    
    # 忽略特定文件
    SnowK.sh
    
    # 不忽略特定文件
    !Die.so
    

2.给命令配置别名

  • Git支持对命令进行简化git config [--global] alias.<别名> <被别名替换的命令>
    • 被别名替换的命令中,如果含有空格,可以使用双引号("")括起来
    • --global参数为全局参数,即设置后在任意一个仓库都可使用设置的别名
      • 如果不添加--global参数,只能在该仓库内使用设置的别名
  • 示例
    $ git config --global alias.st status
    $ git st
    On branch main
    Your branch is up to date with 'origin/main'.
    
    nothing to commit, working tree clean
    
    $ git config --global alias.lpa "log --pretty=oneline --abbrev-commit"
    $ git lpa
    33d983d (HEAD -> main, origin/main) Done gitignore
    8c28641 test .gitignore
    b0f37ed Update from Github
    6570136 First Commit
    
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DieSnowK

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

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

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

打赏作者

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

抵扣说明:

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

余额充值