Git学习笔记

版本管理工具要实现什么功能?

1. 协同修改:团队一起开发一个项目,能同时编辑同一个文件。个人理解:说是这么说,真一个脚本多个人写,不事先分好功能模块的话,merge时候,如果有行内容差异要处理,这和SVN遇到一个Conflict要处理没什么差别。
2. 数据备份:本地删了,从库能恢复。SVN的库永远在SVN Server上,Git的库,多个终端都有。前者意味着,要拉文件一切向Server看齐,后者意味着,每个人的库可能都不大一样,分支的定义才是主线支线的表达。
4. 版本管理:可以回溯历史,SVN是增量记录,Git是文件快照(指针+Hash(SHA1))。Git新建一个分支,就是新建一个指针,但是SVN新建分支就会产生相同的一批文件。
5. 权限控制:可以控制协作者权限,SVN能控的更细,Git的亮点是团队外开发者提交代码有一个审核功能流程可以走。
6. 分支管理:同时推进一个项目的多个子模块,SVN也有分支合并。

SVN和GIT

SVN是集中式管理
1. 可以统一管理用户,在auth里面修改
2. 可以在当前库中针对每个文件夹设置读写权限。比如我一个库有多个小项目,有些A能看,有些A不能,有些B能看,但不能改。

Git有多种工作方式
1. 集中式工作流:就一个master分支,所有人拉取或推送这个分支,本质就和svn差不多。
2. GitFlow工作流:多分支,不同分支实现不同功能:比如更新分支、测试分支、开发分支,开发分支功能1。工作中以少量分支为主线推进,比如更新分支pull到master分支,功能开发分支都要pull到总开发分支,总开发分支pull到发布分支。
3. Forking工作流:就是第三方团队,复制了一份你的库到自己的git服务器,然后自己去开发自己这个库,完成了任务,就pull request你,你负责合并。

我的理解是,参与到多人协作的大项目中,Git更合适;如果团队人少,项目小而多,权限要控制到某个库的文件/文件夹层面,还是SVN

Git常用语句

动作

  1. Pull 拉取 = Fetch + Merge
  2. Fetch 远程分支先抓下来,但是不合并
  3. Merge 合并分支
  4. Clone 远程库文件复制到本地,同时就初始化了本地Git库
  5. Push 推送 ,向远程分支提交修改
  6. Add 新增,向本地Git暂存区,提交工作区内容
  7. Commit 提交,向本地Git库,提交暂存区内容

命令

  1. git add [filename]
  2. git config user.name xxx
    – 关于用户,有系统和项目两个级别,后者优先
  3. git config user.email yyy@zzz.com
  4. git config --global user.name xxxx
    系统级别
  5. git status
    查看状态
  6. git commit -m “commit message” [file name]
  7. git log git log -oneline git reflog
    都是查看日志的不同格式
  8. git reset --hard [版本hash剧本索引值]
    –hard就是本地库,暂存区,工作区全变
    –soft就是本地库变,其他不变
    –mixed就是本地库和暂存区变,工作区不变
  9. git reset --hard HEAD^
    一个^表示后退一个版本,可叠加
  10. git reset --hard HEAD~n
    n表示后退n步
  11. git diff [文件名]
    比较工作区和暂存区
  12. git diff [本地库中历史版本] [文件名]
    工作区文件和历史记录比
  13. git branch [分支名]
    创建分支
  14. git branch -v
    查看分支
  15. git checkout [分支名]
    切换分支
  16. git merge [被合并分支名]
    前提是先切换到接受合并的分支下
  17. 冲突解决
    编辑文件,删除<<<<>>>>符号,git add 然后 git commit -m “xxx”,不带文件名
  18. git remote -v
    查看当前所有远程地址别名
  19. git remote add [别名] [远程URL]
    创建远程地址别名
  20. git push [别名] [分支名]
    推送
  21. git clone [远程URL]
    克隆 = 1 下载 2 创建origin别名 3 初始化本地库

Unity工程上传GitHub

  1. 准备条件:Github账户,Git安装完毕
  2. 在Github上新建一个库,选择ignore文件为unity类型,把默认分支名字从main改成master,复制这个库的SSH链接
  3. 本地新建Unity工程
  4. 在新建的工程根目录下 Git Bash
  5. 初始化账号 git config --global user.name xxx 和邮箱 git config --global user.email xxx
  6. 初始化ssh,cd ~/.ssh
  7. 新建ssh key:ssh-keygen -t rsa -C 邮箱
  8. 把ssh文件生成路径下的pub 文件打开,复制其中内容。
  9. 在Github的用户Settings-SSH & GPG keys,新建一个ssh key,使用以上内容。
  10. 添加远程(即github)的链接(SSH)git remote add origin 第2条复制的
  11. 直接把库拉下来,git pull origin main(master?),此时得到了ignore文件,有需要可以改
  12. 此时本地有Unity工程文件,库没有,所以先 add:git add .
  13. 然后暂存区全部提交到本地库: git commit -m ‘init commit’
  14. 将本地库推到远程库:git push origin master
  • github现在初始化创建库的默认分支叫main不叫master,git在本地init之后的默认分支叫master,所以如果push master,github等于是新建了一个叫master的分支。建议一个库最好至少有2个分支,1个是主分支,一个是开发分支,不要直接push到主分支。
  • 如果一定要push 到 main,需要先git checkout -b main ,然后pull,add,commit,最后再push。即你本地是master分支,远程就是master分支,你本地是main,才能push远程的main。

学习连接: Git与Github基础全套完整版教程

后续在Git使用中,可能会遇到git rebase会比git merge更清晰。可能会遇到提交撤销等问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值