实时搜索: git与svn哪个好用

git与svn哪个好用

257条评论 2265人喜欢 4039次阅读 218人点赞
...

如何使用 vimdiff 来 git diff /svn diff: git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool

然后使用 git d 打开对比代码,然后用 :wq 继续比较下一个文件。

git对比svn有什么优势?:

能想出很多git优于subversion的地方,大部分是体现在分布式优于集中式的特征上,但如果你让我说出任何SVN分过来胜过git的地方,我竟一时想不出来一个。但这就能说明git完胜SVN吗?
事实当然不是这样,就像是Windows和Linux,你不能说这个一定就比那个好。最近在stackexchange的讨论让我学习了不少。先举个简单的例子证明有些地方你只能用SVN而不能用git。谷歌的搜索排名算法,就不能放到分布式开放的代码库了。
这种情况下SVN的集中式管理就是不二选择。下面就来条理的看看Subversion在哪些环境下比git更适用。

Subversion是集中式管理的数据仓库 虽然速度快和多副本等git分布式数据仓库显而易见的好处吸引了很多人的喜爱,但在很多情况下,一个集中式的数据仓库却是更合适的。例如,

如果你有一些核心代码想只允许部分人能访问,把它放到git里必然是你不希望的。很多的企业都是将它们的代码集中管理的,我猜,所有(重要)政府项目估计都使用的是集中式数据仓库的版本控制系统。

Subversion的理念符合常规思维 这是说,很多人(特别是管理者或老板)对版本号有一种习惯的认识,把开发视作一种按时间的线性发展轨迹,这在他们脑子里根深蒂固。并不是找借口,Git的随意性并不是很容易去理解,你也许注意到了,任何一本关于Git的书都会在第一章第一节告诉你要抛弃脑子里所有的传统观念,重新认识。

Subversion只提供一种途径,没有第二选择 SVN是一个版本控制系统,它只提供一种方式做这些,每个人都使用相同的方法。就是这样。这使得你将代码从SVN迁移到其它集中式管理的VCS或从其它集中式管理的VCS迁进来变得很容易。Git并不仅仅是一个版本控制系统——它实际上是一个文件系统,它里面有很多的拓扑学知识来支持你如何在不同的环境中架设代码仓库——并且没有一个统一的标准。选择一个合适...

GIT是否有类似与TortoiseSVN的showlog功能: TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具。通过使用它,我们可以可视化的管理我们的版本库。不过由于它只是一个客户端,所以它不能对版本库进行权限管理。 TortoiseSVN不是一个独立的窗口程序,而是集成在windows右键菜单中

ios git 和svn的区别: GIT是分布式的,SVN不是,这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。
GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提 交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

eclipse右键team显示的是git的目录,现在想切换成svn的,怎么切换?项目用的是svn。: 默认的eclipse没有svn,需要安装svn插件,或者在外部使用Tsvn。
关于svn插件或者tsvn,直接百度关键字就可以找到了很多教材,
或者你可以直接在elipse的elipse market中 搜索svn关键字 就能看到svn插件了,点install就可以安装了。

怎样将svn库中的代码迁移到git库: 下面开始我们的学习:
1.Git安装(略)。
2.创建版本库
首先,选择一个合适的地方(我选择了D盘,我的电脑是Win 7),常见一个空目录:

$ mkdir Git
$ cd Git
$ pwd//显示当前的路径
/d/Git

注:Windows下,路径名不要包含中文,因为Git对中文支持不给力!
第二步,通过git init命令把这个目录变成Git可以管理的仓库:

1
2

$ git init
Initialized empty Git repository in /d/Git/.git/

这样就创建了你的Git仓库。
接下来,我们上传一个文件到Git。编辑一个readme.txt文件,内容如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

将其放到/d/Git目录下,因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
将一个文件放到Git仓库需要两步:
(1)使用git add将文件添加到仓库:

1

$ git add readme.txt

(2)使用git commit将文件提交到仓库:

git commit -m "wrote a readme file"
[master 48b9a84] wrote a readme file
1 file changed, 2 insertions(+)

注:git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
commit可以一次提交多个文件:

$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."

3.Git的命令很多,下面再学习几个吧!
继续修改readme.txt文件:

Git is a distributed version control system.
Git is free software.

git status命令看看结果:

$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

git status查看仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

1
2
3
4
5
6
7
8
9

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.

git diff查看不同!
在工作中,我们可能提交了几千个文件,如果想看历史记录,可以使用git log命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Tue Aug 20 15:11:49 2013 +0800

append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date: Tue Aug 20 14:53:12 2013 +0800

add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date: Mon Aug 19 17:51:55 2013 +0800

wrote a readme file<br>………………………………………………………………………………<br>………………………………………………………………………………

