版本控制-Git

在这里插入图片描述
工作区[Working Directory]>暂存区[Stage]>仓库区[History]

获取仓库

  • 克隆远程仓库到本地

    git clone git@xxx.git
    
  • 指定仓库分支克隆

    git clone -b branch_name git@xxx.git
    

上传本地仓库到远程

  • 新建本地仓库

    mkdir git_test
    cd git_test
    git init 
    touch README.md
    git add README.md
    git commit -m "first commit"
    
  • 推送到远程

    git remote add origin git@xxx.git
    git push -u origin "master"
    

查看提交

  • 查看所有提交记录

    git log
    
  • 查看单次提交详情

    git log commit_id
    
  • 对比提交差异

    git log -p -2 file_name
    -p:<==> --patch  显示每次提交引入的差异
    -2:只显示最近两次提交
    file_name:要查看的文件名
    
  • 格式化查看提交列表

    git log --oneline --decorate
    --oneline:以1行展示
    --decorate:查看分支当前指向的对象
    

    在这里插入图片描述

分支管理

  • 新建分支

    git checkout -b local_branch
    -b:切换到刚创建的分支
    
    # 推送分支到远程
    git push -u origin local_branch
    
  • 查看分支

    git branch 查看本地所有分支
    -a:查看所有分支包括远程
    -vv:查看分支追踪情况
    -v:查看分支最后一次提交
    --merged:查看哪些分支合并到了当前分支
    --no-merged:查看哪些分支未合并到当前分支
    
  • 合并分支

    merge:[原理]将两个分支最近的快照和两者最近的共同祖先做三方合并,生成一个新的快照

    # 将des分支合并到current分支
    1.git checkout current_branch
    2.git merge des_branch
    

    rebase:[todo]

  • 分支切换

    # 切换到指定分支
    git checkout branch
    
    # 切换到上一次分支
    git checkout -
    
  • 跟踪分支

    # 创建时跟踪
    git checkout -b local_branch origin/remote_branch
    
    # 推送时跟踪
    方式1.git push -u origin remote_branch
    方式2.git push --set-upstream origin remote_branch
    
    # 本地设置跟踪
    git branch --set-upstream-to=origin/remote_branch
    
  • 删除分支

    # 删除远程分支
    git push origin --delete remote_branch 
    
    # 删除本地分支
    git branch -d branch_name
    

标签管理

  • 创建标签

    # 轻量级标签
    git tag tag_name
    
    # 附注标签(记录打标签人的详细信息)
    git tag -a tag_name -m "tag_info"
    说明:附注标签必须输入-m指定标签信息,否则会提示输入
    
  • 查看标签

    # 查看所有标签
    git tag
    
    # 模糊匹配标签
    git tag -l "*1.8.3*"
    -l:模糊匹配
    
    # 查看tag详情
    git show tag_name
    
  • 推送标签

    # 支持同时推送多个标签
    git push origin tag_name [tag_name2]
    
    # 推送本地所有tag
    git push origin --tags
    
  • 删除标签

    # 删除本地tag
    git tag -d tag_name
    
    # 附注标签(记录打标签人的详细信息)
    git tag -a tag_name -m "tag_info"
    说明:附注标签必须输入-m指定标签信息,否则会提示输入
    
  • 输出标签

    # 像分支一样切换tag
    git checkout tag_name
    

贮藏与清理

  • 贮藏修改内容

    # 直接贮藏
    git stash
    
    # 为贮藏添加注释
    git stash save -u "xxx"
    
  • 查看贮藏列表

    # 查看贮藏列表
    git stash list
    
    # 查看贮藏差异
    git stash show -p
    
    # 查看当次贮藏
    git stash show stash@{n}
    
  • 应用贮藏

    # 默认应用最近一次贮藏
    git stash apply stash@{n}
    
  • 删除贮藏

    git stash remove stash@{n}
    

版本回退

  • 工作区

    # 撤销单个文件
    git checkout filename
    
    # 撤销文件夹
    git checkout 目录/*
    
    # 撤销所有文件修改
    git checkout .
    
    # 清理所有未跟踪文件
    git clean -f -d
    
  • 暂存区

    # 撤销单个文件
    git checkout - filename
    
    # 撤销文件夹
    git checkout - 目录/*
    
    # 撤销所有文件修改
    git checkout - .
    
  • 撤销本地仓库(commit)

    git reset
    --mix:撤销git commit且撤销git add,不删除工作区代码修改
    默认reset方式git reset --mix HEAD^ == git reset HEAD^
    
    --soft:撤销git commit但不撤销git add,不删除工作区代码修改;此时git checkout回退暂存区->工作区失败->使用git restore --staged 文件名
    
    --hard:撤销git commit且撤销git add,且删除工作区代码修改
    恢复到上一次commit的记录
    
  • 撤销远程仓库(push)

    reset方式

    1.git reset HEAD | commit_id
    2.git push --force (使用强制push,因为此时本地落后远程)
    

    revert方式

    1.git revert HEAD | commit_id
    2.git push
    

    区别

    • git reset是从分支中删除commit,回退后旧commit记录消失;reset跟的commit号为回退前的commit_id(索引从0开始)
    • git revert回退后会产生新的commit,回退后旧commit记录仍存在;revert跟的commit号为当前要回退的commit_id(索引从1开始)

实用命令

  • cherry-pick:将连同commit_id将提交拷贝到当前分支

    git cherry-pick commit_id [commit_id2]
    --continue:修改cherry-pick冲突后继续
    --abort:放弃合并回到cherry-pick之前
    --quit:退出cherry-pick但不回到操作之前
    

配置多个SSH Key

背景
当有多个git账号时,比如:

a. 一个gitee,用于公司内部的工作开发;
b. 一个github,用于自己进行一些开发活动;

解决方法
生成一个公司用的SSH-Key
$ ssh-keygen -t rsa -C ‘xxxxx@company.com’ -f ~/.ssh/gitee_id_rsa
生成一个github用的SSH-Key
$ ssh-keygen -t rsa -C ‘xxxxx@qq.com’ -f ~/.ssh/github_id_rsa
在 ~/.ssh 目录下新建一个config文件,添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
gitee

Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa

github

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

4.用ssh命令分别测试

$ ssh -T git@gitee.com
$ ssh -T git@github.com

Gitee添加ssh密钥

1.头像>>>设置>>>SSH公钥
在这里插入图片描述
2.拷贝已生成的id_rsa.pub内容到ssh公钥处
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值