Git
前言
Git是一种分布式代码版本控制工具。
Git是免费的。
有些人说,Git是最强大版本控制工具。
我不是大神,所以,我只发表我自己工作中的使用感受与理解,对于不对,大家自己判断,欢迎指正:
Git功能强大没错,但相对来说,学习成本较高。想要基本会用Git,最起码就要理解Git中的工作区、暂存区、仓库、远程仓库,并且,要理解分布式代码版本控制的基本概念,版本控制与代码同步是分离的,也因此可以支持离线操作。
而常用的SVN,比如TortoiseSVN,属于集中式代码版本控制,想要正常工作,必须使工作的电脑可以连接上存放代码的服务器,否则,就无法进行版本版本控制与代码同步,但学习成本较低,即使从来没接触过版本控制概念的人也可以在几分钟内做到简单使用。
于是,对于选择,我做出以下建议:
Git:
工作环境网络非常不稳定,甚至经常实现,因为Git的版本控制可以离线运行,本地也有版本库。
学习研究,经常在GitHub社区中进行代码提交等操作。
不急于推进工作进展,能够接受相对较长的工作培训或学习周期。
十分担忧服务器安全,对代码的版本历史比较关心,担心会有山洪爆发、地震、泥石流等出现在服务器的位置,并刚好干掉服务器。
团队只能接受素质比较高的人。
工作设备经常变化。
代码高度开源。
SVN:
工作环境如无意外都有网络。
学习研究,在服务器中安装SVN的Server端,进行代码仓库的管理。【这一点是SVN的难点,可能比Git还难,因为Git除非涉及到自建仓储库,否则不会接触到服务器配置以及权限级别管理等东西】
团队人员一上手,就可以快速参与到开发中去,哪怕这个人没听说过版本控制这个概念
不是太担心服务器安全,最多对服务器进行定期备份,只关心代码的基本完整性,不关心代码的版本历史细节。
代码安全要求比较高,权限控制需要精确到项目或者子目录级别。
对于Git更全面的了解,可以参照以下地址,可能比我的文章有用:
Git教程(菜鸟教程:字典工具),Git教程(龙恩0707:图解),Git教程(廖雪峰:详解)
目的
对于我来说,使用Git是为了管理自己在Windows平台下的项目,该项目已经发布在了GitHub上,本地又进行了一些修改,但又想在家里自己的电脑上也能修改自己的类库项目,设备多变,就用到了Git。
所以,对于我来说,用Git的目的是为了解决以下问题:
1.同步本地与GitHub的代码
2.异地开发时进行代码同步,不至于重复性的开发维护两套代码
3.公司使用的是SVN,我不想使用自己的SVN账号登录公司的电脑,麻烦而且危险。
目前来说,对于什么都要学的我来说,我的方针是够用就行,所以,此文章目前只关注于解决上述问题,并对解决问题的过程进行记录与整理。
正文
1.下载Git并安装
安装成功后,会出现Git CMD/Git Bash/Git GUI三个工具,其中Git GUI是图形化界面,但目前Git-2.29.2.2-64-bit.exe支持的操作不多,只有基本操作。我这里用的是Git Bash。
2.配置用户名和Email
git config --global user.name "name" git config --global user.email "mailURI"
输入后你可能发现没什么反馈,别担心,我的也是,但没影响,如果不放心,可以使用git config --list命令查看配置信息。该配置是为了配置个人的用户信息,至于这个用户信息,换了设备能不能用,别着急,往下看。。。
3.创建本地仓库
cd /d/Demo/Arvin/ --进入指定目录,当前所在目录可以在Git Bash中用pwd命令查看
git init -b main ArvinGit --该命令会在Arvin文件夹下的ArvinGit中创建一个.git文件夹,如果ArvinGit文件夹不存在,则会自动创建。其中.git是隐藏文件夹。win10中通过查看->勾选隐藏的项目查看隐藏的项目,其他版本或者系统请自行查找。
注意:目前的Git自动创建的分支名是master,属于历史遗留问题,但从2020年10月1日起,为避免奴隶制联想,GitHub的主分支不再是master,而是main,但Git显然在此时还没有改正过来,所以,为了避免后续问题,建议用-b main指定初始化仓库的分支名称。
这种奴隶制词汇的替换是一种趋势,GitHub、微软,IBM,Twitter等各大科技公司都在进行这项推进,所以为了将来不必要的麻烦,最好一开始就把主分支的名字命名为main,而不是master
4.关联Github与本地仓库
4.1.配置SSH
ssh-keygen -t rsa -C "GitHub邮箱地址" --生成 SSH Key【本地Git仓库和 GitHub 仓库之间的传输是通过SSH加密的,需要配置验证信息】【成功后生成 .ssh 文件夹,打开 id_rsa.pub,复制key】
注意,复制key时需要带上ssh-rsa。然后复制到GitHub上的指定位置,New SHH key,然后按提示放入key,最后生成如下所示:
4.2.进行关联GitHub
git remote add origin https://github.com/*********/Arvin --关联本地的git库与GitHub,此外,需要注意,origin不是关键字,是自己命名的表示remote地址的key git remote -v --查看本地Git仓库关联的remote列表
5.同步代码
git add ./ --将当前目录下的所有文件(除了.gitignore文件忽略的文件)添加到暂存区【常用的忽略文件的下载地址:https://github.com/github/gitignore】,由于我的是.net项目我这里用的是其中的VisualStudio.gitignore忽略文件 git commit -m "提交的日志描述" --提交暂存区的文件到本地仓库,并生成版本日志 git push -u origin main --成功时,将本地仓库的文件推送到GitHub的main分支
扩展
git常用命令:
#创建本机用户 git config --global user.name "Arvin Jing" git config --global user.email "*******@qq.com"
git config --list
#创建本地仓库 git init -b main ArvinGit #暂存区 git add [文件名] git add ./ git ls-files //查看暂存区的文件 git rm --cached [文件名] //移除暂存区指定文件 git rm --cached -r * //移除暂存区所有文件,包括子目录,如果想移除指定文件夹,则将*替换为文件夹名称 #提交到本地仓库 git log //查看提交日志 git commit -m "日志内容" #管理与GitHub库的连接 git remote add origin https://github.com/627539904/Arvin git remote set-url origin https://github.com/627539904/Arvin git remote remove origin git remote -v git push -u origin main #分支管理: git branch -m master main //将master迁移到main git push origin --delete master //删除master分支 #强行拉取,和当前分支合并【允许历史分支合并】 git pull --allow-unrelated-histories origin main