gite 实战教程

下面是一份简单的Git实战教程,主要涵盖几个基础操作步骤:

1. 安装Git

首先,你需要在你的计算机上安装Git。你可以去Git官方网站下载并安装对应操作系统的版本:https://git-scm.com/downloads

2. 创建版本库(Repository)

在本地创建一个新的Git仓库:

bash 复制代码
mkdir myproject
cd myproject
git init

这里的myproject是你自定义的项目名称。

3. 添加文件并提交

在项目中创建或复制文件后,使用以下命令添加文件到暂存区并提交:

bash 复制代码
touch README.md
git add README.md
git commit -m "Initial commit with README file"

4. 设置用户名和邮箱

在首次使用Git前,你需要设置你的用户名和邮箱,这对于跟踪提交记录非常重要:

bash 复制代码
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

5. 连接到远程仓库(如GitHub、GitLab或Gitee)

首先在远程仓库平台创建一个新的空仓库。然后,将本地仓库与远程仓库关联并推送上代码:

bash 复制代码
# 添加远程仓库地址
git remote add origin https://github.com/yourusername/yourrepository.git

# 推送本地仓库到远程仓库(默认分支为master,现在一般推荐main)
git push -u origin main

6. 克隆现有仓库

如果你想要克隆一个已经存在的远程仓库到本地,可以这样做:

bash 复制代码
git clone https://github.com/otheruser/someproject.git

7. 日常操作

查看状态:git status

拉取更新:git pull origin main

添加改动:git add . (添加所有改动)或 git add <file> (只添加指定文件)

提交改动:git commit -m "Commit message"

推送改动:git push origin main

8. 分支管理

创建分支:

bash 复制代码
git branch feature-x  # 创建名为feature-x的新分支

切换分支:

bash 复制代码
git checkout feature-x  # 切换到feature-x分支

或使用新版本的Git(>= 2.23)中的简洁命令:

bash 复制代码
git switch feature-x

创建并立即切换到新分支:

bash 复制代码
git checkout -b feature-x  # 创建并切换到名为feature-x的新分支

或使用新版本的Git命令:

bash 复制代码
git switch -c feature-x

合并分支:

bash 复制代码
git checkout main  # 切换回主分支
git merge feature-x  # 将feature-x分支的更改合并到当前分支(这里是main)

删除分支:

bash 复制代码
git branch -d feature-x  # 删除已合并的feature-x分支

如果分支未被合并并且你想强制删除,可以使用 -D 代替 -d。

9. 处理冲突

在合并过程中可能出现冲突,此时需要手动解决冲突,并再次提交。
1.当出现冲突时,编辑冲突文件,保留你希望保留的部分,移除Git插入的冲突标记(例如 <<<<<<< HEAD, =======, >>>>>>> otherbranch)。

2.使用 git add 命令将解决冲突后的文件加入暂存区。

执行 git commit 以提交合并。

10. 标签管理

创建标签:

bash 复制代码
git tag v1.0  # 创建一个名为v1.0的标签,指向当前HEAD
git tag -a v1.1 -m "Version 1.1 release" HEAD^  # 创建带有注释的标签,指向HEAD的父提交

推送标签到远程仓库:

bash 复制代码
git push origin --tags  # 将所有本地标签推送到远程仓库

11. 查看历史记录

查看提交历史:

bash 复制代码
git log  # 显示详细的提交历史

查看简洁历史:

bash 复制代码
git log --oneline  # 显示每条提交记录的简洁摘要

查找特定提交:

bash 复制代码
git log --grep="关键词"  # 根据提交信息中的关键词搜索

查看某次提交的内容差异:

bash 复制代码
git diff <commit-id>  # 查看指定提交与上一次提交之间的差异
git show <commit-id>  # 显示指定提交的详细信息以及内容差异

12. 回滚操作

撤销最后一次提交(未推送):

bash 复制代码
git reset --soft HEAD~1  # 保留更改,撤销提交
git reset --hard HEAD~1  # 删除更改,撤销提交

回滚到任意提交:

bash 复制代码
git checkout <commit-id>  # 检出特定提交,但不会改变HEAD指针
git reset --hard <commit-id>  # 强制重置HEAD指针到指定提交,丢弃之后的所有提交

撤销对工作区的修改:

bash 复制代码
git checkout .  # 恢复所有未暂存的更改

13. 配置忽略文件

创建.gitignore文件,列出不想被Git追踪的文件或文件类型。例如:

bash 复制代码
*.log
build/
dist/
node_modules/
.env

14. 存储密码和凭证