commit 0f71dba115d8830212fd1736a02a077ce2e91699
Author: lixiaolun <303041859@qq.com>
Date: Thu Jan 15 22:06:05 2015 +0800
wrote a readme file
(END)
注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。
git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
--pretty=oneline参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$ git log --pretty=oneline
fae7920797cbe9057e7e5ced1fdc79d1eb592758 commit a file readme
33cff68fd77dcbfdb8644a8d3f1c34175830b1a6 text1.txt commit
48b9a84010813eecb1e3acca555d1b704c9d5930 wrote a readme file
2d874d572e805c1825200458a8a8aa9e55429d8f 2015-1-30 upload
86edb2f2f658578f993532c83c5c368d2c4a7c4c local_gitgub
7d3197611468b3d7dd6b861829e19de626c22bc8 remove text1.txt
d9ee12aeca6cacf25f6b02095d03d5a9f03d3c5e remove text.txt
d79f7ec6a470f0efb1afee1accb28fae3ef3a995 add test.txt
24a93f3894fec142cbc11bc508f2407635380c81 git tracks changes
c22b22edea6b0f9fff3c4d73b3351c49e966a85e add 3 text.txt
57c62b9d4e94c19a9484ca6c6c6e84f18965b41a understand how stage
f2bbf87ef050bb70d98390cf8ca1680ed0dff297 modify reamde.txt
fe829f988f43647933edb35f347171c54187af4a add a new word distr
0f71dba115d8830212fd1736a02a077ce2e91699 wrote a readme file

友情提示:你看到的一大串类似3628164...882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。
时光穿梭之版本回退!!
如果你提交的一个文件,发现还不如你你上一个版本好,赶紧回退!怎么做呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上一个版本的命令git reset:

1

$ git reset --hard HEAD^

--hard参数有啥意义?这个后面再讲,现在你先放心使用。
查看文件命令cat readme.txt:

1
2
3

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

git reflog记录了每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

前面的数字是commit id。知道commit id可以回退上一次执行的命令,回退命令为git reset --hard <commit id>:

1

$ git reset --hard 3628164

Git 相比 svn 和其他版本管理工具的核心优势有哪些: cvs, git, svn都用过,以下完全是主观感受:
1. git比svn快,用起来更流畅。
2. git在本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器。svn commit就到服务器了,有时候发现commit错了或不全就得再来一遍,有review更吐血了。(git commit --amend太好用了)
3. git拉branch和在branch之间切换都非常简单,可以随便折腾。svn一个branch就是一个copy。
4. git绝对不会有被lock了不能commit的情况。。
5. svn老版本每个目录都有一个.svn目录,非常繁琐。(新版本svn也只在最上层有.svn目录了,不过仍然比较难用,不在.svn同目录下很多命令不给用,比如svn info)

如何将SVN的版本库通过git导出代码: 其实,很多人都不care谁写了Git,只在乎它是免费而且好用的!So do I!
下面开始我们的学习:
1.Git安装(略)。
2.创建版本库
首先,选择一个合适的地方(我选择了D盘,我的电脑是Win 7),常见一个空目录:

$ mkdir Git
$ cd Git
$ pwd//显示当前的路径
/d/Git

注:Windows下,路径名不要包含中文,因为Git对中文支持不给力!
第二步,通过git init命令把这个目录变成Git可以管理的仓库:

1
2

$ git init
Initialized empty Git repository in /d/Git/.git/

这样就创建了你的Git仓库。
接下来,我们上传一个文件到Git。编辑一个readme.txt文件,内容如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

将其放到/d/Git目录下,因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
将一个文件放到Git仓库需要两步:
(1)使用git add将文件添加到仓库:

1

$ git add readme.txt

(2)使用git commit将文件提交到仓库:

git commit -m "wrote a readme file"
[master 48b9a84] wrote a readme file
1 file changed, 2 insertions(+)

注:git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
commit可以一次提交多个文件:

$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."

3.Git的命令很多,下面再学习几个吧!
继续修改readme.txt文件:

Git is a distributed version control system.
Git is free software.

git status命令看看结果:

$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

git status查看仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

1
2
3
4
5
6
7
8
9

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.

git diff查看不同!
在工作中,我们可能提交了几千个文件,如果想看历史记录,可以使用git log命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Tue Aug 20 15:11:49 2013 +0800

append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date: Tue Aug 20 14:53:12 2013 +0800

add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date: Mon Aug 19 17:51:55 2013 +0800

wrote a readme file<br>………………………………………………………………………………<br>………………………………………………………………………………

