5.1. git

5.1.1. refer

5.1.2. command example

  • 使用远程覆盖本地

    git fetch --all
    git reset --hard origin/master
    
  • 错误:fatal: Pathspec ‘shell-baselib/cxl_cli’ is in submodule ‘shell-baselib

    git rm --cached shell-baselib/
    git add shell-baselib/
    
  • merge其他分支(或远程分支),有冲突是使用远程覆盖本地

    git svn clone svn://192.168.1.66/namtso/branch/web_code/svntest/front -r31772:HEAD
    git remote add origin git@gitlab28:chenxuelin/spifront
    git fetch origin master
    git merge -m "merge from git" -X theirs origin/master
    echo xuelin|git svn clone "svn://192.168.1.66/EmicallDev/ApplicationPlatform/sandbox/WebApplication/spi-front" -r3995:HEAD --username chenxl
    git remote add origin git@gitlab28:websrc/vuefront
    
    git svn clone svn://192.168.1.66/namtso/branch/web_code/svntest/front -r31772:HEAD
    git remote add origin git@gitlab28:chenxuelin/spifront
    git fetch origin master
    git reset --hard origin/master
    
    git merge -X theirs -m "merge from git when confict use theirs" origin master
    sed -i '/^dist\//d' .gitignore
    npm config set registry " https://registry.npm.taobao.org "
    svn info svn://192.168.1.66/EmicallDev/ApplicationPlatform/sandbox/WebApplication/spi-front | awk '($1=="Last"){if($3=="Rev:"){print $4}}'
    
  • 开发使用git,打版本使用svn

    echo xuelin|git svn clone "$svnfront" -r"$svnLastVersion":HEAD --username chenxl
    git remote add origin "$gitfront"
    git fetch origin master
    git merge -m "merge from git" -X theirs origin/master
    git svn dcommit
    
  • 配置ssh方式连接github和本地gitlab

    # cd ~/.ssh
    # ssh-keygen -t rsa -C "303566@qq.com" -f ~/.ssh/github
    # 在目录下有两个文件 github和github.pub,cat github.pub拷贝内容
    # 登录github》》your profile》》ssh keys》》粘贴内容到sshkey
    # ssh-keygen -t rsa -C "chenxuelin@emicnet.com" -f ~/.ssh/gitlib-cxl
    # 在目录下有两个文件 gitlib-cxl和gitlib-cxl.pub,cat gitlib-cxl.pub拷贝内容
    # 登录gitlib》》your profile》》ssh keys》》粘贴内容到sshkey
    # 创建~/.ssh/config
    #303566-github
      host github
      user git
      hostname github.com
      port 22
      identityfile ~/.ssh/github
      #chenxuelin-gitlib28
      host gitlib28
      user git
      hostname 10.0.0.28
      port 22
      identityfile ~/.ssh/gitlib-cxl
    # 测试
    ## root@1604developer:~/.ssh# ssh -T gitlib28
        Welcome to GitLab, chenxuelin!
    ## root@1604developer:~/.ssh# ssh -T github
        Hi xuelinchen! You've successfully authenticated, but GitHub does not provide shell access.
    # 在github创建项目
       git clone git@github:xuelinchen/schedule.git
       # 增加remote仓库
       git remote add gitlib28 git@gitlib28:chenxuelin/schedule.git
       # 提交结果到远程仓库
       git push gitlib28
    

5.1.3. git2svn

# clone git project

git clone git@gitlib28:chenxuelin/schedule.git

# check out svn project with same directory of git project

svn co svn://192.168.1.66/namtso/branch/web_code/svntest schedule --username chenxl --password xuelin

# add ignore of svn,attention that has a enter after git and has dot in the end

svn propset svn:ignore ".git
.gitignore" .
svn status 查看状态

# commit to svn

svn add *
svn commit -m "result from git"  --username chenxl --password xuelin

# commit to git

git add *
git commit -m "add .svn path to git res"
git push

# add test file in git and check in to svn

vi test.md
git add test.md
git commit -m 'add test.md'
svn add test.md
svn commit -m 'check in file from git'  --username chenxl --password xuelin
git commit -m 'delete test.md'
git pull
svn add * --force
svn commit -m 'test add file' --username chenxl --password xuelin
删除文件无法自动提交到svn中

# git-svn

