git操作总结
git基本知识
工作区域
- 远程仓库: 就是我们托管在github或者其他代码托管平台上的仓库。
- 本地仓库: 就是在我们本地通过
git init
命令初始化的新建的仓库。 - 工作区: 就是我们写代码、编辑文件的地方。
- 暂存区: 当工作区的内容写好了之后,就会通过add命令,将工作区的内容放到暂存区,等待commit命令提交到本地仓库中。
文件状态
- 未跟踪的(untracked): 表示在工作区新建了某个文件,还没有add。
- 已修改(modofied): 表示在工作区中修改了某个文件,还没有 add。
- 已暂存(staged): 表示把已修改的文件已add到暂存区域。
- 已提交(commit): 表示文件已经commit到本地仓库保存起来了。
git常用操作
1.git clone [远程仓库的HTTP/SSH的URL]
用于将远程仓库克隆到本地。克隆后本地就有一个本地仓库。注意:远程仓库不管哪个分支都是一个url,所以你想要克隆其它分支时就要指定分支,例如,如果你要克隆develop分支,可以使用以下命令:
git clone -b develop <repository-url>
或者
git clone --branch develop <repository-url>
2. git init
用于初始化一个本地仓库
本地已经有个本地仓库,但是对应的远程仓库还未创建,怎么将本地代码推到远程仓库?
1.创建一个远程仓库
2.检查本地仓库是否与远程仓库关联:
git remote -v
输出空说明没有任何关联
3.将本地仓库与远程仓库关联:
git remote add origin <远程仓库地址>
origin:远程仓库的默认名称
4.将本地文件push到远程仓库:
git push -u origin main
-u:设置默认的上游分支(upstream),便于后续操作。这会让main分支与远程的main分支关联起来,之后可以直接用 git push 或 git pull
main:远程仓库分支名称
3.日常操作
①.git add
②.git commit -m
③. git push
④. git pull
⑤.git fetch
git fetch和git pull的区别?
git fetch和git pull的区别?
git fetch命令用于从远程仓库获取最新的代码提交和分支信息,但它不会将获取到的内容应用到你的工作目录或当前分支,也不会改变你本地仓库的历史记录。相当于是将远程仓库的最新信息下载到你的本地仓库,你可以通过git merge或git rebase将这些更新合并到你的当前分支。
git pull=git fetch+ git merge
⑥.git merge
⑦.git rebase
git merge/rebase到底是哪合并到哪了?
一句话,就是你站在哪个分支上就合并到了哪个分支上,例如:git checkout feature , git merge main 就是将main主分支的新内容合并到功能分支上
git merge和 git rebase的区别是什么?
当我们从主干(Main)创建了一个新的分支(Feature)开始开发代码时,然后另外有人把自己的代码提交到主干(Main)之后,就会产生分叉的提交记录。
这时候我们想把main分支上的新内容合并到我们的分支上就有两种选择:
1.git merge
git checkout feature //站在feature分支
git merge main //将main合并到feature
提交纪录上就会有下面效果:
相当于在feature分支中创建一个新的“merge commit'”,它将两个分支的更改合并到一个新的提交中。
2.git rebase
git checkout feature
git rebase main
rebase意思变基,其实就是重新设立新起点的意思,我们在feature上执行的rebase,就重新设立了feature的起点,就是将main上的commit记录在feature上回放了一遍
这时候如果我们想将feature合并到主干上,就可以执行
git checkout main
git merge feature
merge完后,整个合并线条是直的,就会使提交记录变得清爽。可以参考rebase这个大佬对rebase的介绍,很详细。
分支操作
git branch -v
查看都是有哪些分支,当前处于的分支会被星星标记
git checkout -b <分支名称>
切换到新分支,并创建该分支