20201124 GIT 的用法

GLT 的使用#

一:msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可,安装完成以后,电脑开始菜单里找到 “git”–》“git bash”,然后会弹出一个类似命令的窗口,说明 git 安装成功。
在这里插入图片描述
出现上面图片说明安装成功 ,还需最后一步设置,在命令行输入。
$ git config --global user.name “Your Name”$ git config --global user .email “email@example.com”

因为GIT 是分布试版本控制系统,所以,每个都必须表明自己的名字和 email 地址。 不必担心被冒充 因为冒充有办法可以查到。

二:注意 git config命令的 --global参数,用了这个参数,表示你这台机器上所有的git 仓库 都会使用这个配置 ,当然也可以对某个仓库指定不同的用户名和email 地址。

创建GLT的仓库
1.创建存放git的文档目录(新建一个文件夹)mkdir mycode
2.进入这个文件夹的目录 cd mycode
3.在这个文件夹下执行git init 命令,创建一个仓库
4.告诉git ,我们要跟踪哪些文件的修改,默认git只能跟踪文本类的文件修改,不包括图片、视频等。Git add * or 具体的某个文件git add 文件名
5.把我们的文件正式提交到仓库中去 git commit -m 备注的信息,最好备注下

小结:初始化一个 git 仓库,使用 git init 命名
添加文件到git 仓库,分两步:
1:使用命令 git add , 注意,可以反复多次使用,添加多个文件
2:使用命令 git ommit ,完成。

查看状态

git status 查看我们跟踪文件的状态,时刻掌握我们的仓库状态,暂存区内容,没有内容报错not to commit,working tree clean

git diff 查看具体哪儿被修改了,新增的内容又是哪些, 查看的工作区,在 add commit 之前修改的内容。注意:没有第一次提交到仓库中的文件,是不会被 查询到的。

如果我们修改了我们的文件,那么我们就需要继续的add commit 提交最新的修改。
注意:git commit -a 合并了add commit 两个操作,只不过它只适用于旧文件的修改,新文件依然要添加add commit 这样

如果出现被锁的情况,只需要删除.git 下面的index.lock 文件即可 rm .git/index.lock 具体原因不明

Git commit -a 后会出现 vim编辑器,这个编辑器的简单使用掌握下就完成。

要随时掌握工作区的状态,使用 git status 命令,
如果 git status 告诉你有文件被修改过,用 git diff可以查看修改的内容。

查看记录 log
因为在写代码 不停的修改 和提交 然后在修改 提交,我们需要会查看记录!
在git 中,用head 表示当前的版本,也就是最新的提交 ID 名(就是很长的那一串数字)上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
对的,我们所有的修改提交都有记录在这里,并且可以通过命令来还原原来的版本
git log 查看当前的操作记录
Git reset --hard 版本编号ID 或者是HEAD ^ 回到上一个版本中去
当你从新版本回到老版本的时候,我们的新版本自然就消失了,所以,如果你想回复到新版本的状态,你可以使用
git reflog 查看 历史提交记录;以及穿越记录
git reset --hard 版本编号ID 回到新版本中去。

总结: head 指向的版本 就是 当前版本 ,因此 git 允许 我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id
穿梭前,git log 查看 当前版本提交记录
要重返回未来, 用 git reflog 查看命令历史 以便确定要回来未来的 那个版本。也就是说
现在有3个版本
版本号:333
版本号:222
版本号:111
我现在用git reset —hard 222 退回到222版本,
git log 后 就看不到333版本了
必须要用git relog才能看到222之前的333版本号
然后在通过git reset —hard 333 恢复到333

工作理念模型图

撤销修改
1.当你只是在源文件中修改了,而并没有add到暂存区的情况
2.当你不仅在源文件中修改了,并且还add了到了暂存区,索性的是你并没有commit 的时候
3.当你已经commit 提交到仓库的时候
下面,分别尝试着解决这三种情况
it checkout – 修改的文件名 撤销在当前版本add 前所有编写的代码
1.git reset HEAD readme.txt (文件名) 把暂存区的修改回退到工作区,也就是退回add之前的状态,最后再次git checkout readme.txt 结束
感觉就像是从暂存区退回到工作区,然后在撤销工作区所编写的代码
2.如果你已经commit 了,就直接用版本回溯到之前的版本就行
感觉reset命令就是为了在不同的仓库版本中切换
所以,这就是一级一级的退。

