Git的配置与使用(二)

上篇博客介绍到git的安装:https://blog.csdn.net/duan196_118/article/details/104697528,接着要了解和使用git,体会git的强大之处。

一. git的工作流程:

      1. 从远程仓库中克隆 Git 资源作为本地仓库。

      2. 从本地仓库中checkout代码然后进行代码修改

      3.在提交前先将代码提交到暂存区。

      4. 提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。

      5. 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。

二 . git的使用

     什么是仓库呢?仓库又名版本库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。

2.1 在安装好之后首次使用需要先进行全局的配置

      桌面空白处右击,点击"Git Bash Here"打开git命令行窗口

      a> 配置用户名:git config --global user.name  "用户名" (github上注册的用户名)

      b> 配置用户邮箱:git config --global user.email  "邮箱" (GitHub上注册时的邮箱)

配置个人的用户名称和电子邮件地址,这是在你每次提交代码时的说明,知道谁提交了,联系了谁

2.2 创建仓库

首先,选择一个合适的地方,创建一个空目录(D:\dsxStudy\Gits\repository),也可以通过命令行创建仓库。进入创建好的仓库,

Git仓库初始化(让Git知道,它需要管理这个目录)

执行命令  git init  

表现:执行之后会在项目目录下创建".git"的隐藏目录,这个目录是Git所创建的,不能删除,也不能随意更改其中的内容。

2.3 Git常用指令操作

      添加到缓存区:git add 文件名

      说明: git add指令,可以添加一个文件,也可以同时添加多个文件。

      语法1:git add 文件名

      语法2:git add 文件名1 文件名2 文件名3...(一次添加多个文件,中间用空格隔开)

      语法3:git add .  【添加当前目录到缓冲区中,不要忘记那个点】

     提交至版本库:git commit -m "注释内容"

2.4 Git的时光穿梭机---版本回退

版本回退分为两步骤进行操作:

 1. 查看版本,确定需要回退到的时刻点

     指令: 

             git log

             或

             git log --pretty=oneline

 2. 回退操作

    指令:git reset --hard 提交编号

如:乘坐时光机回到创建好的第一个文件a.txt的时候。

在之前的提交过后,a.txt又进行了修改,而且新增了b.txt。

执行完毕,可以看到仓库中的文件及文件内容回到了创建好的第一个文件a.txt的时候。

如果又想回到未来

小结:

a.想要回到过去,必须先得到commit id,然后通过 git reset -hard进行回退。

b.想要回到未来,需要使用git reflog 进行历史操作查看,得到最新的commit id。

c.在写回退指令的时候commit id可以不用写全,git自动识别,但是不能写太少,至少写前4位字符。

git的其它命令:

查看仓库当前状态: git status

查看git配置信息:git config –list

初始化一个仓库:git init

把文件加入仓库:git add 文件名

把文件提交到仓库:git commit -m "说明文字"(注意一定要加说明文字还有就是先添加后提交)

删除文件:git rm 文件名.后缀名

查询

# 查看工作区文件修改状态
$ git status               
​
# 查看工作区文件修改具体内容   
$ git diff [file]
​
# 查看暂存区文件修改内容
$ git diff --cached [file] 
​
# 查看版本库修改记录
$ git log                  
​
# 查看某人提交记录
$ git log --author=someone 
​
# 查看某个文件的历史具体修改内容
$ git log -p [file]        
​
# 查看某次提交具体修改内容
$ git show [commit]

分支

# 列出所有本地分支
$ git branch
​
# 列出所有本地分支和远程分支
$ git branch -a
​
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
​
# 新建一个分支,并切换到该分支
$ git checkout -b [new_branch] [remote-branch]
​
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
​
# 合并指定分支到当前分支
$ git merge [branch]
​
# 选择一个 commit,合并进当前分支
$ git cherry-pick [commit]
​
# 删除本地分支,-D 参数强制删除分支
$ git branch -d [branch-name]
​
# 删除远程分支
$ git push [remote] :[remote-branch]

2.5 远程仓库

远程操作以GitHub为例,创建一个仓库,注意:仓库名要唯一。仓库相当于目录。

