Git学习自用

学习目标:

  • 学习分布式项目管理系统Git,为今后的项目实践打好基础

学习内容:

  1. 学习Git的安装与配置
  2. 学习Git的基础命令
  3. 搭建一个简单的C++项目

一、Git的安装与配置

Windows-x64版本下载地址:https:/git-scm.com/download/win

  • Git安装

Git官网下载
选择64-bit Git For Windows Setup.
下载完成后打开文件安装,安装完成后自动下载Git-Bash命令行工具
然后右键此电脑,选择属性,在高级系统设置中点击环境变量按钮,将Git所在的目录添加到Path环境变量下
在这里插入图片描述
打开Git-Bash 输入git -v命令显示版本信息即安装成功

  • Git配置
    配置用户名和邮箱:
    //配置用户名
    git config --global user,name "Youe Username"
    //配置用户邮箱
    git config --global user.email abcdef@ghij.klm
    //保存用户名和密码
    git config --global credential.helper store
    //查看配置
    git config --global --list
    

二、Git的使用

  • 新建版本库 (Repository)
    版本库为一个文件结构,该结构中所有文件、目录均被Git管理、跟踪,有需要时可以还原到之前的任意一个版本
  • 本地创建仓库
    cd targetDir   //切换到目标目录下
    git init [path]
    

创建完成后,当前目录下会出现一个名为".git"的目录,用于存放该仓库的信息,如果追加path参数则会在你追加的路径下生成.git文件。

  • 远程克隆仓库
    git clone [path]  //必须追加要克隆的仓库的地址
    
  • 工作区域和文件状态

    • 文件区域
      • 工作目录(Working Directory):电脑本地的目录
      • 暂存区(Staging Area):临时存储区域,用于保存即将提交到Git的修改内容
      • 本地仓库(Local Repository):你创建或克隆的仓库
    • 文件状态
      • 未跟踪(untrack):已创建但未被Git管理的文件
      • 未修改(unmodified):被Git管理,但内容未发生变动的文件
      • 已修改(modified):已修改,但未添加到暂存区的文件
      • 已暂存(staged):已修改并添加到暂存区的文件
  • 添加和提交文件
    查看文件状态

    git status
    //当前分支,有哪些文件及其文件状态
    git add [file]
    //将文件添加到暂存区,等待后续操作,使用'.'参数将当前文件夹下所有文件添加到暂存区,使用*通配符匹配内容
    git rm --cached [file]
    //将暂存区的内容取消暂存
    git commit -m "提交信息"
    //将暂存区的内容添加到仓库中,并附上提交信息,无-m参数则打开vim供添加提交信息
    git commit -am "提交信息"
    //暂存和提交
    git log
    //查看提交记录,使用--online查看简洁的提交记录
    git ls-files
    //查看暂存区内容
    alias varname "git cimmand"
    //将git command重命名为varname
    
  • 回退版本

    git reset [--mixed] [版本id或HEAD指针]
    //--soft参数:回退到某一版本,保留工作区和暂存区的内容
    //--hard参数:回退到某一版本,丢弃工作区和暂存区的内容
    //--mixed参数:回退到某一版本,只保存工作区的内容,默认参数为--mixed
    
  • 查看差异

    git diff
    //无参数时,比较工作区和暂存区的内容
    //参数为版本号时,比较工作区和版本库的差异
    //参数--cached比较暂存区和版本库之间的差异
    //参数为两个版本id时,比较两版本差异
    git diff HEAD~ HEAD
    //比较当前版本和上一版本差异,HEAD~n为当前版本前n个版本
    git diff HEAD~3 HEAD file.txt
    //比较当前版本和前三个版本file.txt的差异
    
  • 删除文件
    将工作区的文件删除后使用git add命令提交到暂存区,或者使用git rm [file]删除

    	git rm [file]
    	//从工作区和暂存区同时删除
    	git rm --cached [file]
    	//仅从暂存区中删除
    	git rm -r*
    	//递归删除某目录
    
  • .gitignore文件

    • 应该忽略的文件
      • 系统或软件自动生成的文件
      • 编译产生的中间文件和结果文件
      • 运行时生成的日志文件、缓存文件、临时文件
      • 涉及身份、密码、口令、密钥等敏感信息的文件

    创建.gitignore文件,将文件名或文件夹写入.gitignore文件中

    .gitignore文件匹配规则:
    1. 空行和以#开头的行会被忽略
    2. 标准的Blob模式匹配:*通配符,?单个字符,[]列表中的单个字符
    3. **匹配任意中间目录
    4. [a-z]匹配字符a和字符z之间的所有字符
    5. !取反

三、远程目录

  • SSH密钥配置

    cd /jh/.ssh
    //切换到本地仓库的.ssh目录下
    ssh-keygen -t rsa -b 4096
    //-t指定协议    -b 4096指定大小为4096
    //第一次配置会在用户根目录下的.ssh目录下生成id_rsa密钥文件
    //再次配置时指定新密钥文件名称(如:test)并输入密码,如果没有指定,会覆盖之前的id_rsa文件,且不可逆
    

    生成id_rsa文件(私钥文件)和id_rsa.pub(公钥文件)后,复制公钥文件的内容即可在GitHub上[settings] -> [SSH and GPG keys]粘贴
    再次配置时需要创建config文件并添加以下内容

    # github
    Host github.com
    HostName github.com
    PrefferedAuthentications publickey
    IdentityFile ~/.ssh/test
    
  • 推送和拉取
    git push将本地仓库的内容推送到远程仓库上
    git pull向远程仓库拉起请求

  • 关联本地仓库和远程仓库

    git remote add [shortname] [url]
    //将当前仓库和远程仓库对应
    git remote -v
    //查看当前仓库对应的远程仓库
    git branch -M main
    //指定分支名称为main
    git push -u origin main
    //将两个仓库的main分支连系起来
    git pull [远程仓库名] [远程分支名]:[本地分支名]
    //拉取内容
    

四、分支

分支:代码库中的不同版本

git branch [分支名] 
//创建不同分支
git checkout [分支名]
//切换到不同分支,也可以恢复文件到先前版本
git switch [分支名]
//专门用于切换分支
git merge [分支1]
//将分支1合并到当前分支
git log --graph --online --decorate --all
//查看分支图
git branch -d [分支名]
//如果分支已被合并,删除该分支
git branch -D [分支名]
//强制删除分支
git rebase [分支2]
//将当前分支接到分支2最新提交节点

一般不在公共分支上使用rebase

  • 合并冲突
    两个分支修改了同一文件的同一行代码,合并这两个分支时会产生冲突,需要手工编辑产生冲突的文件,然后提交

    git merge --abort //中止合并
    

(未完待续)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值