Git
基本操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ git init # 初始化操作 $ git status # 查看状态 $ vim user.txt # 编写文件 $ git add . # 变绿 $ git commit - m "向user.txt添加name" # 提交 $ git log # 查看日志 $ git reset - - hard 3f02c8965996be72b95ded036cc9085b47140dfd # 回滚到指定版本 $ git reflog # 回滚之后再查回滚之前的版本日志信息 $ git checkout user.txt # 将红色的回滚回去 $ git reset head user.txt # 将绿色的回滚到红色 |
bug修复
基于stash修复bug
1 2 3 4 5 6 7 8 9 10 11 12 13 | - - - - - - - - - - - - - - 第一版上线,新功能开发中 - - - - - - - - - - - - $ git stash # 暂存红色开发一半的新功能(这里也有bug) - - - - - - - - - - - - - - - - - - - - - - - bug修复中 - - - - - - - - - - - - - - - - - - - - - - - - - bug修复完了,重新上线,新功能继续开发 - - - - - $ git stash list # 查看暂存区内容 $ git stash pop # 取出红色新功能(这里bug也被修复了) # 如果出现冲突要手动解决!!! |
基于分支修复bug
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ git branch dev # 创建dev分支,用于开发新功能 $ git branch bug # 创建 bug分支用于修复bug $ git checkout dev # 小鸣切换到dev去开发新功能去 $ git checkout bug # 小佐切换到bug分支去修复bug - - - - 小鸣新功能开发中,小佐发现master分支的项目有bug,就在bug分支上改bug - - - - - - $ git checkout msater # 小佐改完bug后提交并切换到master $ git merge bug # 小佐合并修复bug的bug分支到master $ git checkout msater # 此时小鸣也开发完新功能,提交后切换到master分支 $ git merge dev # 在master上合并dev新功能 $ git branch # 查看存在的分支 $ git branch - d bug # 删除指定分支 # 注意:切换分支之前要add . commit 。如果合并有冲突要手动解决,再提交。 |
托管到远程仓库
首先要有github账号(或码云coding)
首次链接github等远程仓库需要配置个人信息
1 2 | $ git config - - global user.name "lichengguang" $ git config - - global user.email lcgsmile@qq.com |
以github为例将本地项目push到github
先在github创建一个项目,最好是跟要托管的项目文件夹同名gitdemo
在本地本地项目gitdemo中执行下面操作:
1 2 3 4 5 | $ git remote add origin https: / / github.com / lichengguang / gitdemo.git # 首次推之前指定源 $ git push origin master # 推到远程的master分支,首次推需输入github的用户名密码 # 也可以通过-u指定以后push的默认分支 git push -u origin master ,此操作后,git push 就表示 git push origin master |
将github项目clone、pull到本地并:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | - - - - - - - - - - - - - - - - - - - - - 在公司 - - - - - - - - - - - - - - - - - - - - - - - $ git branch dev # 创建dev分支 $ git checkout dev # 切换到dev分支进行开发 $ touch work.txt # 开发了一半 $ git add . $ git commit - m "在公司开发了一半" $ git push origin dev # push到分支 - - - - - - - - - - - - - - - - - - - - - - - - 下班回家 - - - - - - - - - - - - - - - - - - - - - - - $ git clone https: / / github.com / lichengguang / gitdemo.git # 将项目clone下来 $ cd gitdemo / $ git branch dev # 创建dev分支(默认clone的是master) $ git checkout dev $ git pull origin dev # 在dev分支下将github上的dev分支pull下来 $ mv work.txt worked.txt # 继续开发完 $ git add . $ git commit - m "项目在家完成了" $ git checkout master $ git merge dev # 切换到master进行合并 $ git push origin master # 将完成合并的代码push到github的master分支 |
补充 :
1 2 3 4 5 | git pull origin dev 可分解为下面两步来执行: $ git fetch origin dev $ git merge origin / dev |
git rebase的作用:
为了让分支树看起来更简化,我们可以选用git rebase代替git merge
详情参看 https://www.cnblogs.com/elvalad/p/4066133.html
多人开发方式
1.协作者和组织
添加合作者:
创建组织:
2.给Github上的开源项目贡献代码:
Fork ---》修改---》pull request---》原作者认可后,方能在原作者的项目上修改成功的。
3.协同开发
master分支跟线上的代码一样。另外每个人再使用一个单独的分支,再创建review分支用于代码的review。
每个人一个功能模块开发完后,合并到review,一般由组长进行代码的review。
Git链接方式SSH链接
https方式
1 2 3 4 5 | https: / / github.com / lichengguang / pageer 这种链接方式每次push都需要输入用户名和密码 https: / / 用户名:密码@github.com / lichengguang / pageer 也需要输入用户名和密码 私有项目就这样链接: git clone https: / / 用户名:密码@github.com / lichengguang / pageer |
ssh方式
1 2 3 4 5 | $ ssh - keygen.exe # 生成ssh $ cat ~ / .ssh / id_rsa.pub 查看公钥 公钥:ssh - rsa......lcgsmile@qq.com |
将公钥配置到github的SSH keys选项下,新建一个SSH keys 标题任意,将公钥粘贴到内容区然后保存就行,以后就可以用过SSH链接,无需每次输入账户和密码。
.ignore
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files …”,有强迫症的童鞋心里肯定不爽。Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
官网各种语言相关的.ignore参考:https://github.com/github/gitignore
基于tag实现版本控制
1 2 3 4 5 6 7 8 9 | $ git tag # 查看已有版本 $ git tag - a v. 10 - m '描述信息' # 创建版本信息 $ git push origin - - tags # 将版本信息push到远程 $ git pull origin - - tags # 将版本信息pull到本地 $ git clone - b v1. 0 https: / / github.com / lichengguang / pageer.git # 下载指定版本的一种方式 |
1.列出所有tag git tag 2.列出远程所有tag,注意git版本1.7(包括1.7)一下后边需要加上git仓库地址 git ls-remote --tags 3.创建一个tag git tag [-a] tagname 4.创建一个加描述的tag git tag -a tagname [-m <msg>] 5.删除本地tag git tag -d tagname 6.删除远程tag git push origin --delete tag tagname 7.删除远程tag,与6不同的是,这是推送一个空的tag覆盖掉原来的tag,以达到删除tag的目的
将dev分支合并到master分支
1 2 3 4 5 6 7 8 9 10 | 一、在dev分支上运行以下命令 1. git add . // 暂存所有更改 2. git commit -m "更改的备注信息" // 将修改 提交到本地仓库,双引号内是提交的备注信息 3. git pull origin dev // 拉取远程dev分支代码 4. git push origin dev // 将本地修改的代码提交到远程的dev分支上 5. git checkout master // 切换到master分支 二、在master分支上运行以下命令 1. git merge dev // 将dev分支的代码合并到master上 2. git push origin master // 将当前的更改推送到远程的master分支上 执行完以上命令,此时dev分支与master分支的代码已同步。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了