Git是最流行的开源版本控制系统,大多数项目都用它来追踪文本文件(代码)的变化。而Github是一个国外的基于Git的代码社交平台,可用于分享代码和团队合作。类似产品国内的有Gitee等。

1. 介绍与安装

想必计算机/电子等相关专业的同学或者爱好者都有过从Github下载代码的经历吧。当你想要下载别人代码库中的代码时,使用git clone获取的会比下载zip多一个.git文件,即clone的代码包含版本历史,处于版本管理下,而下载zip方式只会下载当前版本的源代码而不处于版本管理下。因此使用git clone很大的好处是可以方便的通过git pull来更新你本地的代码为远程的最新版本。

如果你还想在别人代码的基础上进行修改和版本控制,最终再发布到类似于Github这样的平台上,那么你需要先点击 fork,然后再使用自己代码仓库的链接 git clone到本地。

img

要在自己的电脑使用Git,你至少需要点这里完成安装:https://git-scm.com/downloads

安装好后还要配置用户信息,别人可以从你开源的代码中看到这些信息,然后邮件联系你。打开 git bash,

  • 对你的commit操作设置关联的用户名: git config --global user.name "[name]"
  • 对你的commit操作设置关联的邮箱地址: git config --global user.email "[email address]"
  • 启用有帮助的彩色命令行输出: git config --global color.ui auto
  • 设置ssh key,cd ~/.sshls,如果路径下有id_rsa文件,说明已经有了ssh key不需要再生成。否则使用命令ssh-keygen -t rsa -C "yourname@163.com" 生成。

2. 基础概念学习

  • 游戏版 tutorial:进入这个游戏,通过游戏理解Git保存的是什么,理解分支的含义(右下角的问号标志可以查看答案)
    并完成「主要」部分的「基础篇」学习:git commitgit branchgit mergegit rebase命令
    完成「远程」部分的「Push & Pull —— Git 远程仓库!」,包括git clonegit pullgit push命令及模拟练习。
    游戏中的其余命令你可能暂时用不到或者我认为它写的不够实用,你可以选择性学习。

3. 常见的使用场景

与人协作的流程:

git checkout -b dev_branch # 创建一个自己的开发分支
git pull origin master  # 每天早晨第一件事
# 然后开始工作,每有一小段进展就:
git add .
git commit -m "进展内容"
# 每有一个较大的进展就
git push origin:dev_branch
# 如果出现冲突, 编辑器处理完冲突后
git add .
git rebase --continue
img

Squash:多个commit合并成一个

# 假设你的分支名是 'feature-branch'
git checkout feature-branch

# 对最近的 3 次提交进行交互式 rebase
git rebase -i HEAD~3

# 修改 commit 列表,将除了第一个 commit 外的其他 commit 的 'pick' 改成 'squash'
# 保存并关闭编辑器

# 修改合并后的 commit message
# 保存并关闭编辑器

# 推送/强制推送到远程
git push origin feature-branch
# git push origin feature-branch --force

在写commit说明时,建议遵循一定的规范,例如 Angular 规范
<type>(<scope>): <subject>

  • type(必需)用于说明 commit 的类别,使用下面7个标识之一。

    feat:新功能(feature)
    fix:修补bug
    docs:文档(documentation)
    style: 格式(不影响代码运行的变动)
    refactor:重构(即不是新增功能,也不是修改bug的代码变动)
    test:增加测试
    chore:构建过程或辅助工具的变动

  • scope(可选)用于说明 commit 影响的范围,如果你的修改影响了不止一个scope,你可以使用*代替

  • subject(必需)是 commit 目的的简短描述,不超过50个字符。以动词开头,使用第一人称现在时,比如change,而不是changed或changes,第一个字母小写,结尾不加句号

更详细的可以参考segmentfault blog

4. Git常用命令备忘单

  • git clone <url>: Clone(下载)一个已存在于 GitHub 上的仓库,包括所有的文件、分支和提交(commits)
  • git add .: 将所有更改添加到暂存区
  • git commit -m "": git commit不加参数回车,会进入一个类似于vim的编辑器,在这里可以写下大段的message
  • git init: 初始化当前文件夹使用git管理
  • git remote
    git remote add origin <url>: 在使用过 git init 命令后,使用该命令将本地仓库与一个 GitHub 上的空仓库连接起来
    git remote -v: 查看链接的远程仓库
    git remote rm origin: 删除某个远程仓库
    git remote show origin: 查看某个远程仓库的分支等详细信息
  • git pull <远程仓库名> <本地分支名>:<远程分支名>: 拉取远程分支的更新合并到本地。git pull 其实就是 git fetch 和 git merge 的简写,先从远程仓库获取最新的提交记录,然后将这些提交记录合并到你当前的分支中。
  • git push <远程仓库名> <本地分支名>:<远程分支名>: 推送到远程,常用git push origin master其中origin为默认的远程仓库名
  • git status: 查看当前分支、同步分支、显示工作目录和暂存区的当前状态
  • git restore README.md: add前想恢复文件,即恢复未暂存的更改,到上次commit的状态
    git restore --staged README.md: 恢复已暂存的更改,撤销暂存操作
  • git checkout -b <name>: 创建新分支并切换到新分支
    git checkout <name>: 切换分支,name可以是分支名,可以是标签名,也可以是提交记录的哈希值
  • git rebase: 用于个人分支的整理合并,建议不要用于共享分支如master
  • git reflog: 查看历史
  • git reset --hard <分支名>: 将当前分支回退到某一分支

友情链接

  1. 详解VSCode利用Git来可视化管理源代码的方法
  2. 一份简洁的中文Git备忘单

标签: git

添加新评论