viva
  • 主页
  • 开发
    • IDE环境
      • Vim
      • VSCode
        • code-server
        • theia
    • Golang手册
    • Ansible
    • SaltStack
      • salt-api
    • Python
      • Q&A
      • Hello,world!
      • 类型
        • 数字
        • 字符串
        • 列表
        • 元组
        • 集合
        • 字典
      • 语法
        • 流程控制
        • 循环
      • 工具
        • pip
        • pyenv
        • selenium
      • 示例
    • Shell
    • Vue
      • ant-design
      • vue-material
    • Java
  • 随笔
    • WSL2
    • Git
    • Markdown
      • mermaid
    • Linux
      • 时钟同步
      • 账号
      • 文件
      • SSH
      • systemd
      • TLS加密
        • Openssl
      • 存储
        • rsync
        • NFS
      • 路由
      • 日志采集
        • Journalctl
        • Fluentd
          • 根据字段匹配对日志进行结构化
        • Logstash
    • 虚拟化
      • Hyper-V
      • PXE
    • 命令行工具
      • zsh
    • Nexus3
    • 堡垒机
      • JumpServer
    • 测试工具
      • ioping
      • apache bench
      • dd
      • postman
    • 开源项目管理
      • Github
    • 软件包管理
    • 网络镜像源
    • 网关
      • Nginx
  • 存储
    • Ceph
      • 安装
      • 故障处理
    • Etcd
    • Mysql
  • 网络
    • Overlay网络
    • IPVS
    • 网络工具
      • tshark
      • tcpdump
    • 防火墙
      • nftables
      • firewalld
      • iptables
    • 域名解析
      • dig
      • nslookup
      • dnsmasq
    • 代理
      • Clash
      • Redsocks
      • Redsocks2
      • COW
      • Proxfier
  • 云原生
    • 容器
      • Docker
        • Dockerfile
        • docker-compose
      • Podman
      • 原理
        • Chroot
        • Namespace
        • Cgroup
    • 镜像仓库
      • Harbor
    • Kubernetes
      • 部署
        • Kind
        • Minikube
        • kubespray
      • CNI
        • Flannel
        • OVS
        • Calico
      • Operator
        • OperatorSDK
      • StorageClass
      • Q&A
    • Openshift
      • 集群部署
      • 快速使用
    • Prometheus
      • prometheus-operator
      • kube-prometheus
      • Thanos
        • 组件
          • Bucket
          • Check
          • Compact
          • Querier
          • Receiver
          • Ruler
          • Sidecar
          • Store
        • 参考资料
      • Cortex
        • 组件
          • Alertmanager
          • Config
          • Distributor
          • Ingester
          • Querier
          • Query Frontend
          • Ruler
        • 参考资料
      • Thanos与Cortex方案对比
      • 参考资料
      • Q&A
    • Skywalking
    • Rook
    • Helm
    • Istio
    • 应用部署
      • Nexus
      • RabbitMQ
    • 参考资料
  • DevOps
    • 开源DevOps平台
    • CICD
      • Jenkins
    • 参考资料
  • 机器学习
    • Kubeflow
      • 示例
由 GitBook 提供支持
在本页
  • 安装
  • 使用
  • 初始化仓库
  • 配置作者信息
  • 子模块
  • 实用技巧
  • 大文件存储git-lfs
  • github代理
  • 将多次提交进行合并
  • 撤销已提交的改动
  • 撤销未add的改动
  • 撤销已add但未commit的改动
  1. 随笔

Git

上一页WSL2下一页Markdown

最后更新于4年前

安装

使用

初始化仓库

git init

配置作者信息

在项目提交前需要配置用户名和邮箱,在许多开源项目中还要求添加签名

git config user.username {{ 用户名 }}
git config user.email {{ 邮箱 }}

或者修改项目中的git配置文件

.git/config
[user]
        name = {{ 用户名 }}
        email = {{ 邮箱 }}

如果需要使配置全局生效,可附加参数--global

在提交commit后如果发现其中的作者信息没有更新,可以使用下述命令重置作者信息并重新提交

 git commit -s --amend --reset-author

子模块

例子:添加子模块

git submodule add <项目地址> <目标路径>

实用技巧

大文件存储git-lfs

github代理

git拉取推送代码的方式有http和ssh两种

http代理

http方式的代理可通过设置环境变量http_proxy和https_proxy指定。

export http_proxy=http://{{ http代理服务地址 }}:{{ http代理服务端口 }}
export https_proxy=http://{{ http代理服务地址 }}:{{ http代理服务端口 }}

以上方式是直接修改系统的代理配置,也可通过git自身的配置修改代理,通过命令行

git config --global http.proxy 'socks5://127.0.0.1:1081'
git config --global https.proxy 'socks5://127.0.0.1:1081'

或者修改配置文件

~/.gitconfig
[http]
        proxy = socks5://127.0.0.1:1081
[https]
        proxy = socks5://127.0.0.1:1081

ssh代理

yum install nc -y

在~/.ssh/config中为需要代理的主机名配置ProxyCommand

~/.ssh/config
Host github.com
        User    git
        Hostname        github.com
        Port    22
        Proxycommand    /usr/bin/ncat --proxy 127.0.0.1:1081 --proxy-type socks5 %h %p

将多次提交进行合并

撤销已提交的改动

1. git reset commitId,(注:不要带--hard)到上个版本 2. git stash,暂存修改 3. git push --force, 强制push,远程的最新的一次commit被删除 4. git stash pop,释放暂存的修改,开始修改代码 5. git add . -> git commit -m "massage" -> git push

如果是仅修改commit描述

1. git commit --amend(注:修改完成后Esc+wq+Enter保存退出) 2. git push --force

撤销未add的改动

git checkout -- {{ path }}

撤销已add但未commit的改动

git reset {{ commit_id or branch or path}}

首先安装工具

nc
Git编译安装教程/Linux安装Git最新版 - 云+社区 - 腾讯云
Git LFS的使用简书
Logo
(Git)合并多个commitSegmentFault 思否
Logo