栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Mac下的Git安装及简单操作(莫烦教程学习心得)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mac下的Git安装及简单操作(莫烦教程学习心得)

友情提示:由于本人是Mac,所以下面的安装以及具体操作都是按照Mac系统来进行了,win系统的朋友们可以另找资源了。此外特别感谢莫烦的教程,网站见:

莫烦Python零基础入门机器学习不是一件困难的事. 机器学习或者深度学习本来可以很简单, 很多时候我们不必要花特别多的经历在复杂的数学上.数学只是一种达成目的的工具, 很多时候我们只要知道这个工具怎么用就好了, 后面的原理多多少少的有些了解就能非常顺利地使用这样工具.https://mofanpy.com

一、git的安装

直接点击进入官网根据系统的版本选择合适的git进行安装,安装过程并不复杂,基本上是傻瓜式安装。Git - Downloadshttps://git-scm.com/download/

二、安装之后需要进行简单的操作

1、首先创建一个文件夹,即版本管理仓库(gitTUT),文件夹是用于收集需要的代码。打开terminal终端(此终端需为linux或unix系统下的终端,例本人为Mac,则为bash终端),进行一些配置:

cd ~/Desktop
cd gitTUT
git config --global user.name "XXX"
git config --global user.email "XXXXXXX@qq.com"

2、对文件夹进行初始化,输入以下代码:

git init

此时这个init文件在Mac中属于隐藏文件(win系统中可以直接打开文件夹查看) ,如果Mac系统也想查看,输入:

git ls -a

2、打开git文件,添加一个命名为1的python文件。

open .git  #打开git初始文件
touch 1.py #创建文件

此时就创建好了1.py文件,可以直接在文件夹中查看(此处的添加文件也可以直接图形式操作) 

3、查看文件1.py的状态

git status

可以看到此时文件状态为untracked,一般情况下untracked即为文件还未add进git仓库,git也将无法识别,add之后文件状态有unmodified和modified两种情况,这两种情况也被统称为unstage,当commit之后,文件就变成了stage状态。

4、将文件添加进入git仓库,此时状态变为unstage。

git add 1.py
git status #查看状态

5、查看工作日志确定文件修改的进程。

git log

这一部分显示文件还没有commit过,所以是没有git的日志。这也提醒我们git的日志是关于commit  操作之后的内容,所以每一步完成都要commit提交一下。

6、进行commit操作

git commit -m "create 1"

图片里显示的是create 1.py,这里没有关系,因为这是方便我们去分每一次修改版本的名称,所以如何命名都没有问题。

此时我们再查看一下日志会发现日志中有了记录


到目前为止一套基础的git操作就已经结束了,我们可以看到从untracked - unstaged - stage状态的过程。下面假设我们要在1.py的空文件中添加代码之后如何操作呢?

在1.py文件中我们先输入以下代码,再进行保存。现在再查询1.py的状态,我们可以看到显示为modified,代表已被修改过。

a = 1

 修改之后的代码需要保存之后重新add进入git 仓库变为stage状态,然后commit提交信息:

git add 1.py
git commit -m "change 1"

注意:上面两句代码其实也可以简化成,但前提是1.py已在之前放入git仓库(即之前有过add操作):

git commit -am "change 1"

 之后我们再查看git日志,可以发现发现有两条记录change1和create1:

 到此修改就已完成✅


那么如何看之前的所有修改记录呢?

首先再次对python文件进行修改:

a = 2 
b = 1

此时输入命令,查看文件的状态:

git status -s  #和之前只输入一个status相比,这个表示的是缩写

这里可以看到我们已经对文件进行了修改后。查看前后修改的内容的不同(这里的前后指的是upstage状态和commit的对比):

git diff #diff表示的是upstage状态和commit的对比

 

 此时修改后我们不要忘记对文件进行add操作吧,使其变为stage状态。

git add . #表示对所有文件add
git add 1.py #表示只对1.py文件进行add,因为我们现在只有1.py这一个文件,所以两个命令行任选其一即可

