大家好,欢迎来到IT知识分享网。
下面是一份简单的Git实战教程,主要涵盖几个基础操作步骤:
1. 安装Git
首先,你需要在你的计算机上安装Git。你可以去Git官方网站下载并安装对应操作系统的版本:https://git-scm.com/downloads
2. 创建版本库(Repository)
在本地创建一个新的Git仓库:
mkdir myproject cd myproject git init
这里的myproject是你自定义的项目名称。
3. 添加文件并提交
在项目中创建或复制文件后,使用以下命令添加文件到暂存区并提交:
touch README.md git add README.md git commit -m "Initial commit with README file"
4. 设置用户名和邮箱
在首次使用Git前,你需要设置你的用户名和邮箱,这对于跟踪提交记录非常重要:
git config --global user.name "Your Name" git config --global user.email ""
5. 连接到远程仓库(如GitHub、GitLab或Gitee)
首先在远程仓库平台创建一个新的空仓库。然后,将本地仓库与远程仓库关联并推送上代码:
# 添加远程仓库地址 git remote add origin https://github.com/yourusername/yourrepository.git # 推送本地仓库到远程仓库(默认分支为master,现在一般推荐main) git push -u origin main
6. 克隆现有仓库
如果你想要克隆一个已经存在的远程仓库到本地,可以这样做:
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. 分支管理
-
创建分支:
git branch feature-x # 创建名为feature-x的新分支
-
切换分支:
git checkout feature-x # 切换到feature-x分支
-
或使用新版本的Git(>= 2.23)中的简洁命令:
git switch feature-x
-
创建并立即切换到新分支:
git checkout -b feature-x # 创建并切换到名为feature-x的新分支
-
或使用新版本的Git命令:
git switch -c feature-x
-
合并分支:
git checkout main # 切换回主分支 git merge feature-x # 将feature-x分支的更改合并到当前分支(这里是main)
-
删除分支:
git branch -d feature-x # 删除已合并的feature-x分支
如果分支未被合并并且你想强制删除,可以使用 -D 代替 -d。
9. 处理冲突
在合并过程中可能出现冲突,此时需要手动解决冲突,并再次提交。
1.当出现冲突时,编辑冲突文件,保留你希望保留的部分,移除Git插入的冲突标记(例如 <<<<<<< HEAD, =======, >>>>>>> otherbranch)。
2.使用 git add 命令将解决冲突后的文件加入暂存区。
执行 git commit 以提交合并。
10. 标签管理
-
创建标签:
git tag v1.0 # 创建一个名为v1.0的标签,指向当前HEAD git tag -a v1.1 -m "Version 1.1 release" HEAD^ # 创建带有注释的标签,指向HEAD的父提交
-
推送标签到远程仓库:
git push origin --tags # 将所有本地标签推送到远程仓库
11. 查看历史记录
-
查看提交历史:
git log # 显示详细的提交历史
-
查看简洁历史:
git log --oneline # 显示每条提交记录的简洁摘要
-
查找特定提交:
git log --grep="关键词" # 根据提交信息中的关键词搜索
-
查看某次提交的内容差异:
git diff <commit-id> # 查看指定提交与上一次提交之间的差异 git show <commit-id> # 显示指定提交的详细信息以及内容差异
12. 回滚操作
-
撤销最后一次提交(未推送):
git reset --soft HEAD~1 # 保留更改,撤销提交 git reset --hard HEAD~1 # 删除更改,撤销提交
-
回滚到任意提交:
git checkout <commit-id> # 检出特定提交,但不会改变HEAD指针 git reset --hard <commit-id> # 强制重置HEAD指针到指定提交,丢弃之后的所有提交
-
撤销对工作区的修改:
git checkout . # 恢复所有未暂存的更改
13. 配置忽略文件
创建.gitignore文件,列出不想被Git追踪的文件或文件类型。例如:
*.log build/ dist/ node_modules/ .env
14. 存储密码和凭证
为了避免频繁输入GitHub/GitLab等远程仓库的用户名和密码,可以使用git-credential-cache或git-credential-store存储凭证,或者配置SSH密钥。
15. 子模块管理
-
添加子模块
子模块允许你将一个Git仓库作为另一个Git仓库的组成部分。要添加子模块到你的项目中:
git submodule add https://example.com/submodule.git path/to/submodule # 添加子模块
这里,https://example.com/submodule.git 是子模块仓库的URL,path/to/submodule 是你希望在项目中放置子模块的路径。
-
克隆包含子模块的仓库
当你克隆一个包含子模块的项目时,需要运行两个命令:
git clone https://example.com/main-repo.git # 克隆主仓库 cd main-repo git submodule update --init --recursive # 初始化并拉取所有子模块
-
更新子模块
若要更新子模块至特定版本或最新版本,需进入子模块目录:
cd path/to/submodule git fetch origin git checkout <branch-or-commit> cd ..
-
然后更新父项目的子模块引用:
git add path/to/submodule git commit -m "Update submodule to a new version"
16. Stash(暂存)
-
保存未提交的更改
当你需要暂时把未提交的更改放到一边,以便切换分支或执行其他操作时,可以使用stash:
git stash # 保存所有未提交的更改
-
恢复暂存的更改
要恢复暂存的更改,可以使用以下命令:
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示例
假设你想整理一下最近的几个提交,可以使用以下命令:
git rebase -i HEAD~4 # 对最近4个提交进行交互式重做
这将会打开一个文本编辑器,列出最近4个提交及其哈希值。在这个文本文件中,你可以:
将pick改为reword以修改提交消息
将pick改为edit以临时停止重做过程并在提交之间进行修改
将pick改为squash或fixup以合并提交
改变提交的顺序,即移动各行的位置
保存并关闭编辑器后,Git会按照你指定的方式重新应用这些提交。
19. Cherry-Pick
Cherry-pick命令让你能够选择性地将某个提交应用到当前分支。
git cherry-pick <commit-hash> # 把指定提交的内容复制到当前分支的新的提交中
20. Reflog
Reflog记录了所有HEAD和分支引用的变化,即使那些已经被删除的提交也能在这里找到。
-
查看Reflog
git reflog # 显示所有HEAD的引用日志
如果你误删了提交或丢失了分支,Reflog可以帮助你找回它们。
21. 工作流示例
以上内容只是Git强大功能的一部分。掌握这些基础知识后,你可以根据团队需求选择适合的工作流,更好地利用Git进行版本控制和协作开发。随着实践的深入,你会发现Git在大型项目管理、多人协作等方面提供的众多高级特性非常有价值。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158737.html