为了避免频繁输入GitHub/GitLab等远程仓库的用户名和密码,可以使用git-credential-cache或git-credential-store存储凭证,或者配置SSH密钥。

15. 子模块管理

添加子模块

子模块允许你将一个Git仓库作为另一个Git仓库的组成部分。要添加子模块到你的项目中:

bash 复制代码
git submodule add https://example.com/submodule.git path/to/submodule  # 添加子模块

这里,https://example.com/submodule.git 是子模块仓库的URL,path/to/submodule 是你希望在项目中放置子模块的路径。

克隆包含子模块的仓库

当你克隆一个包含子模块的项目时,需要运行两个命令:

bash 复制代码
git clone https://example.com/main-repo.git  # 克隆主仓库
cd main-repo
git submodule update --init --recursive  # 初始化并拉取所有子模块

更新子模块

若要更新子模块至特定版本或最新版本,需进入子模块目录:

bash 复制代码
cd path/to/submodule
git fetch origin
git checkout <branch-or-commit>
cd ..

然后更新父项目的子模块引用:

bash 复制代码
git add path/to/submodule
git commit -m "Update submodule to a new version"

16. Stash(暂存)

保存未提交的更改

当你需要暂时把未提交的更改放到一边,以便切换分支或执行其他操作时,可以使用stash:

bash 复制代码
git stash  # 保存所有未提交的更改

恢复暂存的更改

要恢复暂存的更改,可以使用以下命令:

bash 复制代码
git stash apply  # 应用最近暂存的更改
git stash pop  # 应用并删除最近暂存的更改

17. Pull Request 和 Merge Request

在GitHub、GitLab等托管平台上,Pull Request(PR)或Merge Request(MR)是一种常见的协作方式,用于向项目贡献代码。开发人员通常会从自己的分支发起PR/MR,请求项目管理员或维护者将其更改合并到主分支。

18. 交互式Rebase

交互式Rebase允许你修改一系列提交的历史,包括但不限于合并提交、重排提交顺序、修改提交消息以及 squash(压缩)多个提交。

交互式Rebase示例

假设你想整理一下最近的几个提交,可以使用以下命令:

bash 复制代码
git rebase -i HEAD~4  # 对最近4个提交进行交互式重做

这将会打开一个文本编辑器,列出最近4个提交及其哈希值。在这个文本文件中,你可以:
将pick改为reword以修改提交消息

将pick改为edit以临时停止重做过程并在提交之间进行修改

将pick改为squash或fixup以合并提交

改变提交的顺序,即移动各行的位置
保存并关闭编辑器后,Git会按照你指定的方式重新应用这些提交。

19. Cherry-Pick

Cherry-pick命令让你能够选择性地将某个提交应用到当前分支。

bash 复制代码
git cherry-pick <commit-hash>  # 把指定提交的内容复制到当前分支的新的提交中

20. Reflog

Reflog记录了所有HEAD和分支引用的变化,即使那些已经被删除的提交也能在这里找到。

查看Reflog

bash 复制代码
git reflog  # 显示所有HEAD的引用日志

如果你误删了提交或丢失了分支,Reflog可以帮助你找回它们。

21. 工作流示例

Git的工作流有很多,如集中式工作流、特性分支工作流、Forking工作流、GitFlow工作流等。选择哪种工作流取决于团队的需求和规模。

例如,在特性分支工作流中,每个新功能或修复都创建在一个独立的分支上,完成后再合并回主分支。

以上内容只是Git强大功能的一部分。掌握这些基础知识后,你可以根据团队需求选择适合的工作流,更好地利用Git进行版本控制和协作开发。随着实践的深入,你会发现Git在大型项目管理、多人协作等方面提供的众多高级特性非常有价值。

相关推荐
LCY13310 小时前
spring 中的DAO是什么
运维·git·jenkins
柚几哥哥13 小时前
IntelliJ IDEA全栈Git指南:从零构建到高效协作开发
java·git·intellij-idea
遇到困难睡大觉哈哈13 小时前
Git推送错误解决方案:`rejected -> master (fetch first)`
大数据·git·elasticsearch
ON.LIN13 小时前
Git提交本地项目到Github
git·github
九月镇灵将14 小时前
6.git项目实现变更拉取与上传
git·python·scrapy·scrapyd·gitpython·gerapy
wuyijysx14 小时前
ubuntu git cola gui
git·软件工具
九月镇灵将16 小时前
GitPython库快速应用入门
git·python·gitpython
程序猿chen17 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
前端三叶草20 小时前
git subtree 最佳实践
git
Code_Geo1 天前
Git操作指南
git