Git的使用教程(2)

这一篇博文接着上一篇博文:Git的使用教程(1) 补充一些内容~

一、基础操作

这里需要先来配置一下Git的默认编辑器,在修改工程版本的注释和描述时需要用到 我的电脑是Windows系统,想要设置的编辑器是Notepad++ 在目录C:\Users\用户名打开.gitconfig文件,向之添加下面一句配置口令,将文件路径修改为自己电脑对应的程序安装路径即可

[core]
    editor = 'C:/Software/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin

还是先在D盘初始化一个仓库test,当前仓库为空

这里写图片描述

手动创建一个1.txt文件,将之添加到仓库中

git add 1.txt
git commit -m '第一个版本,添加了1.txt文件'

这里写图片描述

再手动创建一个2.txt,将之添加到仓库中

git add 2.txt
git commit -m '第二个版本,添加了2.txt文件'

这里写图片描述


之前说过可以用

git log

来查看所有版本信息,其实该命令也可以用来查看指定目录或者文件的日志 查看1.txt的日志信息

git log 1.txt

这里写图片描述

可以看到1.txt文件只保存有第一个版本时的日志信息,因为在第二个版本时它并没有改动

再来查看2.txt文件的日志信息

这里写图片描述

同理,2.txt文件则只有第二个版本时的信息


前边说过

git diff

命令可以查看文件的前后变化,准备来说,该命令是可以查看工作区、暂存区、最新提交之间的差别

向1.txt文件手动添加一行内容:111111111111,查看变化

这里写图片描述

因为此时1.txt文件还未提交到暂存区中,所以该命令查看的是工作区与最新提交之间状态的差别 “+”号表示的是添加的内容 “-”号表示的是删除的内容(这里并没有标示出来,因为只增添了内容)

先将1.txt文件添加到暂存区,再来查看变化

这里写图片描述

可以看到并没有提示文件差异,因为此时对比的是工作区与暂存区之间的差别,而此时文件内容是一样的

如果想要再查看工作区与最新提交之间差别,可以使用

git diff head

这里写图片描述

最新提交的内容为空,可以看到对比最新提交还是多出了一行内容

将1.txt文件提交到仓库,并查看版本信息

这里写图片描述

二、分支操作

master是git默认创建的分支,在进行并行开发的过程中,往往就需要创建多个分支,让多人同时进行开发 不同的分支拥有不同的代码状态,同时进行完全不同的作业,等作业完成后就可以将分支合并

先创建并切换到feature-A分支

git checkout -b feature-A

然后查看当前所有分支

git branch

这两条命令上篇博文也讲到了

这里写图片描述

可以使用以下命令切换回上一个分支,即master

git checkout -

这里写图片描述

再切换回feature-A分支 当前1.txt的内容应该只有一行,再增添一行内容,现在完整的内容应该是:

111111111111
222222222222

将1.txt文件提交到仓库

这里写图片描述

再切换回master分支,查看1.txt文件内容

git checkout master

cat 1.txt

这里写图片描述

可以看到feature-A分支下的修改对master下的文件并没有影响

再向1.txt文件添加一行内容,此时应为:

111111111111
333333333333

再提交文件

这里写图片描述

尝试在master分支下合并两个分支的内容

git merge feature-A

这里写图片描述

可以看到提示说:自动合并失败,请解决冲突后再提交 因为在两个分支下,1.txt文件的第二行都有内容,且内容不同,git不知道该如何合并 而且,此时打开1.txt文件,可以看到内容变成了

111111111111
<<<<<<< HEAD
333333333333
=======
222222222222
>>>>>>> feature-A

提示了冲突的分支和冲突内容,需要我们手动修改该文件内容,然后再提交 将文件内容修改为

111111111111
333333333333
222222222222

向仓库提交文件

这里写图片描述

有时,采用图表形式输出提交日志看起来可能会比较直观 feature-A分支内容的改变以及合并操作也一目了然

git log --graph

这里写图片描述

三、修改操作

前边的版本号也比较乱了,这里在Git文件夹下再来重新建立一个新的仓库 然后手动建立一个1.txt文件,文本内容为,将之添加到仓库中

init object git

这里写图片描述

此时,提交时的描述内容是“第一个版本,添加了1.txt文件”,如果想要修改它,可以使用如下命令

git commit --amend

此时,Notepad++就会被启动,这样就可以来修改其描述内容了,以“#”符号注释的内容可以不用理会

这里写图片描述

将描述内容修改为

这里写图片描述

修改完成后关闭编辑器,确认保存即可 再来查询版本信息,可以看到描述内容已经修改了

这里写图片描述

其实,在提交文件到仓库时,如果想要提交多行描述文本,可以不用加-m参数,即直接用

git commit

这样也可以启动Notepad++,就可以输入多行文本了


此时,再将1.txt文件中的“git”单词删去,重新提交

这里写图片描述

再将“object”单词删去,重新提交

这里写图片描述

此时的版本号情况

这里写图片描述

这里只是删去了一个单词,就又多了一个版本号,这里来尝试将最新两个版本号合并

git rebase -i head~2

此时,Notepad++会自动启动

这里写图片描述

对比上图查询到的版本信息已经描述内容,可以知道前两行内容的意义

这里将73b0cbc的历史记录压缩到e8d6634中,即删除最新一条记录,将之合并到第二条,将前两行文本修改为

pick e8d6634 删去了单词git
fixup 73b0cbc 删去了单词object

退出保存 再来查询当前版本信息

这里写图片描述