echo xuelin|git svn clone svn://192.168.1.66/namtso/branch/web_code/tp5-project -r29318:HEAD --username chenxl
git branch
git remote add origin git@gitlib28:chenxuelin/schedule.git
git pull origin master ctrl+x提交
git branch --set-upstream-to=origin/master
强制刷新本地版本为远程仓库
git fetch --all
git reset --hard origin/master

# Append svn:ignore settings to the default Git exclude file

git svn show-ignore >> .git/info/exclude
git svn dcommit

# from git commit to svn

1、create new clone project
    git clone git@gitlib28:chenxuelin/schedule
    cd schedule
2、create new svn clone project
    echo xuelin|git svn clone svn://192.168.1.66/namtso/branch/web_code/tp5 -r29318:HEAD --username chenxl
    cd tp5
    git remote add origin git@gitlib28:chenxuelin/schedule.git

# git version commit to svn

http://blog.csdn.net/zhangskd/article/details/43452627
1. git clone git@gitlib28:chenxuelin/schedule
2. git svn init svn://192.168.1.66/namtso/branch/web_code/tp5
3. git svn fetch
4. git show-ref svn | tail -n 1
f7e97acecbb8098757d9dc451b3c76eb59c4da9d refs/remotes/origin/master
5. git log --pretty=oneline master | tail -n 1
    8041fab27f1ff38f980b9ea00fd335c50005af8c nf:  create svntest project
6. echo "8041fab27f1ff38f980b9ea00fd335c50005af8c 5194b04324e1fa8bcec215ec053c5e707d2e4b83" >> .git/info/grafts
    试验失败

# another

1、echo xuelin|git svn clone svn://192.168.1.66/namtso/branch/web_code/tp5 -r29318:HEAD --username chenxl
2、git remote add origin git@gitlib28:chenxuelin/schedule.git
3、git branch --set-upstream-to=origin/master master
4、git pull origin
5、git svn dcommit
6、git checkout -b newfeature
7、git checkout master
8、git merge newfeature
9、git push origin
10、git svn dcommit

# schedule project

1. install git-svn
   apt install git-svn
2. clone svn project,that is empty project
   echo xuelin|git svn clone svn://192.168.1.66/namtso/branch/web_code/schedule -r29318:HEAD --username chenxl
3. update from svn
   git svn rebase
4. find all branch
   git branch -a
5. add remote git repository
   git remote add origin git@gitlab28:chenxuelin/schedule.git
6. set master branch upstream
   git branch --set-upstream-to=origin/master master
7. pull data from remote git
   git pull origin ==》ctrl+x
8. submit to svn
   git svn dcommit
9. develope in branch
   git checkout -b "cxl"
   git rm test.md
   git commit -m "made some change"
10.return to master for push to remote of git&svn
   git checkout master
   git merge cxl
   git push origin master
   git svn dcommit
11.add ignore from git to svn
   git svn show-ignore >> .git/info/exclude

# tp5 project

1. clone svn project,that is empty project
   echo xuelin|git svn clone svn://192.168.1.66/namtso/branch/web_code/spi -r29318:HEAD --username chenxl
2. cd spi
3. add remote git repository
   git remote add origin git@gitlab28:websrc/spi.git
4. make some change
5. git add .
6. git commit -m 'add ignore'
7. submit to remote git
        git push -u origin master
8. submit to svn
   git svn dcommit

# spi project

1. clone svn project spi-front
        echo xuelin|git svn clone svn://192.168.1.66/EmicallDev/ApplicationPlatform/sandbox/WebApplication/spi-front -r3000:HEAD --username chenxl
2. clone svn project spi-php
        echo xuelin|git svn clone svn://192.168.1.66/EmicallDev/ApplicationPlatform/sandbox/WebApplication/spi-php -r3000:HEAD --username chenxl
3. cd spi-php
4. add remote git repository
   git remote add origin git@gitlab28:websrc/spi.git
5. view remote info
   git remote -v
6. pull data from remote git
        git pull origin
7. git branch -a
   * master
        remotes/git-svn
        remotes/origin/master
8. merge origin/master to local branch master
        git merge remotes/origin/master ==》ctrl+x
9. add ignore from git to svn
   git svn show-ignore >> .git/info/exclude
10.create branch of "bin"
   git checkout -b "bin"
11.commit data to svn
        git svn dcommit
12.cd spi-front
13.add remote git repository
        git remote add origin git@gitlab28:websrc/vuefront.git
14.pull data from remote git
        git pull origin master => ctrl+x
15.add ignore from git to svn
        git svn show-ignore >> .git/info/exclude
16.commit data to svn
        git svn dcommit