- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有内容。 Git 易于学习,占用空间很小,性能快如闪电。它超越了Subversion,CVS,Perforce和ClearCase等SCM工具,具有廉价的本地分支,方便的暂存区域和多个工作流程等功能.
git 是一个工具,是基础设施。我们平时说的git就是纯粹指git工具和其功能。但是我们常见github、gitlable、gitee等平台。 不要把他们和git划等号,因为git不用这些平台也可以在本地作为你自己的一个版本管理工具。这些平台是为了解决多人合作的云平台,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务.
同2一样git只是一种工具,他并没有什么工作流程。日常开发中我们为了更好的协作产生了一些git开发流程规范。这种规范或者风格叫git workflow。 目前比较知名的有git-flow 、github-flow 、gitlable-flow.
Git Flow 主要是依靠五种分支,master,develop,feature branchs ,release branchs , hoxfixes来进行协作,因为比较复杂,所以并没有那么多人用.
github-flow 只有个主干/长期分支,master分支用来”持续发布“使用,但是由于只有主分支所以发布不稳定,master通常会设置 protected 分支保护,只有有权限的人才能推送代码到 master 分支。我们常用的github平台就是采用该流程,其中特色就是Pull Request 方式。如果你要修改需要Pull Request 然后进行沟通和code review才能由有权限的人合并进去。当然gitlable平台你也能按照这种方式进行组织,他的Merger Request相当于Pull Request.
基于环境的的分支模型——面向持续发布模型,有master,同时还有Pre-Production、Production分支用于维护发布在不同环境上的代码。 采用上游到下游流动的方式,大家都在master上进行开发,当要发布的时候将master分支合并到Pre-Production测试通过后再合并到Production进行发布。如果有bug需要从master向下游合并,除非特殊情况需要直接在其它分支上修改.
我们学习git的时候不要把远程仓库和本地仓库混淆在一起,如果你混淆在一起就会陷入到梳理他们的逻辑混乱当中.
我们说了远程仓库只是为了协同工作,我们可以把远程仓库当作是本地仓库的镜像,只是用于我们拉取和提交来同步文档。 所以对于远端仓库的主要操作就是:
# 拉取远端项目到本地
git clone https://url
#初始化本地 Git 仓库,会生成一个 .git 隐藏文件夹
git init
#将本地项目关联远程仓库
git remote add origin https://url
#上传之前更新一下,确保没有冲突,master 为分支名称
git pull --rebase origin master
#添加目录下所有发生改变的文件到暂存区
git add .
#添加提交注释信息
git commit -m '注释xxx'
#提交到 master 分支
git push -u origin master
以上就是基本的远端仓库和本地仓库的操作,接着我们下面的操作都是争对本地仓库的讲解,你需要了解git的基本知识,比如git有三个部分:工作区、暂存区、版本库。 工作区就是我们操作文档的地方,以windwos作为演示,当我们在一个文件夹下初始化了git管理,那么该文件夹下的三个部分就形成了。至于为什么需要三个部分,就像两口子吵架需要一个中间人调节,有些事情可以先和中间人商量确定好后再传达给对方,减少冲突.
git是基于分支管理的,默认分支就Master分支,争对于分支我们可以做那些操作呢?
git pull/git fetch/git push git pull 拉取远端的最新提交到本地,并与本地当前分支合并更新所有区。 git fetch 拉取远端的最新提交到本地,不会自动合并,也不会更新工作区。 git push 推送本地仓库到远程仓库,推送的是本地版本库里面的内容,如果工作区或者暂存区没提交则不会提交.
git add 。
# 添加一个文件 xx 到暂存区,多个文件以空格隔开
git add xx
# 添加全部文件到暂存区
git add .
# 提交暂存区的文件到本地仓库,并添加提交备注
git commit -m '备注'
# 相当于 git add . 加上 git commit -m '备注',也就是直接从工作区一步完成提交
git commit -am '备注'
#查看所有提交记录
git log
#查看最近10条记录
git log -n10
# 创建一个标签,默认打在最新提交的commit上
git tag [tagname]
# 创建一个标签,在指定commitid上
git tag [tagname] [commitId]
# 查看标签列表
git tag
#提交所有tag到远端,因为git push不会推送标签
git push origin --tags
# 重置并撤销 git commit 以及 git add,保留工作区中所有修改
git reset --mixed commitID
# 重置并撤销 git commit,但不撤销 git add,保留工作区中所有修改
git reset --soft commitID
# 重置并撤销 git commit 以及 git add,并且删除工作区中所有修改
git reset --hard commitID
# 取消某次合并
git reset --merge commitID
# 提交到暂存区的内容退回到工作区,相当于撤销 git add .
git reset HEAD
# 把暂存区的 xx 重新放回到工作区
git reset HEAD xx
# 重置到上一个版本
git reset --hard HEAD^
# 重置到上上一个版本,可以继续到上一个
git reset --hard HEAD^^
# 重置到指定版本
git reset --hard commitID
# 撤销上一次 commit 之后所有文件的修改,即撤销暂存区
git restore .
# 把暂存区的 xx 重新放回工作区,和上面的 git reset HEAD xx 作用一样
git restore --staged xx
和git reset类似,只是会保留不要的版本.
# 还原上次提交
git revert HEAD
# 还原某次提交
git revert commitID
比较差异 。
# 工作区和暂存区比较
git diff
# 工作区和版本库最后版本比较
git diff head
# 暂存区和版本库比较
git diff –cached
以上这些就是操作某一个分支的基本命令,我们说了git是分支管理,那么多个分支呢。接下来我们就介绍一些多分支之间操作的命令。多分支是为了控制不同工作和并行工作,分支的建立可以是本地的,也可以是和远端某个分支关联的(这个远端可以是任意分支)。所以git是灵活的,远端和本地我们任然要区分开.
# 创建本地分支newbranch,但是不切换到该分支,仍然停留在当前分支
git branch newbranch
# 创建newbranch分支,并切换到newbranch分支上去
git branch -M newbranch
# 新建一个分支,与指定的远程分支建立关联
git branch --track [newbranch] [remote-branch]
# 删除本地newbranch分支
git branch -d newbranch
# 切换到xx分支
git switch xx
只有提交的文件才会进入git跟踪,如果c.txt我在master分支上创建了,但是它在工作区,我们切换到newbranch分支任然能看到它,这个时候谁先提交就记录到谁的分支
#把当前分支的修改储存隐藏起来
git stash
# 查看stash列表
git stash list
# 取出stash中最近一次的修改并删除stash记录
git stash pop
# 取出指定stash
git stash apply stash@{0}
# 删除指定stash
git stash drop stash@{0}
# 把newbranch分支合并到master分支
git merge newbranch
# 把newbranch分支变基到master分支
git rebase newbranch
当我们要合并某个分支上的特定提交版本,我们可以使用git cherry-pick将某分支commitID版本合并到当前分支.
#合并其它分支的commitID
git cherry-pick commitID
整篇就是关于git介绍和git容易混淆的概念及命令,包括日常的基本操作。如果其它进阶和骚操作,可以查看文档或搜索,一般来说掌握这些足够了,其它需要再去查就行.
最后此篇关于重新搞懂Git,掌握日常命令和基本操作的文章就讲到这里了,如果你想了解更多关于重新搞懂Git,掌握日常命令和基本操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我时不时地输入“git”,然后想到别的东西,然后输入例如“git checkout master”。当然,这给我留下了 $ git git checkout master git: 'git' is
我做到了 git 克隆 git://foo.git 光盘富 ...编辑文件.. 现在我想重新开始。我不在乎我已经做出的任何改变,但我不想再次克隆整个巨型 foo.git,只是丢失我所有的更改。我怎
我在我的电脑上开发代码,我的计算节点很少。 为了让我的程序保持同步,我决定使用 git。以前,我以一种单向模式使用它来“下推”从 PC 到计算节点的更改。但是时不时遇到计算节点特有的小bug,现场修复
虽然它似乎什么也没做,但它没有给出任何警告或错误消息。有什么想法吗? 最佳答案 来自 Git 源的注释: /* * Read a directory tree. We currently ignor
我知道如何为这样的 HTTPS 请求提供用户名和密码: git clone https://username:password@remote 但我想知道如何像这样向 Remote 提供用户名和密码:
Git GUI、Git Bash 和 Git CMD 之间有什么区别?我是初学者,为了进行安装,我发现自己通常同时使用 git bash 和 git CMD 最佳答案 Git CMD 就像使用 git
有人能告诉我git中文件索引被删除是什么意思吗?这些文件在我的 VS Code 中标记为红色,但我仍然可以修改文件并将更改推送到将反射(reflect)这些更改的远程存储库。我认为这一切都是在我使用命
我通过 git 子树将 GLFV 库添加到项目中,但出现此警告“看起来您的 git 安装或您的 git-subtree 安装已损坏”。还描述了几个原因,为什么这可能是: 如 git --exec-pa
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我有需要外部 git 项目的 repo,但我不想使用子模块,因为我想在 github 上存档所有文件,所以我认为我只是将具有 git repo 的整个目录添加到 git 但它不t 添加里面的 .git
我一直在阅读一篇文章,作者在其中指示:在现有存储库中创建一个新存储库,并想知道这是否是他忽略的错误。稍后我会与他核实。 这些是我要检查的条件: 将现有目录制作成仓库的条件,并且已经 checkin 主
我确实在不同的计算机上处理相同的项目,我想知道是否有一种方法可以跟踪该 .git 文件夹,这样我就不必在所有本地文件中重新配置配置文件。 我将所有工作推送到 bitbucket。 最佳答案 不,没
这个问题在这里已经有了答案: How does git store files? (3 个答案) 关闭 9 年前。 我为我的许多项目创建了一个远程存储库,所以它是我的push 的目的地。与 git
应该如何在 git 中查看文件内容的完整历史记录? 一个文件在 git 中的历史很短,存储库通过 git-svn 同步,但在 svn 中的历史很长。 git 中的历史记录到达文件移动的位置。要查看历史
我是confused here ... 如何对修改后的文件进行git commit,以及如何对新文件进行git commit? 还有,你如何在git中单独提交文件? 最佳答案 git 提交过程分为两个
正在搜索 throw SO 来寻找答案。遇到这个似乎没有给出任何答案的旧线程。重新触发此线程,希望有人知道! 有人能告诉我 git subtree 和 git filter-branch 的区别吗?为
我想知道是否有一种方法可以避免在每个 Git 命令的开头键入单词 git。 如果有一种方法可以在打开命令提示符进入 “Git 模式” 后只使用一次 git 命令就好了。 例如: git> 之后,我们键
当您修改工作目录中的文件时,git 会告诉您使用“git add”暂存。 当您向工作目录添加新文件时,git 会告诉您使用“git add”开始跟踪。 我对这两个概念有点困惑,因为我假设跟踪文件的更改
为什么 git://有效 $ git clone git://github.com/schacon/grit.git Cloning into 'grit'... ... Checking conne
我在以下沙箱中练习 git:https://learngitbranching.js.org/?NODEMO 我在两个单独的 session 中运行了两组命令。第一组命令顺序如下: git clone
我是一名优秀的程序员,十分优秀!