首先要在GitHub上创建一个账号,这个就不演示了。然后在GitHub上创建一个仓库。

      Github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。如果使用ssh方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到githib的服务器上。这两种方式在实际开发中都有应用。

http协议

1. 创建空目录,名称为shop。

2. 使用clone指令克隆线上仓库到本地

   语法:git clone 线上仓库地址

3. 在仓库上做对应的操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)

提交到线上仓库的指令:git push

执行后虽然弹出输入username、password的页面,单输入后仍然报错。

首次往线上仓库shop提交内容的 时候出现了403的致命错误,原因是 :不是任何人都可以往线上仓库提交内容,必须授权。需要去更改对应文件的配置;
步骤如下:
1. 在你仓库当前目录下打开隐藏的.git文件夹,打开config文件,建议用代码编辑器打开

2.在下图对应位置输入你的GitHub用户名和密码,保存,回到控制台再次执行git push即可;

此时再去刷新GitHub对应的项目页面,就会看到刚刚新增的文件了;

拉取远程仓库的文件

 比如我在GitHub上新建了个index.html的文件,并写了点内容,最后提交;

然后去拉取这个index.html文件,指令为:git pull

这个时候再去看本地对应的文件夹,就会看到拉取到的文件了;

每天工作的第一件事就是先git pull拉取线上最新的版本,下班前要做的事是git push,将本地代码提交到线上仓库。

ssh协议

什么是ssh?

       SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题

基于密匙的安全验证

      使用ssh协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

ssh密钥生成

在windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash

   git bash 执行命令,声明公钥和私钥

   命令: ssh-keygen -t rsa

执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:

 ​​​

ssh密钥配置

密钥生成后需要在github上配置密钥本地才可以顺利访问。

登录github注册或登录账号,打开“settings”的“SSH Keys”页面,然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key

在key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。 

创建成功

 同步到远程仓库

     同步到远程仓库可以使用git bash,当然也可以借助其它工具如tortoiseGit。

本人使用git bash

在仓库所在的目录(D:\dsxStudy\Gits\repository)点击右键选择“Git Bash Here”,启动git bash程序。把想要同步的文件添加到本地仓库。并查看下文件是否被添加入本地仓库,使用命令:git status

复制项目的ssh地址

此时在本地使用命令:git remote add origin [email protected]:flaky-clouds/shop.git

把本地git仓库和github远程仓库关联了起来,接下来就能上传本地文件了.

接着将本地项目上传到github远程仓库

     1. 如果远程仓库是空的且为第一次上传,使用命令:git push -u origin master,进行上传操作完成同步。如果不是第一次则使用命令:git push origin master , -u 仅在第一次上传时加上,以后都不需要了。将修改后的项目上传到github远程仓库。

     2. 如果你的远程仓库不是空的(初始化了一个readme.md文件),而本地仓库没有则必须要先把远程文件同步到本地,使用命令:git pull --rebase origin master,然后再上传(或者直接将远程仓库克隆下来,往里面放文件也行,使用命令:git clone [email protected]:virsing/Leetcode.git),在使用推送命令:git push origin master .完成同步。结果如下

至此就把本地文件同步到github远程仓库了.

注意:

      如果你在创建github仓库时,初始化了一个readme.md文件,远程仓库不是空的,则需要先将远程仓库与本地仓库同步,使用命令:git pull --rebase origin master.将远程文件拉回本地仓库,然后再执行:git push origin master,就能成功了.

 总结:

      其实只需要进行下面几步就能把本地项目上传到Github

     1、在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;

     2、把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;

     3、再通过git commit -m "注释内容"把项目提交到仓库;

    4、在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin [email protected]:flaky-clouds/shop.git将本地仓库和远程仓库进行关联;

    5、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上;(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。

     这两种方式只是遵守的协议不同,实质操作几乎一样。ssh进行公钥配置后,后继不需要再进行配置,而http协议需要进行修改config配置文件,而且需要输入用户名密码:用户名就是登陆github的用户名,密码是github的密码。

如有不足,欢迎留言指正。望不吝赐教。。。

发布了171 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/104698984