SVN与Git比较的优缺点差异

SVN与Git比较的优缺点差异

一、 集中式vs分布式

1. Subversion属于集中式的版本控制系统

集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

阅读更多

git rebase -i

变基时有六个命令可用:

  • pick
    pick只是意味着包括提交。重新进行命令时,重新安排pick命令的顺序会更改提交的顺序。如果选择不包括提交,则应删除整行。

  • reword
    该reword命令与相似pick,但是使用后,重新设置过程将暂停并为您提供更改提交消息的机会。提交所做的任何更改均不受影响。

  • edit
    如果您选择edit提交,则将有机会修改提交,这意味着您可以完全添加或更改提交。您还可以进行更多提交,然后再继续进行变基。这使您可以将大型提交拆分为较小的提交,或者删除在提交中所做的错误更改。

  • squash
    该命令使您可以将两个或多个提交合并为一个提交。提交被压缩到其上方的提交中。Git使您有机会编写描述这两个更改的新提交消息。

  • fixup
    这类似于squash,但是要合并的提交已丢弃其消息。提交仅合并到其上方的提交中,并且较早提交的消息用于描述这两个更改。

  • exec
    这使您可以对提交运行任意的Shell命令。

阅读更多

git submodule

添加

git submodule add -b [指定分支] [仓库地址] [路径]

example:

git submodule add -b icarus https://github.com/im/hexo-theme.git themes/icarus

命令执行完成,会在当前工程根路径下生成一个名为 .gitmodules 的文件,其中记录了子模块的信息。

.gitmodules

[submodule "themes/icarus"]
    path = themes/icarus
    url = https://github.com/im/hexo-theme.git
    branch = icarus
阅读更多

git 常用命令

恢复修改过的文件

git checkout file_name

获取远程分支

git checkout --track origin/branch_name
阅读更多

git 添加 ssh key

  • 创建 SSH Key
    ssh-keygen -t rsa -C "tangxiaomiemail@gmail.com"
    cd ~/.ssh
    cat id_rsa.pub

如果一切顺利的话,可以在用户主目录里找到 .ssh 目录,里面有 id_rsaid_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人.

阅读更多