Git常用指令及基本操作
最近参加的项目代码是由git管理,但最后一次用git已经是大学的时候了,重新温习记录一下以免忘记
事先准备
- 下载安装git。 mac可以用homebrew,windows下安装包即可。安装流程就不在这里说了,可参考http://git-scm.com/downloads
- 建个GitHub/GitLab的账号。
- 下一个Git可视化软件,我喜欢用GitKraken, 用GitHub的账号登录就可以自动连接到自己的git库了,我选择它最主要的原因是他的可视化界面做的很好,各个分支的关系一目了然。后面会有一些例子,最好能自己下载试一试感受一下。
常用指令
-
创建仓库:git init
-
添加文件:git add
-
修改文件:git commit
-
建立分支:git branch
- 在现实开发里,项目大多是多人开发。多人开发无法避免的问题就是修改冲突,为了解决冲突,分支这个时候就起到很重要的角色了。比如修bug,一般都会从主干拉一个新的分支,在分支里面修完bug之后,再合并到主干上。这样如果有其他人增加新的功能,分支上的bug修改不会影响到其他人的工作。What an amazing work! 我们来试一下,在主干上加了一个test.py里面写着print(1+3),再建一个分支,在分支上修改这个文件
-
切换分支:git checkout
-
合并分支:git merge
-
整理分支:git rebase
- 从上面的图看是不是觉得merge后分支特别乱,明明newBranch和master已经是一样的内容,但他还是有两个分支,这个时候rebase的作用就出来了
- 简单地说rebase是把一个分支上的所有提交,在另一个分支上按同样的顺序重放一遍,在执行rebase的过程中,
- git会先找到master和newBranch的最新提交"merge branch", "change file to 1+2", 这里简称c1, c2
- 然后从c1和c2开始向前回溯,找到他们在提交历史里的共同祖先"add test file",这里简称c0
- 把newBranch分支上的从c0往后的每一个提交和c0进行对比,并把对比结果存在一个临时文件里
- 然后重置newBranch的提交历史,让他和master的分支的提交历史保持一致(原本只在master的c1也会出现在newBranch分支上)
- 在这个基础上,再逐一追加只在newBranch分支上的提交记录(c2)
-
任意选择commit合并到分支:git cherry-pick
- 简单的来说就是可以让你将任何分支中的个别提交合并到你当前的HEAD 分支中,即checkout所在的分支
- cherry-pick特别适合,当你已经在分支上提交了几个修改,但策划后面决定只要其中的两个修改。如果用rebase和merge的话,会把所有的修改都合并去,而cherry-pick只会合并你选取的几个修改,这样会更flexible一点。
- 接着上面的例子,比如我只想要test分支上的“change to 1+4"合并到master上去,先用git log找到提交commit的哈希值,再用cherry-pick和拿到的哈希值定位到你想要合并的修改
远程指令
-
推送到远程:git push
- 他的作用是将本地分支的更新推送到远程主机,常用命令有git push origin master:remote(origin是远程主机名,master是本地分支,remote是远程分支,如果没有remote分支就会新创建一个分支)
- 先在GitHub上创建一个新的远程仓库
- 经过上面的粒子,我们在本地做了这么多修改,现在来试试把这些操作推送到远程仓库。
-
拉取远程仓库:git pull
总结
GitHub, GitKraken都只是Git的外壳和封装,是用来帮助用户更方便的操作Git。其实无论用什么软件,百变不离其中的就是git的一些基本操作,git pull, push, merge etc.在现实生活中,多人协作开发的效率很大程度是基于代码提交和管理,一个好的代码管理可以大大提升开发效率,所以学习好git是非常重要滴!
不久前,知道了一个很好的git学习网站,我做完里面所有的题后,对git操作基本是掌握的差不多了,非常推荐去玩一玩!https://learngitbranching.js.org/?locale=zh_CN
__EOF__

本文作者:cancantrbl
本文链接:https://www.cnblogs.com/cancantrbl/p/16269448.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cancantrbl/p/16269448.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现