Git基础教程
前言
目前主流的项目代码管理工具分为2大类,一个是SVN,一个是Git。本文主要讲解Git的原理和使用。
SVN优缺点
优点及适用场景:
◆管理方便,逻辑明确,符合一般人思维习惯。
◆易于管理,集中式服务器更能保证安全性。
◆代码一致性非常高。◆适合开发人数不多的项目开发。
缺点:
◆服务器压力太大,数据库容量暴增。
◆如果不能连接到服务器上,基本上不可以工作
◆不适合开源项目或者大型团队协作开发的项目
Git优缺点
优点及适用场景:
◆适合分布式团队多人协作,敏捷开发。
◆公共服务器压力和数据量都不会太大。
◆速度快、灵活、可离线工作。
◆任意两个开发者之间可以很容易的解决冲突。
缺点:
◆学习周期相对而言比较长。
◆代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
原理
4个区
•Workspace:工作区,为电脑中实际的目录
•Index / Stage:暂存区,类似于缓存区域,临时保存你的改动。
•Local Repository:仓库区(或本地仓库),在.git目录下。
•Remote Repository:远程仓库。
3个步骤
✓git add .把所有文件放入暂存区;
✓git commit把所有文件从暂存区提交进本地仓库;
✓git push把所有文件从本地仓库推送进远程仓库。
5种状态
•未修改(Origin)
•已修改(Modified)&未追踪(Untracked)
•已暂存(Staged)
•已提交(Committed)
•已推送(Pushed)
安装
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
检查
在系统命令提示符中输入:git --version,如果打印了Git的版本号,则安装成功。
配置
配置Git用户和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
与Github的连接
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
推送远程仓库
关联远程仓库
在Github上创建一个新的仓库需要和本地的目录一致,仓库名后面关联需要用到
然后再本地的Git终端输入
git remote add origin git@github.com:hy546880109/study.git
推送到远程库上:
$ git push -u origin main #因master带有歧视的含义,官方已经改成main了
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 8 threads
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 17.40 KiB | 1.34 MiB/s, done.
Total 23 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To github.com:hy546880109/mycs.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
推送成功可以直接在Github创建的新仓库下看到推送上去的本地文件了。
官网教程
或者直接参考官网的教程进行操作
错误处理
1,输入:git remote add origin git@github.com:yourName/yourRepo.git时
报错:fatal: Not a git repository (or any of the parent directories): .git
解决办法:输入 git init ,初始化一个本地仓库
2,输入:git remote add origin git@github.com:yourName/yourRepo.git时
报错:fatal: remote origin already exists.
解决办法:
1 删除Git仓库中的origin信息:git remote rm origin
2 重新添加Git仓库中的origin信息
3,输入:git push origin master 时
报错:fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
解决办法:重新输入一次:git remote add origin git@github.com:yourusername/test.git
4,输入:git push origin master 时
报错:fatal: remote error:
XXXXXX@qq.com/myarea is not a valid repository name Email support@github.com for help
解决办法:使用git remote rm origin 然后再使用上传命令
5,输入:git push origin master 时
报错:To git@git.oschina.net:yangzhi/hello.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@git.oschina.net:yangzhi/hello.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushin
hint: to the same ref. You may want to first merge the remote changes (e.g.
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解决办法:出现这个问题是因为github中的README.md文件不在本地代码目录中。先进行代码合并 git pull --rebase origin master 再执行 git push origin master
6,输入git add ./时
报错:fatal: Not a git repository (or any of the parent directories): .git
解决办法:先输入git init,再add
本文来自博客园,作者:Harry_666,转载请注明原文链接:https://www.cnblogs.com/harry66/p/13806239.html