出现这个问题后,在网上 找啦许久的网页都没有解决我的问题,没办法自己动手了,左思右想的想到了一个方法:
请大家按照图示一步一步的来,就可以解决:
下一步是要选择你项目存在的服务器的网址:
下一步选择你要导入的项目:
然后直接finsh就可以了!
概述:本章介绍核心,git的分支操作,其中难点有git 分支的合并,冲突解决,和git rebase
要明白什么是分支,首先要明白git的仓库是如何组织的。在第一章中,我们知道,git是进行快照存储的,那么当git仓库管理着三个文件的时候,实际上仓库中有5个存储对象。
其中三个blob表示文件,tree表示目录树组织,还有一个包涵提交信息,指向tree对象的commit对象。多次提交以后的对象,存储状况如下:
其中parent指向前一个提交,另外有一个域指向提交快照。
理解了上述的存储模型,我们要说,git的分支实际上就是指向commit对象的指针,每次提交,该指针都会向前移动,如图:
创建一个test分支,实际上就是创建了一个指针,存储对对象的实际内容变化如下:
为了区别git在哪个分支上工作,我们设计了HEAD指针,用于指向当前分支的最近对象。提交一次,另外转移到其他分支的情况如下;
创建基本分支:$git branch testone
or $git checkout -b testtwo
一段时间以后,git分支的新建情况如图:
这个时候产生需求一:把hotfix分支并入master分支
解决方法:
$giit checkout master
$git merge hotfix
过程说明:
Updating f42c576..3a0874c
Fast forward
README1 -
1 files changed, 0 insertions(+), 1 deletions(-)
请注意,合并时出现了 “Fast forward”(快进)提示。由于当前 master 分支所在的commit 是要并入的 hotfix 分支的直接上游,Git 只需把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另一个分支,那么 Git 在合并两者时,只会简单地把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进(Fast forward)。
合并以后的分支情况如图:
现在,可以删除hotfix分支了:$git branch -d hotfix
此时,iss53分支中的内容还没有刚才修改的内容。可以使用merge将修改并入其中
现在,要想把iss53和hotfix进行merge,需要出同源合并点,然后自动创建一个commit。
命令: git checkout master
git merge iss53
结果:
如果你要合并的两个分支,修改了统一个文件的内容,此时就会产生冲突,理论上,这种冲突只能由人来解决。
所以解决的方法是先:
git merge;
运行git status查看情况
手动修改bothmodified对应的文件
使用git commit进行提交
需求:查看每个分支最后一次commit的信息
命令:git branch -v
需求二:查看哪些分支被合并哪些分支没有被并入当前分支
git --merge
&& git --no-merged
略
注意:我们能够改动的是本地数据的master分支,不能改动的是本地上的orgin/master分支。original/master分支只会在于远程服务器通信的时候才会改动。可以运行 git fetch origin 来进行同步。该命令首先找到 origin 是哪个服务器(本例为 git.ourcompany.com),从上面获取你尚未拥有的数据,更新你本地的数据库,然后把origin/master 的指针移到它最新的位置。
$ git push origin serverfix
Counting objects: 20, done.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (15/15), 1.74 KiB, done.
Total 15 (delta 5), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new branch]
serverfix -> serverfix
注意,在推送以前,如果想推送到自己的github账户,需要先新建自己github账户上相关的仓库和分支。
这 其 实 有 点 像 条 捷 径。Git 自 动 把 serverfix 分 支 名 扩 展 为 refs/ heads/ server-fix:refs/heads/serverfix,意为“取出我的 serverfix 本地分支,推送它来更新远程仓库的serverfix 分支”。我们将在第九章进一步介绍 refs/heads/ 部分的细节,不过一般使用的时候都可以省略它。也可以运行 git push origin serverfix:serferfix
来实现相同的效果,它的意思是“提取我的 serverfix 并更新到远程仓库的 serverfix”。通过此语法,你可以把本地分支推送到某个命名不同的远程分支:若想把远程分支叫作awesomebranch,可以用 git push origin serverfix:awesomebranch 来推送数据。
从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服
务器的哪个分支推送数据。反过来,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
在克隆仓库时,Git 通常会自动创建一个 master 分支来跟踪 origin/master。这正是git push
前两天在百度知道上看到有种方法非常厉害,这里简单总结一下。假设我们有这样的需求,给定一个矩阵A,要求删除其中第2列在0到5之间的所有行,最方便的操作应该怎么写呢?百度知道里的答案是:
id=A(:,2)>0 & A(:,2)<5; A(id,:)=[];
非常简洁有木有?如果我要删除第2列为0的所有行,那么这样写是有问题的:
id=A(:,2)=0; A(id,:)=[];
原因也很简单,那解决方法也非常简单:
id=A(:,2)<=0 & A(:,2)>=0; A(id,:)=[];
这样就可以了,感觉挺有意思的,所以记一下。