如果我们再查询当前文件修改后的不同,就发现并没有任何不同,因为此时文件已经进入了stage状态,并未upstage状态。

所以这时我们需要用以下命令行来看此时stage状态和上一个commit状态的不同

git diff --cached

 还有一个方法可以同时看stage状态和unstage状态,由于刚刚修改后又变成了stage状态,所以我们现在要对代码再次进行修改:

a = 2
b = 1
c = b

此时输入查询状态的命令行,我们可以得到以下结果:

第一个绿色M为stage状体啊,第二个红色M为upstage状态(即加入c=b后的状态),要查看这些状态的修改需要输入以下命令行:

git diff HEAD

可以看出前面三个为stage的改变,后面一个为unstage的改变。如果输入--cached就仅仅会显示stage的变化,如果只输入diff会显示unstage的状态:

 此时修改全部完成,切勿忘记进行add和commit操作

git add .
git commit -m "change 2"


现在已经学会了如何修改、保存提交状态和查看前后区别,那如果想回到之前版本的代码该如何操作呢?

下面我们首先回顾一下之前产生的几条记录,查看记录直接输入查看日志的命令行:

git log --oneline #这个可以以行的形式简明输出每一条记录,方便查看

A.下面复制粘贴一个1.py的文件并命名为2.py,如果说之前在做change2的时候,忘记了加入部分内容(文件2.py),想要在补上这个文件的同时不改变记录状态则要输入以下命令行:

git add 2.py #将新建的python2文件添加进入仓库
git commit --amend --no-edit #在保持change2状态的同时对python2不做任何改变,并commit

但此时要注意change2 的id发生了改变。

B.那如果修改完成add之后,我后悔add了,还想继续修改,如何操作呢?

下面我先对1.py进行修改,并将其add,查看他的状态是已经stage:

a = 2
b = 1
c = b
d = 3

此时python1文件已经进入了stage状态,我们想让他重新回到modified,则需要输入以下命令行:

git reset 1.py

 除此之外还有一种方法可以回到unstage状态,且这个方式更好用。首先先看一下此时的工作日志,让python1文件进入stage状态(即add操作)

在工作日志中可以看到每一个commit记录的代码,Head为指针,我们只需要让指针指向谁,状态就回到哪个部分,例如:

git reset --hard HEAD #HEAD~1表示前一个,HEAD~N表示前N个

此时表示在change2;如果回到change1,则为:

我们看到记录也发生了改变,只有两条记录了,那我们如果想看到全部的记录,则需要输入:

git reflog

这样也可以到change2的commit了。


到目前为止都是对commit进行的操作,那如果我想回到之前的文件状态呢?

首先要熟悉每一个commit的ID,查看log即可明白:

 下一步就是如何用命令行实现回到哪一个版本的文件,比如要回到change1版本的文件,则需要:

git checkout 2d9b10d -- 1.py

此时就会发现文件代码发生了变化,变成了只有a=1 ,那我们回到过去肯定是想再进行进一步的操作,所以此时在代码变成这样:

a = 1
# I went back to change 1

修改后我们再对它进行add以及commit操作,并查询log:

git add 1.py
git commit -m "back to change 1 and add comment for 1.py"

可以发现记录增加了,文件修改了,但是change2本身的代码是没有任何变动的,这即为checkout和reset的区别。


一个代码可能不止有master一个分支,还有管理人员的devlope分支,所以如何使用git操作这些分支(branch)也是一个很重要的问题。比如开发版的分支用于新思路的开发,可能不太稳定,但是用户版本的分支很稳定,当开发版本的代码完善稳定后就可以合并到用户版本,用户就也可以看到代码全新的改变了。

现在我们先看一下全部的记录,这里我们用graph的形式,可以看到前面的小星号:

git log --oneline --graph

 下面我们再进行建立新的分支的操作,建立新分支有如下两种操作:

方法一:

git branch dev #建立Dev分支
git branch #查看分支情况,前面的星号表示谁是主分支

如果想让dev变成主分支,则只需要使用checkout进行命令:

git checkout dev

方法二:

我们需要切换回master主分支,然后删除dev分支,再用第二种方法重新建立dev分支。删除dev分支用:

git branch -d dev

 新建一个新的分支为:

git branch -b dev

此时我们再修改一个python1 中的文件并add,commit

a = 1
# I went back to change 1
# I was changed in dev branch

我们再切换回mater分支中,此时如果开发已完成,我们想把开发版本的内容和客户版放在一起:

git merge --no-ff -m "keep merge into" dev

此时根据图像我们看到了分支之间的融合。


在实际操作中还会出现两个分支都发生改变的情况,在合并的过程中可能会发现分支冲突,那我们如何解决这些问题呢。

首先我们需要有两个分支:master和dev,原始python1文件的代码为:

a = 1
b = 2

在master分支下我们修改原始代码为:

a = 1
b = 2 
# edit in master

在dev分支下我们修改原始代码为:

a = 1
b = 2 
# edit in dev

查看记录之后,我们也可以看出这两段代码在之前的记录均一致,只有在两个分支的过程中发生了不同的修改。此时我们如果合并dev可以发现终端中报出了conflict冲突,而且在python1 文件中也有体现。

 这个时候我们点进去python文件,将文件修改为:

在终端中输入:

git commit -am "solve conflict"

 可以看到以下内容:


下面要说到一个和merge一样用于处理分支冲突的rebase。源文件仍然和上面的例子一样。只不过这次我们不用merge,而是用rebase。

rebase的原理其实是将主分支上的修改先放到一个另外的空间,在基于dev分支上的修改后插入形成新的形式。

首先输入命令行:

git rebase dev

同样如上在python文件里修改内容,我们可以看一下branch现在的内容

可以看到主支不在dev和master中的一个,而是分配给了其他空间(rebasing master),这也证明了刚才rebase的原理。 

这时要add修改后的python1文件,并且继续rebase的进程,输入以下代码:

git rebase --continue

可以看出主支的edit in master是插在edit in dev后面,而且要注意此时的edit in master和之前的edit in master的ID并不一样。


有些时候当你在开开心心敲代码的时候,突然老板说要让你在现有的代码文件上再实现完成一个功能,那此时你并不想将现在的修改和老板给的任务混在一起,这时就需要“临时修改(stash)”这个方法了。 

现在我们要用的文件还是刚才的文件,进入dev分支后发现现在的代码是:

此时假设我们在按照自己的思路修改代码,则代码修改为:

 这时老板一通电话打过来,让你按照他的思路去修改,于是你只能先把你修改的部分内容放在一个暂存区空间中:

        首先查询现在的状态,还是一个unstage状态:

 放入暂存空间的命令行:

git stash

放入暂存空间后再次查询状态发现没有了任何反应:

 此时我们再创建一个属于老板任务的分支:

git checkout -b boss

将代码修改为以下内容,并对代码进行add 和 commit:

下一步重要内容就是将boss分支和主支进行合并,此时会有confic冲突,和之前一样将代码改变,再进行solve conflict 

 最后我们可以返回dev的分支,继续进行自己的修改:

git checkout dev #返回dev的分支
git stash pop #提取暂存空间的内容继续进行修改

可以看出这个时候的python1文件的状态为:unstage. 继续进行修改即可。


最后如何和github联系,即输入下面命令行:

git remote add origin https://github.com/MarsGemini/git-demo.git  #后面为GitHub上建立的仓库地址
git push -u origin master

关于后面如何再对一些问题进行修复,详见这篇文章,里面说的很详细,本人的问题也得到了解决:github开发人员在七夕搞事情:remote: Support for password authentication was removed on August 13, 2021._星空-CSDN博客

以上,终于结束了这一段的内容!本人也是初学小白,仅仅是为了记录学习笔记,防止忘记之后还得重新翻视频资源。如果有任何不对的地方欢迎各位指正,在此基础上如果可以解决各位的问题当然是我的荣幸哈哈哈哈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号