Git 学习笔记
一、Git 简介
Git 是一个开源的分布式版本控制系统,用于有效、高速地处理从小到大的项目版本管理。它允许团队成员在本地工作,然后将更改合并到中央仓库中,极大地提高了开发效率和协作便利性。
Git 的安装很容易,按照安装提示即可安装,这里就不一一介绍了。
Git 安装地址:Git - Downloads (git-scm.com)
二、基本概念
-
仓库(Repository)
存储项目所有文件和文件夹的完整历史记录,包括每个版本的变更信息。每个项目都有一个仓库,通常在项目根目录下有一个隐藏的 .git 文件夹,里面存放着仓库的元数据。
-
工作区(Working Directory)
即项目文件夹,是我们进行代码编辑、添加、删除等操作的地方。工作区中的文件可以是未修改的、已修改未暂存的或已暂存的状态。
-
暂存区(Staging Area)
也称为索引(Index),是一个文件,保存了下次将提交到仓库中的文件列表信息。通过 git add 命令可以将工作区的文件添加到暂存区,暂存区的文件状态会被记录下来,等待提交。
-
提交(Commit)
将暂存区的文件提交到本地仓库的操作。每次提交都会生成一个唯一的提交 ID,记录了提交时的文件状态、提交信息(如作者、日期、描述等)。通过 git commit 命令完成提交,提交后暂存区会被清空。
三、基本操作
-
配置 Git
• 全局配置用户名和邮箱:
git config --global user.name "Your Name" git config --global user.email "your_email@example.com"
• 查看配置信息:
git config --list
-
创建和克隆仓库
• 初始化本地仓库:
cd project_folder
git init
• 克隆远程仓库:
git clone https://github.com/username/repository.git
git add filename
或添加所有修改过的文件:
git add .
• 提交暂存区的文件到本地仓库:
git commit -m "Commit message"
git status
• 查看提交历史:
git log
可以通过 `git log --oneline` 查看简洁的提交历史,每条提交只显示一行信息。
• 查看当前分支:
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
分支中
• 查看远程仓库信息:
git remote -v
• 添加远程仓库:
git remote add origin https://github.com/username/repository.git
• 推送本地分支到远程仓库:
git push -u origin branch_name
• 从远程仓库拉取更新:
git pull origin branch_name
四、常用技巧
-
撤销修改
• 撤销工作区的修改(未暂存的文件):
git checkout -- filename
• 撤销暂存区的修改:
git reset HEAD filename
-
查看文件差异
• 查看工作区和暂存区的差异:
git diff
• 查看暂存区和本地仓库的差异:
git diff --cached
• 创建标签:
git tag tag_name
• 查看标签:
git tag
• 推送标签到远程仓库:
git push origin tag_name
创建 .gitignore
文件,在其中列出不需要被 Git 跟踪的文件或文件夹模式,例如:
#忽略所有 `.log` 文件
*.log
# 忽略 node_modules 目录
node_modules/
五、常见问题及解决方法
-
冲突解决
当合并分支时出现冲突,Git 会在冲突文件中标记出冲突部分,需要手动编辑文件解决冲突,然后添加文件到暂存区并提交。
-
忘记添加文件到暂存区就提交了
可以通过
git commit --amend
命令修改最后一次提交,添加遗漏的文件后再提交。 -
无法推送分支到远程仓库
如果远程仓库有更新,需要先拉取更新再推送,或者使用
git push -f
强制推送(需谨慎使用,可能会覆盖远程仓库中的更改)。
六、进阶操作
-
交互式暂存
通过
git add -i
命令进入交互式暂存模式,可以更精细地选择要暂存的文件或文件块。 -
变基(Rebase)
将本地分支的更改重新应用到另一个分支上,使提交历史更加整洁。使用 git rebase target_branch 命令,但需注意变基可能会导致历史记录改写,尽量在未推送的本地分支上使用。
-
樱桃采摘(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 的使用)。