Git基础

Git

  • Workspace:开发者工作区

  • Index / Stage:暂存区/缓存区

  • Repository:仓库区(或本地仓库)

  • Remote:远程仓库

git --version 查看安装git的版本

Git使用前配置

在使用git前,需要告诉git你是谁,在向git仓库中提交时需要用到。

1.配置提交人姓名: git config --globa1 user.name 提交人姓名

2.配置提交人姓名: git config --global user.email 提交人邮箱

3.查看git配置信息: git config --list

注意
1.如果要对配置信息进行修改,重复上述命令即可。

2.配置只需要执行一次。

提交步骤

  1. git init 初始化git仓库
  2. git status 查看文件状态
  3. git add 文件列表追踪文件
  4. git commit -m 提交信息向仓库中提交代码
  5. git 1og 查看提交记录

撤销

  • 用暂存区中的文件覆盖工作目录中的文件: git checkout 文件
  • 将文件从暂存区中删除:git rm --cached 文件
  • 将git仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录: git rest --hard commitID

分支

为了便于理解,大家暂时可以认为分支就是当前工作目录中代码的一份副本。

使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。

分支细分

1.分支(master) :第-次向git仓库中提交更新记录时自动产生的一个分支。

2.开发分支(develop) : 作为开发的分支,基于master分支创建

3.功能分支(feature) :作为开发具体功能的分支,基于开发分支创建

功能分支的作用是开发一个独立的功能,当功能开发完成以后,再将功能分支中的代码合并到开发分支,这时功能分支就可以删除了。当开发分支中的功能累计到一定程度以后,再将开发分支中的代码合并到主分支。

功能分支->开发分支->主分支

分支命令

  • git branch 查看分支

  • git branch 分支名称 创建分支

  • git checkout 分支名称 切换分支

  • git merge 来源分支 合并分支

  • git branch -d 分支名称 删除分支(分支被合并后才允许删除) (-D 强制删除)


这里需要注意,在切换分支之前,当前分支上的工作一定要提交到git仓库中,要保持当前分支上的工作区是完全干净的状态,否则会出错

合并分支时,要先切换到主分支

删除分支

注意:如果要删除的分支,没有被合并,默认情况下,这个分支时不允许删除的,这是git程序对分支的保护机制,防止开发人员误删文件。如果一定要删除,可以使用git branch -D 分支名称 来删除分支

暂时保存更改

在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。

使用场景:分支临时切换

●存储临时改动: git stash

●恢复改动: git stash pop

多人协作开发流程

●A在自己的计算机中创建本地仓库

●A在github中创建远程仓库(start a project)

●A将本地仓库推送到远程仓库

●B克隆远程仓库到本地进行开发

●B将本地仓库中开发的内容推送到远程仓库

●A将远程仓库中的最新内容拉去到本地


本地仓库推送到Github远程仓库

git push 远程仓库地址 分支名称

在输入完推送远程仓库的命令后,会弹出验证权限的弹框

GitHub远程仓库地址别名

git remote add 仓库别名 别名所对应的仓库地址

用别名推送

git push 别名 分支名称

git push -u 别名 分支名称

加上-u之后git会记住仓库地址和分支名称,下次推送可直接用git push


总结:

  1. git push远程仓库地址分支名称
  2. git push远程仓库地址别名分支名称
  3. git push -u远程仓库地址别名分支名称
    -u记住推送地址及分支,下次推送只需要输入git push即可
  4. git remote add远程仓库地址别名远程仓库地址

以上为A的操作

GitHub远程仓库克隆到本地仓库

克隆远端数据仓库到本地: git clone 仓库地址

现在B还并不能向远程仓库推送代码,因为没有权限,需要A邀请B称为当前项目的开发者

需要复制邀请链接,然后将其发给B。B在登录github的情况下,访问链接,并接受邀请。

现在B可以向远程仓库推送

B在克隆的时候会将A添加的远程仓库地址的别名也克隆下来 ,所以可直接使用别名

拉取远程仓库中最新的版本

拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称

解决冲突

在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。冲突需要人为解决。

这个时候只有先向远程仓库推送的人,才能推送成功,后推送的人是推送不上去的,因为第一个人已经向远程仓库提交了版本,第二个人的本地仓库中并没有这个版本,导致远程仓库版本高于本地仓库版本,所以推送不上去。

解决冲突:第二个人需要先将第一个提交的版本拉取到本地仓库中,先把冲突解决掉,然后再向远程仓库中提交

跨团队协作

1.程序员C fork仓库

2.程序员C将仓库克隆在本地进行修改

3.程序员C将仓库推送到远程

4.程序员C发起pull request

5.原仓库作者审核

6.原仓库作者合并代码

ssh免登陆

到目前为止,我们对远程仓库的操作,一直都是采用的https协议的仓库地址。这种协议要实现身份验证,用户必须要提供用户名和密码,在正常的情况下,每一次向远程仓库推送内容都是需要进行身份验证的,都需要提供用户名和密码,只不过现在使用的是win10操作系统。在我们第一次输入完用户名和密码后,操作系统就帮我们记住,下一次再推送的时候,使用的就是操作系统记住的用户名和密码。如果使用的操作系统不具有这有的功能,那么每次推送的时候,就都需要输入用户名和密码。频繁的输入,是一件头疼的事情,github提供了另外一种仓库通讯协议,就是ssh协议

这种协议在实现身份验证时,是不需要使用用户名和密码的,它可以实现免登陆操作。在ssh中身份验证通过秘钥实现,秘钥是成对出现的,分为公钥和私钥。ssh通过验证公钥和私钥的配对情况,来决定验证是否通过。举个栗子:公钥相当于门锁,私钥相当于钥匙,如果钥匙能打开门锁,就说明是配对的,验证通过。公钥和私钥是开发者使用命令生成,实际上就是两个文件,公钥要将它放到github的账户中,私钥要保留在开发者的电脑中当开发者通过ssh协议,向远程仓库推送内容时,公钥和私钥会进行配对,如果配对成功,内容就会推送成功,如果配对失败,内容就会推送失败。

生成秘钥:、ssh-keygen
秘钥存储目录: C:Users用户.ssh
公钥名称: id. rsa.pub
私钥名称: id_ rsa

打开 id. rsa.pub文件,复制内容,打开github-->Settings-->SSH and GPG keys-->New SSH key 粘贴

在这个过程中,是没有输入用户名和密码的。是因为在github中存储了我的公钥,在我自己的电脑中,由保留了公钥对应的私钥,在推送的时候,会自动进行配对。配对成功,推送成功。

Git忽略清单

将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会忽略这些文件。

git忽略清单文件名称: .git

将工作目录中的文件全部添加到暂存区:git add .



为仓库添加详细的说明

在项目的根目录下创建一个readme.md文件,将它推送到远程仓库。这个文件的内容会自动显示在仓库文件列表的下方。

原文地址:https://www.cnblogs.com/wahaha-/p/14088328.html