git 学习笔记

1.什么是git

笼统地讲,git是一个版本控制系统,用户跟踪记录文件的变化,协作开发代码。

2.基本认识

仓库:用来存储项目文件代码和历史的记录。
提交:新增、修改 目录资源状态到仓库。
分支:一个仓库可以有多个分支,用来多人协作,开发新功能,修改bug,同时进行。独立于主线。
合并:将不同的分支修改合并在一起。

3.git最常用的基本命令

git init:初始化一个新的git仓库
git clone [url]:克隆新的git仓库
git add [file]:将文件的当前状态添加到暂存区。
git commit -m "message":将暂存区的改动提交到仓库。 (一定要先pull,获取远程仓库最新代码)
git push:将本地提交推送到远程仓库。
git pull:从远程仓库拉取最新修改到本地。
git branch test:创建test分支
git checkout test:切换到test分支
git checkout -b test:创建test分支并且切换到test分支

举例:常用的分支合并【目标:将feature分支合并到test分支】

1.merge方式

①切换到test分支 git checkout test
②在test分支执行 git merge feature (如果有冲突,需要手动解决冲突)
③推送代码到远程仓库 git push
【优点:1.简单直接。2.合并保留了每个分支的历史记录,可以清晰地追踪每个分支的变化。】
【缺点:产生额外的合并提交,合并可能会导致复杂的分支结构和困难的代码整合问题】

2.主分支使用rebase方式【一般不介意在主分支使用rebase】

①切换到test分支 git checkout test
②开始rebase git rebase feature
③如果有冲突需要手动解决冲突,解决后将修改的文件标记为已解决 git add <resolved_file>
④继续rebase git rebase --continue
⑤可能需要强推到远程仓库 git push -f
【优点:整洁的提交历史,直接是一条线】
【缺点:可能会改变提交历史,共享的分支上进行rebase,可能会对其他开发者造成困扰】

3.特性分支rebase+主分支使用merge

①切换到特性分支feature分支 git checkout feature
②开始rebase git rebase test
③可能会有冲突,解决后执行 git add <resolved_file>
④继续rebase git rebase --continue
⑤强推送代码到feature git push -f
⑥切换到test分支 git checkout test
⑦执行merge合并到test git merge feature
⑧推送代码到远程仓库 git push
【优点:整洁的提交历史,直接是一条线。不会改变主分支提交历史线】
【缺点:不会保留特性分支的提交历史记录,】
---注意:如果test分支有其他功能的代码,该代码整合到feature上,合并到master分支时也会将test分支其他功能代码合并到master分支--------

4.主分支使用cherry-pick

①切换到test分支 git checkout test

②test分支执行cherry-pick git cherry-pick <commit-hash1> <commit-hash2>【commit-hash* 为特性分支提交的commit ID】
③test分支执行 git push
-----注意:
1.如果<commit-hash*> 有连续的多个commit,test分支可使用:
 ~ 不包含start-commit-hash git cherry-pick <start-commit-hash>..<end-commit-hash>
 ~ 包含start-commit-hash git cherry-pick <start-commit-hash>^..<end-commit-hash>

2.如果特性分支有很多个commit,可以执行rebase合并多条commit,修改为1条commit。test分支cherry-pick合并后的commit

命令行使用rebase合并多条commit

①所在分支 执行 git rebase -i HEAD~n, n是你想要合并的 commit 数量。这会打开一个交互式 rebase 窗口。

image.png

②在交互式窗口中,【需要按 i 键,打开编辑模式才能修改】将要合并的commit 前面的pick单词改为 "squash" 或 "s"。【最顶端的commit保留pick单词,下面的几个commit 改为s】
image.png

③编辑后按ESC退出编辑,英文状态输入:wq,按回车。关闭编辑器。此时会重新弹出第二个编辑器。
image.png

④【需要按i键,打开编辑模式】修改合并后新的commit信息,按Esc键退出编辑,输入:wq,按下“回车”,退出编辑器。
image.png

⑤执行git push -f 强推

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • git init git add git commit git diff git checkout git sta...
    dancer4code阅读 141评论 0 2
  • 创建版本库: 初始化一个Git仓库,使用git init命令。 添加文件到Git仓库,分两步: 使用命令git a...
    xingeei阅读 652评论 0 4
  • 概述 Git是一个用来做代码管理和版本控制的工具。 参考教程 《Git权威指南》,机械工业出版社,蒋鑫。 如有理解...
    胖头鱼狂战士阅读 650评论 0 4
  • Git 内部实现原理剖析[https://www.jianshu.com/p/8154ac47d406] Git ...
    Whyn阅读 1,005评论 0 1
  • svn cvs 集中式版本管理 git 分布式 1:简单介绍:把改动推入(Push)到上游版本库(upstrea...
    偶尔小高兴阅读 1,008评论 0 1