This is a GreatWorld...

Git 学习笔记.md 5.6KB

Git 学习笔记

一、Git 简介

Git 是一个开源的分布式版本控制系统,用于有效、高速地处理从小到大的项目版本管理。它允许团队成员在本地工作,然后将更改合并到中央仓库中,极大地提高了开发效率和协作便利性。

二、基本概念

  1. ##### 仓库(Repository)

存储项目所有文件和文件夹的完整历史记录,包括每个版本的变更信息。每个项目都有一个仓库,通常在项目根目录下有一个隐藏的 .git 文件夹,里面存放着仓库的元数据。

  1. ##### 工作区(Working Directory)

即项目文件夹,是我们进行代码编辑、添加、删除等操作的地方。工作区中的文件可以是未修改的、已修改未暂存的或已暂存的状态。

  1. ##### 暂存区(Staging Area)

也称为索引(Index),是一个文件,保存了下次将提交到仓库中的文件列表信息。通过 git add 命令可以将工作区的文件添加到暂存区,暂存区的文件状态会被记录下来,等待提交。

  1. ##### 提交(Commit)

将暂存区的文件提交到本地仓库的操作。每次提交都会生成一个唯一的提交 ID,记录了提交时的文件状态、提交信息(如作者、日期、描述等)。通过 git commit 命令完成提交,提交后暂存区会被清空。

三、基本操作

  1. ##### 配置 Git

• 全局配置用户名和邮箱:

   git config --global user.name "Your Name"
   
   git config --global user.email "your_email@example.com"

• 查看配置信息:

   git config --list
  1. ##### 创建和克隆仓库

• 初始化本地仓库:

  cd project_folder
  git init

• 克隆远程仓库:

  git clone https://github.com/username/repository.git
  1. ##### 添加和提交文件

• 添加文件到暂存区:

  git add filename

或添加所有修改过的文件:

  git add .

• 提交暂存区的文件到本地仓库:

  git commit -m "Commit message"
  1. ##### 查看状态和历史

• 查看工作区和暂存区的状态:

  git status

• 查看提交历史:

  git log

可以通过 git log --oneline 查看简洁的提交历史,每条提交只显示一行信息。5. 分支管理• 查看当前分支:

  git branch

• 创建新分支:

  git branch branch_name

• 切换分支:

  git checkout branch_name

或使用 git switch branch_name (Git 2.23 之后的新命令)

• 合并分支:

  git checkout target_branch
  git merge source_branch

source_branch 分支的更改合并到 target_branch 分支中6. 远程仓库操作

• 查看远程仓库信息:

  git remote -v

• 添加远程仓库:

  git remote add origin https://github.com/username/repository.git

• 推送本地分支到远程仓库:

  git push -u origin branch_name

• 从远程仓库拉取更新:

  git pull origin branch_name

四、常用技巧

  1. ##### 撤销修改

• 撤销工作区的修改(未暂存的文件):

   git checkout -- filename

• 撤销暂存区的修改:

   git reset HEAD filename
  1. ##### 查看文件差异

• 查看工作区和暂存区的差异:

  git diff

• 查看暂存区和本地仓库的差异:

  git diff --cached
  1. ##### 标签管理

• 创建标签:

  git tag tag_name

• 查看标签:

  git tag

• 推送标签到远程仓库:

  git push origin tag_name
  1. ##### 忽略文件

创建 .gitignore 文件,在其中列出不需要被 Git 跟踪的文件或文件夹模式,例如:

  #忽略所有 `.log` 文件
  *.log
  # 忽略 node_modules 目录
  node_modules/

五、常见问题及解决方法

  1. ##### 冲突解决

当合并分支时出现冲突,Git 会在冲突文件中标记出冲突部分,需要手动编辑文件解决冲突,然后添加文件到暂存区并提交。

  1. ##### 忘记添加文件到暂存区就提交了

可以通过 git commit --amend 命令修改最后一次提交,添加遗漏的文件后再提交。

  1. ##### 无法推送分支到远程仓库

如果远程仓库有更新,需要先拉取更新再推送,或者使用 git push -f 强制推送(需谨慎使用,可能会覆盖远程仓库中的更改)。

六、进阶操作

  1. ##### 交互式暂存

通过 git add -i 命令进入交互式暂存模式,可以更精细地选择要暂存的文件或文件块。

  1. ##### 变基(Rebase)

将本地分支的更改重新应用到另一个分支上,使提交历史更加整洁。使用 git rebase target_branch 命令,但需注意变基可能会导致历史记录改写,尽量在未推送的本地分支上使用。

  1. ##### 樱桃采摘(Cherry-pick)

将特定的提交从一个分支应用到另一个分支。使用 git cherry-pick commit_id 命令,适用于需要将个别重要提交迁移到其他分支的场景。

七、资源推荐

• 官方文档:https://git-scm.com/doc(详细全面,是学习 Git 的权威资料)

• Pro Git 书籍:https://git-scm.com/book/zh-tw/v2(内容丰富,适合系统学习)

• GitHub 学习资源:https://lab.github.com/(通过实践项目学习 Git 和 GitHub 的使用)。