Article
Git实现多地多版本协作
# 具体情况:
- 网络的版本库 github.com/winse/winse.github.com
- 笔记本 /d/winsegit/winse.github.com/
- U盘 /?/works/winse.github.com (盘符会变化)
想实现:以笔记本电脑上的更新为主,辅之U盘上的修改(上班时可能进行更新)。
使用SVN基本没法实现这种功能的。原来也没有深入的学习git,看了《Git权威指南》后豁然开朗!
- Git允许一个版本库和任意多个的版本库进行交互 (第十九章 远程版本库)
- Git本地库即可以作为客户端,也可以作为其他库的服务端!
# 实际操作
- 把笔记本的winse.github.com程序拷贝到U盘中
- 为U盘的版本库添加远程版本库notebook
- U盘版本库建立新分支
- U盘修改提交并push到远程版本库notebook
- 笔记本的版本库把新分支merge到master
第一步也可以直接使用git clone /d/winsegit/winse.github.com/,后面添加github网络的远程版本库remote-repo就是了。
# 命令
U盘数据更新提交到笔记本
$ git branch usb $ git checkout usb $ git add got-git $ git commit -m definitive-guide-of-git
Winseliu@WINSE /i/works/winse.github.com (usb) $ git remote add notebook /d/winsegit/winse.github.com/
Winseliu@WINSE /i/works/winse.github.com (usb) $ git fetch notebook From d:/winsegit/winse.github.com * [new branch] master -> notebook/master
Winseliu@WINSE /i/works/winse.github.com (usb) $ git remote notebook origin
Winseliu@WINSE /i/works/winse.github.com (usb) $ git branch -r notebook/master origin/HEAD -> origin/master origin/master
Winseliu@WINSE /i/works/winse.github.com (usb) $ git push notebook usb Counting objects: 8, done. Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 490 bytes | 0 bytes/s, done. Total 5 (delta 1), reused 0 (delta 0) To d:/winsegit/winse.github.com/ * [new branch] usb -> usb
笔记本合并U盘提交的数据
Winseliu@WINSE /d/winsegit/winse.github.com (master) $ git branch * master usb
Winseliu@WINSE /d/winsegit/winse.github.com (master) $ git cherry usb
Winseliu@WINSE /d/winsegit/winse.github.com (master) $ git merge usb Updating 9f7dff3…31ffaa9 Fast-forward bookreview/_posts/2013-10-27-got-git-the-definitive-guide-of-git.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 bookreview/_posts/2013-10-27-got-git-the-definitive-guide-of-git.md
U盘重新获取笔记本的数据合并到usb分支
Winseliu@WINSE /i/works/winse.github.com (usb) $ git fetch notebook From d:/winsegit/winse.github.com 9f7dff3…31ffaa9 master -> notebook/master
Winseliu@WINSE /i/works/winse.github.com (usb) $ git merge master Already up-to-date.
# 其他实践命令
远程版本库中包含的分支
Winseliu@WINSE /i/works/winse.github.com (usb) $ git ls-remote --heads /d/winsegit/winse.github.com 9f7dff396b357ca23e1cd765a6dae4ade3417e15 refs/heads/master
查看远程分支
Winseliu@WINSE /i/works/winse.github.com (usb) $ git branch -r new-remote/master origin/HEAD -> origin/master origin/master
添加的远程版本库重命名
Winseliu@WINSE /i/works/winse.github.com (usb) $ git remote rename new-remote notebook
Git查看远程库路径
Administrator@WINSELIU /e/git/hello-clone (master) $ git remote -v origin e:/git/hello (fetch) origin e:/git/hello (push)
查看全部的本地引用
Winseliu@WINSE /i/works/winse.github.com (usb) $ git show-ref 9f7dff396b357ca23e1cd765a6dae4ade3417e15 refs/heads/master 31ffaa98d45eaccf8f9d0949fc1d4375f36f9edb refs/heads/usb 06f6c285b7402fb23a50ccb929b7cd84d98028e7 refs/remotes/origin/HEAD 06f6c285b7402fb23a50ccb929b7cd84d98028e7 refs/remotes/origin/master
查看哪些提交领先(未被推送到上游跟踪分支中)
Winseliu@WINSE /i/works/winse.github.com (usb) $ git cherry master + 31ffaa98d45eaccf8f9d0949fc1d4375f36f9edb
各种引用ID之间转换
Winseliu@WINSE /d/winsegit/winse.github.com (master) $ git rev-parse usb master 31ffaa98d45eaccf8f9d0949fc1d4375f36f9edb 9f7dff396b357ca23e1cd765a6dae4ade3417e15
–END
Related
Related posts
-
基于对象存储的 Spark 数据读写实战:从末尾追加到任意更新
2025-10-28
-
心流iFlow:超越 CLI,研究更出彩,成果更惊艳
2025-09-06
-
sed debug: sedsed
2017-11-20
-
STAF start guide
2017-10-06