天天看点

Git与Svn

区别

  1. Git是分布式的,而Svn不是分布的
  2. Git把内容按元数据方式存储,而SVN是按文件:因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。
  3. Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征。
  4. Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
  5. Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。
  6. SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git在提交之前需要先pull一下。
  7. SVN的分支(Branch),是一个完整的目录,且这个目录拥有完整的实际文件;而 Git,每个工作成员可以任意在自己的本地版本库开启无限个分支。
  8. SVN的特点是简单,只是需要一个放代码的地方时用是OK的。

    Git的特点版本控制可以不依赖网络做任何事情,对分支和合并有更好的支持(当然这是开发者最关心的地方),不过想各位能更好使用它,需要花点时间尝试下。。

如何使用

一.git

1.如何把本地的git项目 推送到gitlab上

file ->new ->Project from version control  
填Git Repository URL 
Parent Directory 可以命名为某个目录/trunk 可以区分版本 不会导致代码版本很乱
把原有文件夹的文件除.iml文件,拷贝到trunk目录下
然后把文件夹add to vcs 
然后commit and push
           

2.若把自己的项目创传指定的gitlab所属小组,如何操作?

1)首先 groups-your groups–>选所属分组

若不需要再某个小组内上传,可直接操作第二步

2)new project

输入项目名

输入说明 阅读read.me

保存后会生成一个操作页面,按照指定操作即可

3)进入本地目录cabinet ,右键git bash,根据操作页进行上传

Git与Svn
Git与Svn
Git与Svn

若是第一次操作git,需要配置ssh key之类的,进行身份验证,生成ssh的方式操作如下:

ssh-keygen -t rsa -b 4096 -C "[email protected]"
其中-t是:指定密钥类型,默认是rsa,可以省略
    -C是:设置注释文字,比如邮箱
    -f是:指定密钥文件存储文件名
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
回车之后会创建一个.ssh目录,里边存放的是ssh key,包括密钥和公钥。每次用公钥和密钥去push或者去连另外一台服务器。
cat ~/.ssh/id_rsa.
出现 id_rsa   id_rsa.pub
cat ~/.ssh/id_rsa.pub               取出公钥  然后把公钥add进去 
拷贝公钥,然后进入github页面,进入settings,找到SSH Keys  
Tittle   自己取名
Key    粘贴进去
这时候的key是本机的,已经于github起到关联作用
           

3.git 的常用命令

(1)查看文件                            ls -a
(2)创建文件                            touch 文件名
(3)编辑文件                            vi 文件名 (i进入插入状态,编辑完成点esc,在输入:wq,保存并退出)
(4)查看状态                            git status
这时候本地没有一个git 的repository仓库
首先
(1)初始化仓库                           git init    (传统的版本控制都会追踪一个文件,但是Git不会)
  git status   
(2)配置自己的名字和邮箱
git config --global user.name "hancc"
git config --global user.email  "[email protected]"
查看global配置的位置    cat  ~/.gitconfig
(3)git commit  -m"first commit"  use "git add" to track    git不会跟踪文件的变更 ,需要手动的去add
(4)git add test01.gitchina
    git status
(5)git commit -m"first commit"
1 file changed,i insertion(+)
(6)git log 
会显示:Commit  /Author/Date
           

4.git commit -a机制

(1)创建文件                       touch test11.gitchina
(2)编辑文件                       vi  test11.gitchina
(3)提交文件                       git commit -m"test commit"   提示use "git add" to track
(4)修改以前的                     vi test01.gitchina
(5)查看状态                       git  status
(6)提交                          git commit -a -m"-a commit"       完成了一次提交
(7)git status
test01 跟踪过的文件请提交了
test11 未跟踪的文件请没有提交
总结:git commit -a 可以减少git add的操作,但是只对曾经已纳入到版本库中的文件起到作用,那些一次也没被git跟踪过的文件,是无法使用git commit -a的操作,也就是在新的文件下,每次都是需要做git add的操作的
(8)添加文件                       git add test11.gitchina
(9)提交文件                       git commit -m "test"
           

5.一次提交多个文件

(1)修改文件                      vi test11.gitchina
(2)查看变更                      git commit -a -v
操作:add test 1
     add test 2
     kkkkk
(3)查看日志                      git log
(4)查看状态                      git status
(5)更换界面                      git config --global core.editor vi 
(6)查看变化                      git commit -a -v  
添加  test01
     test02
     test03     保存提交
(7)查看日志                      git log   可以看到commit多行 
           

6.如何把本地的代码推送到远程仓库?

git checkout -b MyIdentityBranch     创建并切换到我的本地分支
git status                           查看我的修改记录
git add .                            把修改和新增提到暂存区
git  commit -m  '根据...查询信息'      为暂存区的改变提交更改信息说明
git checkout dev                     切换到dev分支
git pull                             dev远程的更新同步到本地
git merge MyIdentityBranch           把我的本地开发分枝合到dev
git push                             推送dev分支
           

7.代码提交到master了怎么办 其实应该提交到assemblePayment_0402分枝?

git checkout assemblePayment_0402     切换到assemblePayment_0402分支
git pull
git merge master
git push
git checkout master
git log
git revert commitID(提交版本)
这样可以把提交到master的代码 合并到0402分支上 并且把master提交的代码revert
但是要确认下master的代码是否为最新的,以免上线0402时,对别的功能有什么影响
           

二. svn

下载TortoiseSVN

1.svn checkout

宕下远程代码到本地或本地开发工具中

ieda右键点击项目,Subversion–update Directory–commit把本地代码提交到远程的分支

下一篇: svn使用大全

继续阅读