可以看到版本变成了两个,且最新一个版本号与之前两个均不一样,这个是合并后得来的

可此时最新版本号的描述内容也不太正确,因为被删除了的单词有两个,这里再来修改下

git commit --amend

此时,Notepad++就会启动,将描述内容修改为

删去了单词git和object

退出保存 再来查询版本号信息,已经被正确改动了

这里写图片描述

四、远程仓库操作

在GitHub上新建一个仓库,命名为GitTest,具体步骤可以参考我上一篇博文,注意不要生成README文件

这里写图片描述

在GitHub上创建的仓库路径为:https://github.com/initobject/GitTest.git

这里写图片描述

现在再来将之设置成本地仓库的远程仓库

git remote add origin https://github.com/initobject/GitTest.git

Git会自动将远程仓库的名称设置为origin

然后将本地仓库当前分支下的所有内容推送到远程仓库

git push -u origin master

这里写图片描述

如此执行后,当前分支的内容就会被推送到远程仓库origin的master分支 -u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的上游(upstream)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦

刷新GitHub网页,可以看到代码已经上传到了仓库了 比如我的GitHub仓库:https://github.com/initobject/GitTest

这里写图片描述

此外,也可以为远程仓库设置分支 现在本地创建一个feature-A分支

git checkout -b feature-A

再将之push远程仓库并保持分支名称相同

git push -u origin feature-A

这里写图片描述

刷新GitHub网页,可以看到多了一个新分支,而文本内容一样

这里写图片描述


现在重新创建一个新仓库Git_New,用来从GitHub获取之前提交的内容

这里写图片描述

远程仓库的地址可以从这里获取

这里写图片描述

git clone https://github.com/initobject/GitTest.git

这里写图片描述

可以看到Git_New文件夹下也多了一个新目录GitTest,即是我们之前上传的

可以将所有文件提交到仓库中

git add .  (符号“.”表示增加工作区所有文件到暂存区)
git commit -m '增添了GitTest文件夹'

这里写图片描述

因为GitTest仓库是从远程仓库clone而来的,此时,GitTest仓库的master分支是与GitHub远程仓库相的master分支在内容上是完全相同的

进入GitTest文件夹

cd GitTest

之前,我为GitTest仓库设置了feature-A分支,这里再来试着将该分支获取至本地仓库,

git checkout -b feature-A origin/feature-A
// feature-A 表示本地仓库要新建的分支名
// origin/feature-A 代表以origin为名的远程仓库的feature-A分支

这里写图片描述

再来查看当前分支的相关信息

git branch -a

// -a 加上该参数可以同时显示本地仓库与远程仓库的分支信息

这里写图片描述

切换回master分支,为1.txt文件增添一个单词:object 现在的内容应该是

init object

再查看当前状态

这里写图片描述

提示1.txt文件未提交 提交该文件,并推送到远程仓库

git push

推送前需要先输入GitHub账户名与密码

这里写图片描述

刷新GitHub网页,可以看到仓库的描述文本都被改变了

这里写图片描述


现在再回到一开始使用的Git仓库,即步骤三使用的仓库

重新打开该仓库的方法是进入Git文件夹,鼠标右键点击Git Bash Here即可

因此在之前我们在本地向远程仓库的master分支推送了新内容,本地的仓库是旧的的,这里再来获取远程仓库的最新内容

git pull origin

这里写图片描述

查看版本变化,可以看到最新版本号就是之前推送的

这里写图片描述

这样,本地仓库的内容也得到了更新 这种方式方便于进行多人合作开发,一人向远程仓库推送开发内容,另一人获取到本地,修改完成后再提交到远程仓库,也可以在不同分支下分开开发,如此循环反复直至软件培育完成

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王小雷

创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作

实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一...

2287
来自专栏数据库

mysql 安装过程及建议

我选择的是 mysql 命令行版,之前安装过界面版,感觉太麻烦,还是命令行简洁明了。 下面说说我在 windows 下的安装过程、测试及个人建议:(图片若不清晰...

20410
来自专栏主机笔记

Linux一键安装Transmission电影下载到服务器

Transmission是一种BitTorrent客户端,可以装在服务器上下载pt站电影资源,什么时候看再拉回本地,非常方便。 此一键脚本适用于CentOS6,...

4287
来自专栏程序员互动联盟

玩转linux只需要几个命令

linux一说都是搞开发玩的,敲敲键盘就能完成所有的工作。其实你也可以这么玩,玩游戏的除外哦。 那我们就来侃侃如何玩,linux是命令的天下,高级的命令那是相...

3439
来自专栏ppjun专栏

Android十八章:5分钟看完Git常用命令

打开C:\Users\Rabbit.ssh 找到id_rsa.pub 复制里面的https://github.com/settings/keys 点击 ne...

532
来自专栏微服务生态

Git常用命令速查手册

653
来自专栏青玉伏案

Git知识总览(一) 从 git clone 和 git status 谈起

本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://...

18410
来自专栏linux系统运维

LNMP架构介绍,MySQL安装, PHP安装,Nginx介绍

1606
来自专栏开发 & 算法杂谈

静态数据竞争检测工具之LOCKSMITH-安装和使用

静态数据竞争检测工具都是基于中间语言开发的,在安装之前必须要先安装Ocaml和CIL

812
来自专栏梧雨北辰的开发录

Git命令语法汇总

本文是在学习廖雪峰Git教程后对常用Git命令的使用总结,仅供在使用Git时方便查找。 ? 一、Git简介 Git是当前最为流行的分布式版本控制系统,尤其是...

2937

扫码关注云+社区