删除文件
1:尽量用 git rm 文件名删除 (暂存区中删除),然后 git commit 提交 到版本库 如果误删的情况下,也就是说你只是在工作区误删了文件,可以用 git checkout – 文件名恢复(从暂存区恢复)
第一步 : 在需要git 管理的文件夹下打开git base here
第二步:在git中进行项目管理的初始化 git init
第三步:在git中创建自己的项目文件
第四步:通过git add * 将所8有的项目文件添加进去临时区域内
第五步:通过git commit -m 操作说明 将临时区域内的项目推送到本地的仓库上去
第六步:对项目进行修改之后,可以先看看修改了哪些东西,git diff
第七步:确认完修改之后,可以通过git commit -a -m 操作说明 来进行上传了.
第八步:如果需要切换版本,只需要通过git reflog 查看下自己的操作历史,然后通过git reset --hard 版本号 就可以自由的切换不同的状态了。
第九步: 如需删除文件,使用git rm 文件名 来进行删除,然后通过git commit -a -m 提交
第十步:如果发生在本地误删的情况,可以直接使用git checkout 把临时区域的内容拉到本地

总结:以上的知识只是个人在用的时候本地代码的一个管理而已,并不涉及远程多人共同协作,如果你只是在本地管理代码的话,上面的命令足够你使用了,因为毕竟你知道了如何让自己的代码库添加、删除、和回溯。代码的每一次修改也都会做记录,你可以随时恢复最新的版本和退回老的版本,并且比较每次代码的不同之处,找到原因。

创建自己的ssh
创建密钥
创建自己的ssh密钥,用于跟远程的服务器进行通信,它毕竟得知道这个是你亲自推送的代码才行。
查看密钥
cd ~/.ssh 进入到.ssh文件中0
ls 查看.ssh文件夹下有哪些文件
cat id_rsa 查看id_rsa文件中内容
密钥
将密钥提贴 贴到 git hub 的 远程仓库上。
放密钥的位置
仓库和 远程的 github 上的仓库链接起来
下一步,我们开始推送我们本地仓库上的内容
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
git push -u origin master
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
上面是从本地上传到远程库上去
如果想要从远程库中克隆一份,那么就使用git clone git 地址就可以了
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
说白了,克隆和推送都是为了创建本地和远程的一个连接,只要第一步连接好了,我们就可以进行下一步的操作了

分支管理
如果就一个人管理代码的情况下,分支是没有必要的, 它主要体现在多人协同的情况下
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
创建分支
在这里插入图片描述
在这里插入图片描述
实际情况的考虑:

远程分支和本地分支

两条分支最好是一一对应的,master分支和dev分支在本地和远程都有两条

创建分支确实挺容易的,也不复杂,这里就不考虑创建分支的成本性了。你可以理解为创建分支就是又创建一个工作区-暂存区-仓库这样的仓库2,现在你就拥有了仓库1,仓库2 了

目前感觉分支的操作都是在本地操作的,也就是针对本地分支的合并啊,在本地合并之后,再往同名的远程分支中push,那远程分支怎么完成合并呢?

在这里插入图片描述
一般我们git clone下网站源码的时候,默认情况下是主分支是有的,但其余的分支是没有的,这时候我们就需要在本地创建新的分支,这些分支对应着远程中的分支,然后将分支中的代码pull到本地去,比如远程的dev 分支要这么操作

git clone SSH地址 克隆整个项目(默认得到的就是主分支,其他分支并没有)
git checkout -b dev 在本地创建分支
git pull origin dev 从远程的DEV分支拉到本地的dev分支
git add …
Git commit …
Git push origin dev 修改完毕后传递到远程的dev分支上去

假设远程公共仓库,有一个master和一个dev分支,进行多人协作开发时候(每个人的公钥必须加入到远程账号下,否则无法push), 每个人都应该clone一份到本地。 但是clone的只是master,如果远程的master和dev一样,没关系;如果不一致,则需要clone出dev分支 git checkout -b dev origin/dev 之后每个人在本地的dev分支上独自开发(最好不要在master上开发), 开发完成之后push到远程dev git push origin dev。 之后审核人再确定是否合并dev到master。
在进行任何的push 操作之前,一定要先 pull 一下远程的分支代码,毕竟这个分支代码是被很多人修改的,你只有最新的版本才能和自己的修改合并才行。

一起努力学习进步 加油 少年————鱼皮怪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值