GitHub学习笔记(二)
分支
在本地库初始化完成之后,Git会默认创建一个主分支----master
使用git branch -v可以查看本地库的分支
git branch -v //查看分支
分支的基本操作
-
创建分支
git branch [分支名] //创建分支branName
-
切换分支
git checkout [分支名] //切换当前分支
-
合并分支
如果你在一个分支对文件进行了修改,并将修改提交到了本地库,例如:
git checkout bran_test(分支名) vim 1.txt(对1.txt进行修改) git commit -a git branch -v
命令运行结果如下:
由上图可知,分支bran_test的版本已经高于主分支master了,如果需要将bran_test分支上的修改应用到分支master上,就需要将两个分支进行合并,具体步骤如下:
-
切换到接受修改的分支(master)
-
执行merge命令git merge [原分支名]
执行结果如下:
-
Hash算法
Hash算法一般翻译为散列,音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出
- Hash算法的特点
- 输入长度不同,输出长度也相同
- 输入数据不同,输出结构就不同
- 输入相同,输出结果就相同
- 不可逆
Git底层使用的是SHA-1算法
在GitHub上创建远程库
进入GitHub官网,登录之后,可以使用左侧New图标创建远程库,可以点击右侧"+",在弹出的选项中选择”New repository“创建新的远程库
- 在本地创建远程库地址的别名
在创建远程库之后,点击远程库即可获取远程库的地址,但是每次将远程库地址在命令行输入过于麻烦,因此需要给远程库地址起别名,方便输入
使用remote命令即可为远程库地址添加别名
git remote add [别名] [远程库地址] //为远程库地址添加别名
git remote -v //查看所有远程库的别名
推送
将本地库中的分支推送到远程库中
git push [远程库地址/远程库别名] [分支名]
这一步将会提示输入GitHub账号密码
克隆
使用clone可以复制他人的远程库到本地
git clone [远程库地址]
clone之后,即可在在本地打开远程库
不仅如此,这个远程库中甚至还包括了远程地址别名
邀请团队成员
进入远程库,选择setting–>Manage access–>Invite a collaborator–>填写你想要邀请的人的GitHub用户名/email–>Add username/email to 远程库
待邀请方同意之后即可获得修改远程库内容的权限
团队开发冲突
如果在团队开发中,发生了文件冲突,同样需要将冲突文件中的特殊冲突标志符号删除,并将文件修改为需要的内容,再次提高即可
如果团队成员不是基于GitHub远程库的最新版进行的修改,不能推送,必须进行push
SSH免密登录
https方式访问GitHub时需要输入密码,较为麻烦,使用SSH方式进行免密登录可以解决此问题,但同时也有一定的局限性:SSH免密服务只能对一个账号进行操作
具体操作步骤如下:
cd ~ //进入用户的~目录
rm -rvf .ssh //删除.ssh目录
ssh-keygen -t rsa -C 1835833302@qq.com //生成SSH秘钥 —C(大写)
//提示确认信息直接输入回车即可(使用其默认值)
之后Git将在.ssh目录下生成两个文件:id_rsa、id_rsa.pub
之后使用cat id_rsa.pub,查看该文件中的内容,将其复制
打开GitHub,点击右上角"+"并进入setting–>SSH and GPG keys–>New SSH key,输入标题之后将文本信息粘贴即可
之后将Git工作目录切换到本地库目录,使用git remote add [别名] [ssh连接]创建别名,最后将项目提交到远程库即可
注意:输入命令之后,系统将提示如下内容,请输入“yes”,而不是直接回车
The authenticity of host 'github.com (192.30.253.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
否则将会出现以下报错信息:
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.