Git 的使用 | 青训营

2023年 8月 29日 40.7k 0

版本控制

版本控制是记录一个或者多个文件内容变化,以便将来查阅特定版本修订的系统。版本控制能让我们更好地关注变更,了解到每个版本的改动,方便对改动进行检查,预防事故发生;也能让我们随时切换不同的版本,回滚误删误改的问题代码。

版本控制有:

  • 本地版本控制,只能本地使用,无法协作,代表 RCS。
  • 集中式版本控制,远端服务器保存版本,本地不保存,分支支持稍逊,服务端故障荣日导致版本丢失,代表 SVN。
  • 分布式版本控制,本地可提交,可远程同步,分支管理功能强大,尽管学习成本更高,代表 Git。

Git 最初是由 Linus Torvalds(Linux内核的创建者) 开发的,最初是为了管理 Linux 内核的代码而创建的。Git 于2005年发布,从那时起就变得越来越流行,现在已成为许多开发人员使用的标准版本控制系统。

Git 基本使用

Git 目录

初始化

mkdir study
cd study

git init

部分参数

--initial-branch # 初始化的分支
--bare # 创建一个裸仓库(纯 Git 目录,没有工作目录) 
--template # 通过模版创建预先构建好的自定义 git 目录

Git仓库、工作区、暂存区

git-dir.png

Git 配置

不同级别:主要用到 --global--local

用户名,邮箱

git config --global user.name "Bob"
git config --global user.email "bob@gmail.com"

instead of

git config --global url.git@github.com:.insteadOf https://github.com

命令别名

git config --global alias.cin "commit --amend --no-commit"

Git Remote

查看

git remote -v

添加

git remote add upstream git@github.com:git/git.git

同一个 origin 设置不同 fetch 和 push url

git remote set-url --add --push origin git@github.com:MY_REPO/git

免密配置

HTTPS

内存:git config --global credential.helper 'cache --timeout=3600'

文件:git config --global credential.helper 'store --file /path/to/file'

不指定则默认 ~/.git-credentials

密钥信息存在指定文件中,格式 https://{username}:{passwd}@github.com

SSH

URL:git@github.com:git/git.git

SSH 可以通过公私钥的机制,将生成公钥存放在服务端,从而实现免密访问。目前的Key的类型四种,分别是 dsa、rsa、ecdsa、ed25519,默认使用的是rsa,由于一些安全问题,现在已经不推荐使用dsa和rsa了,优先推荐使用ed25519

ssh-keygen -t ed25519 -C "youremail@example.com"

密钥默认存在 ~/.ssh/id_ed25519.pub

然后将公钥复制到 Github/Gitlab 等托管网站的相应位置,它们的文档写的很清楚。

基本操作

git add .
git commit -m "commit message"
git push origin main

拉取远程更新

git pull origin main

查看 commit 记录

git log

创建、切换分支

git checkout -b new_branch

git checkout main

git branch -d new_branch

修改历史版本

git commit -amend

修改最近一次,不改变其他,适合一个人开发,推送后发现小错误。

git add . && git commit -amend --no-edit && git push -f origin main

通过 git rebase -i HEAD~3 可以实现对最近3个commit的修改:

  • 合并 commit
  • 修改具体的 commit message
  • 删除某个 commit
  • 标签操作

    Git 中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。

    • git tag 列出已有的标签
    • git tag [name] 创建标签

    解决冲突

    从远程仓库拉取代码时与当前目录里的代码发生冲突是很正常的,如果发生了:

  • 使用git status命令查看哪些文件发生了冲突。
  • 手动编辑冲突文件以解决冲突。
  • 使用git add命令将文件标记为已解决。
  • 使用git commit命令提交更改。
  • 使用编辑器或者 IDE 可以让冲突解决更方便一点。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论