一、什么是GIT
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
通俗地讲,git可以备份,记录提交记录,回到历史记录,多端共享,方便团队协作。
备注:Git、GitHub与GitLab的区别参考https://www.cnblogs.com/leeyongbard/p/9777498.html
二、远程仓库和本地仓库的区别
2.1用途
I、远程仓库,主要用于代码托管,一般不用于开发工作
II、本地仓库主要有三个阶段
a)工作区(目前正在编写的内容
b)git add(将工作区的内容添加到暂存区)
c)暂存区(类似于缓存)
d)git commit(将暂存区的内容添加到版本库中,此时会生成一个提交ID)
e)本地版本管理结束
2.2存储位置
I、远程仓库在服务器上存储
II、本地仓库在自己电脑上存储
2.3创建个数
I、远程仓库只存在一个
II、本地仓库存在多个,如:用户1本地仓库,用户2本地仓库
三、Git发展史
CVS(集中式)
SVN(集中式)
Git(分布式)
GitHub(geek社区,托管网址)
3.1集中式和分布式的区别(具体参考:廖雪峰的集中式VS分布式:https://www.liaoxuefeng.com/wiki/896043488029600/896202780297248)
简单的理解:
集中式版本控制系统,版本库在中央服务器。工作的时候首先需要从中央服务器取得最新的版本,然后工作,最后把内容推送给中央服务器。缺点:必须联网才能工作,一旦中央服务器出了问题,所有人都无法工作。
分布式版本控制系统,版本库在本地仓库,即每个人工作的电脑。工作的时候没有网络要求,有网络的时候把本地的提交合并推送到远端仓库即可。
四、注册Github账号
打开GitHub官网:http://github.com/join 填写相关信息, 按步骤完成即可。
五、在GitHub上创建仓库
用GitHub账号登录,点击右上角的 + 号---New repository---输入仓库名---点击Create repository即可
六、下载Git客户端
6.1官网下载网址:https://git-scm.com/downloads 选择对应版本下载
如果官网下载比较慢可以用腾讯链接: https://pc.qq.com/detail/13/detail_22693.html
6.2下载完成后,双击安装,在安装过程中可以选择创建桌面快捷方式,然后一直下一步即可完成安装
方法一:直接在桌面上点击右键,找到Git Bash
方法二:点击开始按钮找到Git Bash
七、设置用户信息
Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成自己的,名字必须是自己的真名,而不是GitHub的昵称。
在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱 )
git config --global user.name "yourname" //用户名 git config --global user.email "邮件地址@youremail.com" //填写自己的邮箱
八、设置SSH key
简单补充一下:ssh是加密传输。加密传输的算法有好多,git可使用rsa,rsa用的是非对称密钥(public key公钥与private key私钥)。公钥上传到github用来加密,从github发回来的数据,是用公钥加密过,这时就可以用本地的私钥来解密。
注意: 1、此处的邮箱地址,输入自己的邮箱地址;2、此处的「-C」的是大写的「C」
b)设置密码(默认没有密码登录)
这个密码在提交项目时使用,目的是防止别人往你的项目里提交内容。如果为空(直接回车不输入)的话提交项目时则不用输入密码。
Enter passphrase (empty for no passphrase):<输入加密串> Enter same passphrase again:<再次输入加密串>
注意:输入密码的时候没有*字样的,直接输入即可。
c)看到这样的界面,就设置ssh key成功了
d)查看ssh key公钥
在本机设置SSH Key之后,需要添加到GitHub上,完成SSH链接的设置。
首先、登陆github系统。点击右上角个人头像的小三角---->Settings—->SSH and GPG keys —-> Add SSH key(或者New ssh key),
其次、把本地生成的密钥(id_rsa.pub文件中key)复制粘贴到里面(key文本框中), 点击 add key 就ok了。
最后、在Git Bash里输入命令,查看设置是否成功
ssh -T git@github.com
注意:git@github.com不要修改
如果回车的结果是:
The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)?
输入yes看到下面的内容,就说明设置成功。
Hi cnfeat! You've successfully authenticated, but GitHub does not provide shell access.
若有问题,请重新设置。常见错误请参考:
GitHub Help - Generating SSH Keys
GitHub Help - Error Permission denied (publickey)
九、GitHub上新建文件夹
9.1进入自己的仓库中,点击“ Create new file ”
9.2在创建新文件页面,输入文件夹名称,github默认为是一个文件夹的名称,后面可以再接着新建一个文件并输入名称,完成后点击“ Commit new file ”即可
9.3返回到自己的仓库,可以看到新建好的文件夹
十、删除GitHub上的某个文件夹
注意:在github上只能删除仓库,却无法删除文件夹或文件, 只能通过命令来解决
1、进入要删除的分支文件夹下右击点击Git Bash Here ,打开命令窗口 2、git –help //帮助命令 3、git pull origin master //将远程仓库里面的项目拉下来 4、dir //查看有哪些文件夹 5、git rm −r -–cached target //删除target文件夹 6、git commit -m ‘删除了target’ //提交操作说明 7、git push -u origin master //将操作后的代码更新到github项目上去
注:1、本地项目中的target文件夹不收操作影响,删除的只是远程仓库中的target, 可放心删除
2、每次增加文件或删除文件,都要commit 然后直接 git push -u origin master,就可以同步到github上了
十一、上传本地文件到GitHub
方法一:在GitHub上直接拖拽上传文件夹
在GitHub上也可以上传完整的文件夹结构,直接拖拽到上传文件页面的框中即可。
1.1点击上传文件
1.2 直接拖拽
直接拖拽即可上传文件夹及文件夹里面的文件。如果点击 choose your files 就只能上传单个文件。
方法二: 使用命令上传
Windows系统:
2.1新建本地仓库
常用的做法:将要文件夹变成Git可以管理的仓库
1、pwd //查看文件夹位置。注意:如果不是在要上传的文件夹里右击打开Git Bash,则需要查看文件夹位置,然后用命令进入要上传的文件夹里。 2、git init //初始化,初始化后会生成 .git文件夹 3、git add ./ //将所有文件提交到暂存区 4、git commit -m "提交注释" //提交文件到本地仓库
2.2关联GitHub仓库
a)在GitHub仓库里复制仓库地址
b)建立关联
5、git remote add origin git@github.yqb.pub:yqbsubjecttest/YQB_Android_APP_Auto_plugin.git
十二、在GitHub上创建新的分支
Github上默认的分支是master
方法一:用Git命令创建
git branch //查看当前所在的分支
git branch 新建的分支名 //新建一个自己的分支
git checkout 新建的分支名 //切换到新建的分支
git branch //查看当前所在的分支,注意只有提交了代码查看GitHub上才建好新的分支
方法二:在GitHub里直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了。
注:1 个库可以有多个分支并行的进行开发,但是最后只有 1 个会被 merge 进来,因此当某一个分支被合并到进 master 分支后,其他的并行分支的提交都会被是作为冲突 conflict,解决这个冲突的唯一办法就是,每次做修改之前,记得更新版本库,使自己的分支与 master 分支保持一致。
十三、把Git上的代码拉到本地
1、新建一个空文件,文件名为hhhh
2、在进行的文件hhhh里右击点击Git bash Here
git init //初始化 git remote add origin git@github.com:XXXX/nothing2.git // 关联远端仓库 git fetch origin dev(dev为远程仓库的分支名) //把远程分支拉到本地 git checkout -b dev(本地分支名称) origin/dev(远程分支名称) //在本地创建分支dev并切换到该分支 git pull origin dev(远程分支名称) //把某个分支上的内容都拉取到本地
十四、git命令简介
mkdir //XX (创建一个空目录 XX指目录名) pwd //显示当前目录的路径。 git init //把当前的目录变成可以管理的git仓库,生成隐藏.git文件。 git add XX //把xx文件添加到暂存区去 (git add *也是提交到暂存区 *可替换成具体要上传的文件名,*表示提交所有有变化的文件) git commit –m “XX” //提交文件 –m 后面的是注释。 git status //查看仓库状态 git diff XX //查看XX文件修改了那些内容 git log //查看历史记录 git reset –hard HEAD^ //回退到上一个版本 (如果想回退到100个版本,使用git reset –hard HEAD~100 ) cat XX //查看XX文件内容 git reflog //查看历史记录的版本号id git checkout — XX //把XX文件在工作区的修改全部撤销。 git rm XX //删除XX文件 git remote add origin 远端仓库地址 //关联一个远程库 git push –u(第一次要用-u 以后不需要) origin master //把当前master分支推送到远程库 git clone 远端仓库地址 //从远程库中克隆 git checkout –b dev //创建dev分支 并切换到dev分支上 git branch //查看当前所有的分支 git checkout master //切换回master分支 git merge dev //合并分支。在当前的分支上合并dev分支 git branch –d dev //删除dev分支 git branch name //创建分支 git stash //把当前的工作隐藏起来 等以后恢复现场后继续工作 git stash list //查看所有被隐藏的文件列表 git stash apply //恢复被隐藏的文件,但是内容不删除 git stash drop //删除文件 git stash pop //恢复文件的同时 也删除文件 git remote //查看远程库的信息 git remote –v //查看远程库的详细信息 git push origin master //Git会把master分支推送到远程库对应的远程分支上 git checkout origin/master –b master //拉取远程分支 Fetch //从另外一个版本库下载对象和引用 Grep //输出和模式匹配的行 Mv //移动或重命名一个文件、目录或符号连接 Rebase //本地提交转移至更新后的上游分支中 Show //显示各种类型的对象 Tag /创建、列出、删除或检验一个GPG签名的tag对象 命令 git help –a 和 git help –g 可以查看命令使用方法
十五、几个重要命令的说明
1、git push 推送到远端仓库
git push 命令做了什么?
a)对于本地来说,git 将本地仓库的指定分支推送到远程仓库的相应分支,同时更新了本地仓库的远程分支
b)对于远程来说,git 接收到本地仓库的推送请求时应该在相应分支上合并本地分支,同时更新远程仓库的相应分支
2、冲突如何出现
a) 我在本地修改并提交代码了
b)另外个用户也在本地修改并提交代码到远程仓库中了
c)我尝试git push提交代码时
d)我的代码将出现冲突
3、解决冲突
a)需要使用git pull将代码拉下来,修改冲突部分的代码,并提交
b)修改冲突内容。后将内容推送到远程仓库即可,我们不要之前到内容,需要【我接收到了冲突2222222 】推送到仓库
4、git reset 回到历史记录
git log //查询提交历史
git reset c990800e6c4e7c9a2655430d2a93bc1fdcbbf1af //此时已经回到过去,但是你还看不到,需要第三步
git checkout .gitignore //将之前的修改放弃,真正回退到指定的提交点,该方法适用于文件为add和commit的,如果操作了这两个动作,请用reset
2.不要乱动不懂的隐藏文件,可能会损坏你的系统。