首先检查一下你的git版本,是否是最新的。最新版本是210。而我用的是183也没有出现你说的这种情况,因为如果没有commit,git branch是无法切换的:
我创建了一个叫new1的分支。过程如下:
git branch new1 // 创建branch
git add 1txt // 添加一个修改文件
git commit -m "update" // 提交master里的东西
git checkout new1 // 切换到new1
把nginx和php作为两个容器,代码另外放在volume,分别供php和nginx两者挂载
好处:代码更新灵活
坏处:感觉这作为一个服务来说很“山寨”(可以和Java/NodeJS的服务类比一下);另外,如果你用到了composer,依赖部分无法在制作镜像中过程中自动化安装
把nginx作为一个容器,php和代码放在另一个容器,但其中代码目录也需要供nginx挂载
好处:相比1,可以把composer放入PHP容器中,制作镜像时帮你安装依赖
坏处:作为服务依然很“山寨”
把nginx、php和代码全放入同一个容器
好处:更符合微服务的定义,整体对外构成一个服务;nginx和php之间可以直接用unix socket通信
坏处:除了灵活性之外,不太符合Docker官方一个容器只跑一个服务的建议
Git 常用命令速查:
git branch 查看本地所有分支。
git status 查看当前状态。
git commit 提交。
git branch -a 查看所有的分支。
git branch -r 查看远程所有分支。
git commit -am “init” 提交并且加注释。
git remote add origin git@192。168。1。119:ndshow。
git push origin master 将文件给推到服务器上。
git remote show origin 显示远程库origin里的资源。
git push origin master:develop。
扩展资料
git的简单介绍
git如C编程语言、C++、java等,编写计算机、手机或游戏机上的游戏。 目前流行的游戏编程语言为C++编程语言。
游戏编程接口为DirectX90、OpenGL和SDL(Simple DirectMedia Layer)等。现在手机上玩的游戏分为Android与IOS两种平台,分别是用java和object-c(或swift)。当然时下也流行一些跨平台的编程引擎,例如cocos2d-x、unity 3D等。
参考资料来源:Git-Git是什么
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。
有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建 *** 作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式。
为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照。
在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对 象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
为直观起见,我们假设在工作目录中有三个文件,准备将它们暂存后提交。暂存 *** 作会对每一个文件计算校验和(即第一章中提到的 SHA-1 哈希字串),然后把当前版本的文件快照保存到 Git 仓库中(Git 使用 blob 类型的对象存储这些快照),并将校验和加入暂存区域:
$ git add README testrb LICENSE$ git commit -m 'initial commit of my project'
当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。
现在,Git 仓库中有五个对象:三个表示文件快照内容的 blob 对象;一个记录着目录树内容及其中各个文件对应 blob 对象索引的 tree 对象;以及一个包含指向 tree 对象(根目录)的索引和其他提交信息元数据的 commit 对象。概念上来说,仓库中的各个对象保存的数据和相互关系看起来如图 3-1 所示:
图 3-1 单个提交对象在仓库中的数据结构
作些修改后再次提交,那么这次的提交对象会包含一个指向上次提交对象的指针(译注:即下图中的 parent 对象)。两次提交后,仓库历史会变成图 3-2 的样子:
图 3-2 多个提交对象之间的链接关系
现在来谈分支。Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。
图 3-3 分支其实就是从某个提交对象往回看的历史
那么,Git 又是如何创建一个新的分支的呢?答案很简单,创建一个新的分支指针。比如新建一个 testing 分支,可以使用git branch 命令:
$ git branch testing
这会在当前 commit 对象上新建一个分支指针(见图 3-4)。
图 3-4 多个分支指向提交数据的历史
那么,Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。请注意它和你熟知的许多其他版本控制系统(比如 Subversion 或 CVS)里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(译注:将 HEAD 想象为当前分支的别名。)。运行git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以在这个例子中,我们依然还在 master 分支里工作(参考图 3-5)。
图 3-5 HEAD 指向当前所在的分支
要切换到其他分支,可以执行 git checkout 命令。我们现在转换到新建的 testing 分支:
$ git checkout testing
这样 HEAD 就指向了 testing 分支(见图3-6)。
图 3-6 HEAD 在你转换分支时指向新的分支
这样的实现方式会给我们带来什么好处呢?好吧,现在不妨再提交一次:
$ vim testrb$ git commit -a -m 'made a change'
图 3-7 展示了提交后的结果。
图 3-7 每次提交后 HEAD 随着分支一起向前移动
非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:
$ git checkout master
图 3-8 显示了结果。
图 3-8 HEAD 在一次 checkout 之后移动到了另一个分支
这条命令做了两件事。它把 HEAD 指针移回到 master 分支,并把工作目录中的文件换成了 master 分支所指向的快照内容。也就是说,现在开始所做的改动,将始于本项目中一个较老的版本。它的主要作用是将 testing 分支里作出的修改暂时取消,这样你就可以向另一个方向进行开发。
下载与安装
Eclipse Java EE IDE中已经包含了git,所以,就不用再额外安装了。
将eclipse中的工程用git来控制
1:选中工程的名字,右键选中“Team” --> Share Project,然后选中git,接着需要选中git的仓库。单击确定。这一步完成之后,这个工程的目录,会从eclipse的workspace目录转移到git仓库的目录。
2:选中工程的名字,右键选中“Team” --> commit,然后在unstaged changes框中选中需要提交的文件,右键选择“add to index”,这样,这些文件会被移动到“staged changes”中,接着在commit message中输入修改信息,最后,单击commit。这样,工程就被git管理起来了。
将git的工程推送到github中
上述两步完成之后,代码还是在本地计算机中保存了一份。我们还可以将代码保存到github上。前提是需要在github上注册,并建立一个仓库。
右键选中“Team” --> remote --> push,然后再URI中输入自己的github中的仓库路径,输入用户名密码。在后续的窗口,“source ref” 选择“refs/heads/master”,然后单击“Add All Branches Spec”和“Add All Tags Spec”,最后单击“Force Update All Specs”后完成。这样,这个代码就被保存在github上了。
从git和github中获取目录
用上述方式建立的版本控制,只有一份代码在本地,所以,它不像svn一样,会从远程获得一份副本。不过,如果在github上提交了本地git仓库里面的代码的话,我们还可以通过git的方式来取得代码。具体方式如下:
通过浏览器,在github上找到工程URI的路径,并复制此路径。打开git仓库界面,选中Remotes,右键选中“paste Repository path or URI”,如果以前使用过github,那么后续的界面上将会填好用户名等信息,最终单击确定,就可以将github上的代码保存到本地的git仓库中。
展开刚下载好的Working Tree,选中指定的工程,右键选中“Import Projects”,就可以将从github上下载的工程导入到eclipse的project explorer中。
mkdir project # 创建项目目录
cd project # 进入到项目目录
git init # 初始化 git 仓库。此命令会在当前目录新建一个 git 目录,用于存储 git 仓库的相关信息
初始化提交
touch README
git add # 将当前目录添加到 git 仓库中, 使用 git add -A 则是添加所有改动的文档
git commit -m "Initial commit"
git remote add origin git @githubcom:lugir /repogit # 设置仓库
修补提交(修补最近一次的提交而不创建新的提交)
git commit --amend -m "commit message"
提交冲突时可以合并后再推送
git pull # 获取远程版本库提交与本地提交进行合并
git push # 提交
使用别人的仓库
git clone >
git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
$ git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。
Git也允许手动建立追踪关系。
git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
$ git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
$ git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase模式,可以使用–rebase选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人 *** 作了远程主机,导致git pull不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。
$ git pull -p
等同于下面的命令
git fetch -p
原文链接: >
以上就是关于用git 切换分支时有个java类前面有个m是什么意思全部的内容,包括:用git 切换分支时有个java类前面有个m是什么意思、java UAP开发透视图中git怎么拉取代码、git常用命令是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)