git 新路学习

1. 我只会用git clone, 从github上下点代码
git 大名鼎鼎,但我svn一直用得好好的,足可应付. 公司的svn服务器是我架设的,权限也是我分配的,svn用的很熟,所以一直没有认真学习git.
但是偶尔会从github 上下点代码. 命令行方式是用git clone, 就这么多了,再无其它了.
曾经记得公司组织过学习git操作,泛泛而谈,没认真对待.

2. git 有一个巨大的,免费的存储空间,代码库,这是它的优势之一.
集中式因占用cpu资源无法构造如此庞大数据库.

终于,我也想用github 了,因为我想在上边存点代码.
我用业余时间学习了一点内核知识,这代码环境,放到本机容易丢失,放到公司服务器也不合适,放到github上是最合理的了,同道人也可以走点近路,我们也应该为github做点贡献
我翻阅了一下github主页learn git and github without any code. 按其指南只点了几下鼠标确实生成了一个Hello World.
到此我知道我也可以建立网上仓库,上传代码了,至于后面的
创建一个分支
生成一个提交
打开一个Pull Request
合并一个Pull Request,
后面慢慢再说.

3. git脱离服务器它仍然可以独立运行,这是它的优势之二.
本地代码维护和向网络提交代码
既然都是版本管理软件,功能应该都类似.
但svn是集中式版本控制软件,git是分布式版本控制软件,用法上还是稍有差别.
分布式说得太专业,通俗点讲,分布式是脱离服务器它仍然可以独立运行,这是它的优势之二.
在局部网下优势不明显,但当你把笔记本带到家时就不一样啦.
当断网后,
svn info: 显示仓库地址,仓库版本号
svn status: 显示当前版本状态,哪些文件已修改
有些不用联网的命令还可以使用
但svn up, svn log, svn diff,等等都不能使用了,需要与服务器相连,更不用说svn ci 了.
而git 不受影响(当然不能向服务器推拉了)
本地常用命令,
git status
git add
git commit
git rm
git checkout -- <file> //重新检出文件,放弃更改之意
与网络同步
git push
git pull
与网络服务器建立关联
git remote add(先有本地再与网络关联时用该命令)
解释:,通常我们先用git clone从网络上克隆,就自动建立了关联
但也可以先有本地代码仓库(分布式),再用git remote add远程库向远程建立关联和上传代码.
建立关联后,以后用git push 向远程仓库推送代码

4. 顶峰决战
svn 的版本号是顺序递长的,看版本号就知道谁更新
svn log -v 能够看到具体那些文件发生了变动.
svn diff -rA:B 能够具体看到哪些文件内容发生了改变, 我已经svn diff 改用vimdiff 来显示,更直观!
git 能应战否?

git log --name-status

git diff A B

git vd A B //vd 是用vimdiff显示,需要设置.

a: <版本号> versus <commit_id>
svn commit 对应一个递长的版本号
git commit 对应一个hash 值,
这从log 功能上能看出来, 因为git 是分布式,独立工作,你用1,2,3,我也用1,2,3就没法同步了,到底谁的是1,2,3
git 有一个指针HEAD 来指向不同的版本,只要用命令
git reset --hard commit_id 就可以了.
借助于git log, git reflog, git reset 可以在各个版本间游走,
svn 若要恢复到以前版本,则不那么方便了,它会真刀实枪把版本文件从服务器替换到工作区,一般除非必要很少这样操作
而git虽然也是真刀实枪替换了工作区文件,但从本地,而且很快,可以很方便的游走.
git tag 查看标签,
git tag <tagname>, 在HEAD 提交上打标签
git tag <tagname> <commit_id> 在commit_id 上打标签
git show <tagname> 显示标签信息.
git tag -d <tagname> 删除
git push origin --tags 推送全部未推送标签
git push origin <tagname>可以推送一个本地标签;
git push origin :refs/tags/<tagname>可以删除一个远程标签。
标签的简洁性可以与版本号相匹敌, commit_id 为版本游走提供了方便
但总之,git 没有一目了然的版本号. git 略输一筹.

b: <svn log -v> versus <git log --name-status>
二者匹敌

后者还有 git log --stat, 图形显示,好像功能更丰富.

c: git 也可以用vimdiff 来比较 , 先配置一下,再运行 git df 即可
git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.df difftool
svn 与 git 二者匹敌

5. git 的分支操作
在svn上,我很少用分支操作,实在不得以,会另开仓库或另建目录.
分支功能并不是一定要有的.直接在master 上干不就可以了吗.
当然了,你要保证每次提交,master都是能正常运行的.

git 的这种先创建分支,在分支上操作,然后再合并分支,再删除分支的做法
其实只是为了保证一定是要有一个master 是可运行的,是好的.
纵使在本地机器上也一样,好像也就这么多了. 最终保留一个分支就好
如果你要保留多个版本,对应多个分支,也是可以的,但总不如用不同的目录分开好.

总之,git 与 svn 是两个典型的分布式和集中式版本控制软件,都是免费的和性能优良的.
根据你特定的情况选择吧.顺便说一下,我也用过VSS,clear-case,cvs,这些就淘汰掉吧

我的.gitconfig 配置

$ cat .gitconfig
[user]
    email =
    name =
[alias]
    st = status
    vd = difftool
    ci = commit
    co = checkout
    slog = log --abbrev-commit --oneline
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[core]
    editor = vim
[push]
    default = matching

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值