commit 0f71dba115d8830212fd1736a02a077ce2e91699
Author: lixiaolun <303041859@qq.com>
Date: Thu Jan 15 22:06:05 2015 +0800
wrote a readme file
(END)
注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。
git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
--pretty=oneline参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$ git log --pretty=oneline
fae7920797cbe9057e7e5ced1fdc79d1eb592758 commit a file readme
33cff68fd77dcbfdb8644a8d3f1c34175830b1a6 text1.txt commit
48b9a84010813eecb1e3acca555d1b704c9d5930 wrote a readme file
2d874d572e805c1825200458a8a8aa9e55429d8f 2015-1-30 upload
86edb2f2f658578f993532c83c5c368d2c4a7c4c local_gitgub
7d3197611468b3d7dd6b861829e19de626c22bc8 remove text1.txt
d9ee12aeca6cacf25f6b02095d03d5a9f03d3c5e remove text.txt
d79f7ec6a470f0efb1afee1accb28fae3ef3a995 add test.txt
24a93f3894fec142cbc11bc508f2407635380c81 git tracks changes
c22b22edea6b0f9fff3c4d73b3351c49e966a85e add 3 text.txt
57c62b9d4e94c19a9484ca6c6c6e84f18965b41a understand how stage
f2bbf87ef050bb70d98390cf8ca1680ed0dff297 modify reamde.txt
fe829f988f43647933edb35f347171c54187af4a add a new word distr
0f71dba115d8830212fd1736a02a077ce2e91699 wrote a readme file

友情提示:你看到的一大串类似3628164...882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。
时光穿梭之版本回退!!
如果你提交的一个文件,发现还不如你你上一个版本好,赶紧回退!怎么做呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退到上一个版本的命令git reset:

1

$ git reset --hard HEAD^

--hard参数有啥意义?这个后面再讲,现在你先放心使用。
查看文件命令cat readme.txt:

1
2
3

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

git reflog记录了每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file

前面的数字是commit id。知道commit id可以回退上一次执行的命令,回退命令为git reset --hard <commit id>:

1

$ git reset --hard 3628164

  • 10086投诉电话是多少

    清洗汽车发动机外部的油泥多少钱: 这个的话一般在外面的店铺清洗的话,那发动机价格的话一般都在200到300左右。 ...

    320条评论 2667人喜欢 5816次阅读 262人点赞
  • 100克糙米多少卡路里

    dnf野猪:上衣,鞋子,腰带 终极:头肩,下装,手镯 项链:佩鲁斯 戒指:双子血 在第四季还适合狂战吗?: 还是很适合的 终极鲁莽 阿尔伯特给的任务,远古二期的任务,刷六次哥布林,六次蠕动,六次鹰犬,要求王者级就给一件套装,任务只能做出项链和鞋子,其他部位自己刷图给。 ...

    922条评论 3625人喜欢 4798次阅读 292人点赞
  • ny车牌哪里的

    dnf80版本弹药: 别走物理,我现在走的物理都后悔了,魔法攻击比较好,你只需要把物理防御提高就行了 ...

    310条评论 3367人喜欢 3285次阅读 826人点赞
  • 云门囤在哪里

    DNF圣骑士的圣光球是多少级的技能?需要晶体吗?被圣光球击中后是100%眩晕吗?: 35级需要晶体看技能等级,等级高,晕眩等级也高现在的金身和那时候的完全不一样了,那时候的金身,可以克毒王,现在不同了,无敌时间的修改,武器祝福的修改,2个恢复的减弱,都使金身地位下降很多! ...

    891条评论 3198人喜欢 1261次阅读 955人点赞
  • 2014助理医师考试成绩在哪查

    DNF圣骑士加精神还是智力: 辅助加精神 审判加智力吧 ...

    753条评论 2174人喜欢 5070次阅读 939人点赞
  • 昆山违章在哪里处理违章

    mac版pdf阅读器 怎样提取几页: 如果是提取连续页到一个新的PDF, 无需额外软件:1, 用"预览"应用打开PDF;2,"文件"-"打印", 页数选择"范围", 输入起始页和结束页;3, 左下角下拉选择"存储为PDF"... ...

    717条评论 3866人喜欢 3952次阅读 545人点赞
  • dsm什么意思

    为什么异界刷真远古比红字cc厉害那么多?: 本身异界套刷图就远比红字传承好。传承是pk用的,刷图还不如假紫。装备选择应该是这样的,远古套>真野猪套>假紫套>>传承套。真远古扩大了装备的差距。 ...

    610条评论 1413人喜欢 2378次阅读 283人点赞
  • 昆明昆明哪里有医院GX-B治疗白癜风

    淘宝开店卖地下城与勇士游戏币类目怎么选: 发布宝贝 在类目哪里输入游戏币 系统会提供适合的类目给你选的 ...

    805条评论 4473人喜欢 6211次阅读 690人点赞