Git 简介
Git 是分布式版本控制系统,它可以帮助开发人员跟踪和管理代码的更改。Git 可以记录代码的历史记录,并允许您在不同版本之间切换。
通过历史记录可以查看:
- 进行了哪些更改?
- 谁进行了更改?
- 何时进行了更改?
- 为什么需要更改?
- 仓库
仓库是用于存储代码的地方,其中包含所有的文件和历史记录。仓库可以被克隆到本地,这样您就可以在本地进行修改,并在需要时提交到远程仓库。
托管Git远程仓库:
- githup
- gitee
- gitlab
- gitcode
- 提交(Commit)
提交是 Git 中的一个操作,表示将更改保存到仓库中。每次提交都会创建一个新的版本,您可以在任何时候查看之前的提交。 - 分支(Branch)
分支是在仓库中创建的并行开发线。不同的分支可以用于不同的功能开发或修复错误。您可以在分支上工作,而不影响主分支。完成工作后,可以将分支合并回主分支。 - 合并(Merge)
合并是将两个或多个分支的更改合并到一起的操作。这通常发生在一个分支完成其任务,需要将其更改整合到主分支或其他分支时。 - 拉取请求(Pull Request)
拉取请求是在使用 Git 进行团队协作时常用的步骤。它表示一个开发者请求将他们的分支合并到主分支或其他分支。在合并之前,团队成员可以检查更改并提供反馈。 - 克隆(Clone)
克隆是将远程仓库复制到本地机器的过程。这样,您就可以在本地对仓库进行操作,而不需要连接到远程仓库。 - 推送(Push)
推送是将本地提交上传到远程仓库的操作。这使得其他人可以拉取您的更改。 - 拉取(Pull)
拉取是从远程仓库获取更新并合并到本地仓库的操作。它通常结合了 Fetch(获取更新)和 Merge(合并更新)两个步骤。
Git 是一个功能强大的工具,它提供了一套完整的版本控制策略,可以帮助团队协作开发代码,并管理软件项目的整个生命周期。
Git 相关操作
- Git 基本操作:
git status: 查看本地仓库的状态,包括哪些文件被修改、暂存或未跟踪。
git add: 将修改的文件添加到暂存区(staging area),准备提交。
git commit: 提交暂存区中的修改到本地仓库,生成新的提交记录。
git push: 将本地仓库的提交推送到远程仓库,与其他团队成员共享更改。
git pull: 从远程仓库拉取最新的更改,并合并到本地仓库。
git clone: 克隆一个远程仓库到本地,创建一个新的本地仓库副本。 - Git 分支管理:
git branch: 显示所有本地分支。
git checkout: 切换到另一个分支。
git branch [分支名]: 创建一个新的分支。
git merge: 合并一个分支到当前分支。 - Git 远程仓库:
git remote: 显示所有远程仓库。
git add remote [仓库名] [仓库地址]: 添加一个新的远程仓库。
git push [仓库名] [分支名]: 将本地分支推送到远程仓库。
git pull [仓库名] [分支名]: 从远程仓库拉取并合并到本地分支。 - Git 撤销操作:
git reset: 撤销已经提交的更改,有不同的模式可以选择,如 soft, mixed, hard(与上一次commit保持一致)。
git revert: 创建一个新的提交来撤销之前的更改,而不影响历史记录。 - Git 标签:
git tag: 显示所有标签。
git tag [标签名]: 创建一个标签。
git push [仓库名] [标签名]: 将标签推送到远程仓库。
git push [仓库名] --tags: 将所有标签推送到远程仓库。 - Git 日志:
git log: 显示提交历史记录。
git log --pretty=oneline: 以简洁的格式显示提交历史。
git log [分支名]: 显示特定分支的提交历史 - Git 删除:
git push [仓库名] [:分支名]: 删除远程分支或标记。
IDEA Git操作
管理分支
合并分支:
- Merge(合并)
分支的提交产生一个新的记录,合并到另一个分支。
- 优点:
- 更加安全,不改变分支线
- 保留分支历史,每个分支的历史将被保留
- 使用简单
- 缺点:
- 分支线混乱,在合并后都会产生新节点
- 关系不清晰,分不清是合并还是原始的节点
- Rebase (变基)
重新拉取一个Release分支,把这个分支提交记录放在最新,再通过merge合并Release分支
- 优点:
- 干净的提交历史
- 关系清晰
- 缺点:
- 改变提交记录,可能会改变提交顺序
不要在公共分支执行Rebase
在不同分支合并提交代码:
- cherry-pick(优选)
将一个分支中的提交合并到另一个分支,无冲突直接合并,有冲突解决冲突再合并。
- 切换到合并的分支
- 使用 git cherry-pick [提交记录号...]
- patch(补丁)
将提交形成补丁,在其他分支应用这个补丁。
- 生成补丁
javascript
git format-patch -1 -o /Users/apple
format-patch: 补丁命令
-1 : 最近提交,可以定义最近的几次提交(3为最近3次)也可以使用提交记录号
-o /Users/apple: 补丁文件路径
- 应用补丁
javascript
// 检查补丁
git apply --stat 补丁路径
// 检验是否能打上补丁
git apply --check
// 打补丁
git am 补丁路径
可多选提交,然后创建补丁
中途切换分支:
- stash (暂存)
在切换分支前,将当前变更暂存到栈中,并添加暂存注释,查看暂存区记录,恢复暂存记录。
- 变更暂存到栈中
javascript
git stash
- 添加暂存注释
javascript
git stash save '注释'
- 查看暂存记录
javascript
git stash list
- 恢复暂存记录
javascript
// 恢复最近暂存记录 ,会在暂存区删除
git stash pop
// 恢复最近暂存记录 ,不会在暂存区删除
git stasjh apply stash@{编号}
// 只移除暂存信息,不做恢复
git stasjh drop stash@{编号}
// 查看与本地代码区别
git stash show
给开源项目提交代码
- Fork
使用Fork将开源项目代码快照存在自己的远程仓库,然后拉取代码,新建分支,修改代码,提交推送
- PR
合到开源项目中
回退代码
- Revert(还原)
撤销某些提交,并用新提交覆盖。(逆向生成)
对刚刚还原的提交记录进行还原,就可以将之前还原的重新提交了
- Reset(回退)