Git使用

Git入门

Git,分布式管理的方式托管代码,设么作用、优点就不说了,知道git的自然也知道其好处了。

Git有很多种可视化界面(GUI界面)工具。但是通过命令的方式,速度、逼格都会高很多。

我现在用的版本是:Git-2.14.2.2-64-bit.exe。百度下载安装好。

安装好之后,在你需要进行命令操作的文件夹中右键选择Git Bash Here,(当然你也可以在其他地方打开,再一层一层目录进去到你需要操作的目录)。

出现如何所示界面,就可以在这里输入命令了。
在这里插入图片描述

只要没有改变当前路径(上图黄色的代码)所有操作都是在当前目录下操作的。

先说一些实用的 Linux 命令

pwd 查看当前目录
在这里插入图片描述
touch a.txt 创建文件。可创建其他类型文件

mkdir abc 新建一个abc目录(abc文件夹)

ls 查看当前目录下的文件列表 。
在这里插入图片描述

此时目录下有 a.txt 和 b.txt两个文件,abc一个文件夹。都是我刚刚新建的。

cd + 路径 去到某个路径, …/ 为返回上一层目录

vim fliename 进入编辑文件 回车之后,进入文档编辑模式,按一下 i 键,insert的意思,插入操作,才能进行编辑,否则一闪一闪的。

退出编辑模式,回到命令行 两种方法:1.Esc + shift +冒号 + q 仅退出不保存 2.Esc + shift +冒号 + wq 退出并保存

接下来说一下Git的本地操作,只是本地的操作,还没远程链接仓库。

本地操作

1.初始化仓库:Git init

​ 上面的一些操作只是Linux的操作,现在才是真正的git的操作,首先就要初始化仓库, git init初始化仓库,此时当前文件夹就会多出一个.git的隐藏文件夹,如何没有看到,路径对的前提前下,在文件头顶的查看把隐藏的项目勾选一下就可以了(win10 是这样子,win 7不记得了,百度咯),此时的.git就是你的本地仓库了。

2.自报家门

这一步很重要,它作为一个签名,决定了你的所有 commit 是否记录到你个人账号上的。签名设置不对,意味着你的贡献值是没有的。有些是在安装的时候就配置好的。

如何设置?Git config -l 可查看配置信息,在倒数第8行左右,会看到你的user.email user.name
在这里插入图片描述

可以通过命令修改。

git config --global user.email “在此输入你的邮箱” 注意:此邮箱作为你commit 操作的签名,务必要和github绑定的邮箱一致,

git config --global user.name “在此输入你的名字” 名字是不作为签名的,随意填写。

3.提交的相关操作

Git 仓库分为3个区域,工作区、暂存区、版本库。可以理解为我们本地的目录为工作区,仓库(.git)中有一个暂存区和一个版本库。

首先我们需要把文件提交到暂存区:git add 命令

  • 提交单个文件 git add filename 多文件时效率低

  • 批量添加 Git add .或者 Git add --all 这种方式会把所有仓库没有的,或者改动过的文件都会提交到缓存区。

  • 忽略某些文件,某些文件不想提交的方法。新建一个 .gitignore 这个只能通过命令的方式创建,直接鼠标右键新建文件不行的。最后在该文件中写入需要忽略的文件名即可。例如

    • .idea //忽略.idea文件夹及文件夹下文件
    • *.iml //忽略以.iml结尾的文件
    • ?:代表任意的一个字符
    • *:代表任意数目的字符
    • {!ab}:必须不是此类型
    • {ab,bb,cx}:代表ab,bb,cx中任一类型即可
    • [abc]:代表a,b,c中任一字符即可
    • [ ^abc]:代表必须不是a,b,c中任一字符
  • 在未add 之前,可以通过命令git diff filename来查看当前文件的版本与仓库中的最新版本的差别。

提交到本地仓库 Git commit -m

Git commit -m “在此写日志” 如果不写 -m 和日志 会默认跳到日志编辑模式,可以认为这是一种出错,所以好习惯就是写日志。

提交的是缓存区的文件。

  • 其中git status可以查看当前工作区,缓存区的文件状态,包括有修改的文件 ,待add 待commit等,都会有提示信息的。

版本回退

  • Git reset --hard HEAD^ 回退一个版本,两个版本可以写^^ 多个版本可以写成 ~n n为需要回到的版本数
  • Git reset --hard 版本号前六位哈希值 版本号可由Git log 查看版本日志得到。commit行既是
  • 删除文件 Git rm filename rm为remove的缩写,删除要慎用(删库跑路)

远程操作

用github网站托管项目

github账号是必须的了,然后在github上新建一个仓库,复制好克隆的路径
在这里插入图片描述

其中open in desktop 是在桌面GUI工具打开的,现在说的 是通过命令的方式,所以只需要拿到路径就好了

拿到路径,在命令行中输入:git clone 远程仓库地址就可以把整个仓库拉去下来。
在这里插入图片描述
推送项目到远程仓库 git push -v origin master

add 是添加到缓存区,commit是提交到本地仓库,push是推送到远程仓库。

创建分支

Git branch name 只是在本地创建了分支,还要推到远程,远程仓库上才会也新建一个分支,指令:git push origin 分支名

  • 查看本地分支,Git branch
  • 删除本地分支,Git branch -d 分支名
  • 查看远程分支 git branch -r
  • 切换分支 Git checkout name
  • 删除远程分支 git push origin --d BranchName

冲突与强推

冲突,多人开发一个项目,冲突应该不少见。并且冲突可以是master与branch之间,也可是branch 与 branch之间的。举个简单例子。

在master分支中有个空的test.TXT文件,同时开了A、B两个分支,A在test.txt 中添加了console.log("A editor") B 在test中添加了console.log("B editor"), A 、B都push到了各自的远程分支,此时项目整合,master需要合并A、B写的功能,命令为:git merge A此时master中的test.txt就有了A的内容,再操作git merge B 就会产生冲突,提示如下图:
在这里插入图片描述

百度翻译:冲突(内容):在test.txt中合并冲突,自动合并失败;修复冲突,然后提交结果。

此时就是常说的冲突,要是 不修改的情况强行推送,就是强推的意思,后果是在master中的test.txt中,A写的代码console.log("A editor") 没有了,被B的console.log("B editor")覆盖了,如果A写了很多代码,又没有其他的备份,那就很惨了,又要去版本回退找回代码了。

解决冲突的办法,只能手动解决,机器并不会判断谁的代码好坏,只能给出不同的地代码的地方,让操作者去选择只要A 或 B 或者是 AB的都要。可以采用指令:Git diff 冲突文件查看冲突信息,文件要是过大可以进入编辑模式查看对比,当然要是仓库在本地的也可以直接打开文件看。冲突信息示例:
在这里插入图片描述
在这里插入图片描述
其中====号为分隔线,HEAD的为合并前的内容,下面的为B分支的内容。

解决冲突的方法

  • 需要删除多出来的信息,只生成的那些。
  • 决定最后需要留下的内容,如果AB的都要就删除生成的注释即可,不需要的A是的就删除A,B同理
  • 最后在重新走一遍流程 Git add test.txt Git commit -m “日志” git push -v origin master即可。

避免冲突

每次push前,应先pull一下,尽量保持push前的版本是最新的。

暂时想到这么多,有再补充吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值