Git读篇文章就够了

写在前面

本文主要讲git的日常操作,是我自己的学习笔记,在日常的工作中,熟练使用这些,基本就能够满足了,如有任何问题,请留言指教呢

— 20211220 更新 解决冲突–
在这里插入图片描述

GitHub VS SVN

SVN版本集中管理,所有代码都在中央服务器上
Git去中心化,所有本地主机均有一个独立的版本库

01 安装Git客户端

-Linux: yum -y install git
-Winddows:https://git-scm.com/downloads
-Mac :brew install git

由于Linux 和Mac 安装比较简单。这里说明一下windows的安装,windows用户打开上面的下载页面,选择windows即可,默认自动下载64bit的。32bit也可以自行选择。
然后,选择合适安装目录,一路下一步即可。

Linux 和Mac和Windows(可能需要配置环境变量)都可以执行:
git --version 进行验证

02 拥有一个Git的账号

github主页 :https://github.com  ,这里直接注册
(以github为例,常用的像码云,gitlab等也是可以叠)

ps:推荐使用命令行进行操作(git是有图形化工具的)

03 GitHub的使用-配置sshkey

- 配置sshkey(不用每次输入用户名密码)
	- 生成key:  ssh-keygen -t rsa -C "邮箱地址"
	-cd ~/.ssh (用户目录下的.ssh文件夹)
	-复制id_rsa.pub 的公钥内容到GIitHub网站中

04 配置多个Git网站(sshkey)

事先说明:我们都是需要添加config这个配置文件的,
具体操作,看下面

参照上面的第三步,我们把个人github配置好之后,
我们想添加自己公司的gitlab,怎么办?

我们是要重新生成单独的sshkey即可,在生成之前,把之前的文件进行重新命名
mv id_rsa id_rsa_persongithub
mv id_rsa.pub id_rsa_persongithub.pub
重命名之后,再次,执行ssh-keygen -t rsa -C "邮箱地址"
这样,又会生成id_rsa和id_rsa.pub  ,把这里的id_rsa.pub 粘贴到你的公司git账号下
再次,重命名操作一下:
mv id_rsa id_rsa_companygitlab
mv id_rsa.pub id_rsa_companygitlab.pub
因为,这个时候,有两个sshkey:
我们需要新建一个config文件,配置多个sshkey, 添加Host/HostName/User/IdentityFile 四项
	- cd ~/.ssh (用户目录下的.ssh文件夹)
	- vim config			
		# 新增
		# 个人GitHub
		Host github.com
		HostName github.com
		User liuge36
		IdentityFile /home/hadoop/.ssh/id_rsa_persongithub	
		
		# 公司GitLab
		Host gitlab.com
		HostName gitlab.com
		User liuge36
		IdentityFile /home/hadoop/.ssh/id_rsa_companygitlab	

这样,就可以了,
假如,这个时候,你还需要配置别的git网站的地址,
你再生成,重命名,添加config信息即可

拓展:windows的配置
Host github.com
HostName github.com
User liuge36
IdentityFile C:\\Users\\liuge36\\.ssh\\id_rsa

ps:上面的操作,如果有问题,可以留言,我会尽量第一时间回复的

05 Github的使用-仓库创建(init)、克隆(clone)、拉取(pull)和推送(push)

Run

git config --global user.email “you@example.com”
git config --global user.name “Your Name”

git clone <git仓库地址>

liuge36@liuge36lh MINGW64 ~/Desktop/lh
$ cd AutoTest/
liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)

$ vim test.txt
111111111
:wq

5.1查看本地文件的状态

git status

5.2把test.txt 这个文件使用git进行追踪

git add test.txt 

5.3添加之后,你要是想删除本地追踪

git rm test.txt 即可

5.4添加一个你本次提交的一个说明文件

git commit -am "add:测试文件"

提交推送:git push

拉取拉取

这个时候,远程的github仓库收到了你的推送.
假如你的小伙伴需要拉取你的代码,怎么办?
直接使用:git pull

liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
$ git pull
Already up to date.

liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
$

使用git pull 就会把远端仓库的最新代码替换掉你本地的代码

06 Github的使用-项目分支

查看本地分支

git branch

查看所有远程端的分支?

git branch -a

在本地创建新的分支,创建之后,你就会自动切到该分支上去

git checkout -b branch1

再次查看本地分支

git branch

vim text.txt

修改这个文件的内容
:wq

这个时候,text.txt文件已经发生了改变

git add 进行添加追踪

(好比:我们在项目中,
创建新的分支(新分支一开始和master分支代码一致)之后,
我们对新的分支,进行代码的修改,提交,
这样不影响,master分支的代码
)

git add text.txt
git commit -m "提交到分支1上的内容"
git push --set-upstream origin branch1

小结:很多同学开发同一个项目的时候,
不想和别人(master或其余人)的代码起冲突,就可以建立新的分支,进行工作

07 Github的使用-项目分支的删除

分支的删除
场景:线上的应用程序在运行过程中,发现了bug。
bug的修复,肯定是不能在当前工作dev分支上修复,
,一般来说,是在master这个生产分支上操作。

这个时候,从master分支(运行在生产环境的代码)拉出来一个分支

基于master分支,拉出来一份代码(bug分支),修改Bug,测试通过,合并到主分支,上线

上线之后,刚刚这个bug分支就没有用了,就需要删除

—就是说,有的分支已经合并到master分支上面去了,
就没有用了,就需要删除


查看本地在哪一个分支上

git branch
git branch -a(本地和远程一起看了)

当前工作分支为branch1,删除branch1

git branch -d branch1

失败,因为需要切换到别的分支上,因为当前在被删除的分支上

切换到master分支上

git checkout master

再次尝试删除本地的branch1分支

git branch -d branch1

删除分支成功

同时要删除远程的branch1 分支,怎么办?

git branch -r -d origin/branch1

再加,把本地操作 推送到远程,就能删除远程的branch1分支

git push origin :branch1

08 分支的合并操作

多人开发,合并分支

创建分支

git checkout -b mergedemo

修改mergedemo 分支的test.txt

vim test.txt
 修改
这是需要合并到master分支的内容

需要合并,先要推送到远程仓库

git add test.txt
git commit -am “增加:合并内容”
git push --set-upstream origin mergedemo

切换到master分支上
git checkout master

合并命令

git merge [待合并的分支名称]
git merge mergedemo

说明:把某一个分支的内容合并到当前的分支上

09 分支的合并产生的冲突问题

场景:多人协作开发的时候,大家同时修改同一个文件的时候
比如:刚刚的mergedemo分支,修改了文件test.txt的第三行
,另外的mergedemo2分支也修改了第三行。

***工作中:master分支 是用来合并的,是不能在上面开发的

这里为了简单的测试,使用master和mergedemo制造冲突

新增master 的test.txt文件的第四行
liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
$ cat test.txt
11111111111111111
2222222222222222222
这里是需要合并到Master的内容
这是master分支上的内容 # 这里是新增的

修改之后,提交到远程仓库

git add test.txt
git commit -am “add master test.txt”
git push

这样,远程仓库,就有新的master代码了

切换到master分支上

git checkout mergedemo
cat test.txt
是没有master的第四行内容的

我们也添加mergedemo分支自己的内容
vim test.txt

11111111111111111
2222222222222222222
这里是需要合并到Master的内容
这是mergedemo分支上添加的内容 #这是mergedemo分支的内容

同样修改之后,提交到远程仓库

git add test.txt
git commit -am “add mergedemo分支上的内容”
git push

推送成功之后,我们master分支的test.txt文件和mergedemo分支的text.txt文件都不一样了,都是被修改了

假如,这个时候,在master分支上将mergedemo分支合并过来

git merge mergedemo命令进行合并
$ git merge mergedemo
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

查看合并后的文件

$ cat test.txt

11111111111111111
2222222222222222222
这里是需要合并到Master的内容
<<<<<<< HEAD
这是master分支上的内容
=======
这是mergedemo分支上添加的内容
>>>>>>> mergedemo

-----结果说明-------
<<<<<<< HEAD
这是master分支上的内容
=======
这是mergedemo分支上添加的内容
>>>>>>> mergedemo
--------------------

现在进行操作这个文件

修改为:

11111111111111111
2222222222222222222
这里是需要合并到Master的内容

这是master分支上的内容,,,,,这是mergedemo分支上添加的内容

解决分支冲突之后,再次提交

git add test.txt
git commit -m “解决合并冲突”

git push

10 项目的版本操作

场景:上线失败,我们需要将master分支回退到上一个版本

回退到上一个版本

先修改test.txt文件

11111111111111111
2222222222222222222
这里是需要合并到Master的内容

这是master分支上的内容,,,,,这是mergedemo分支上添加的内容

version111

git add .
git commit -am "V1"
git push

--------到这里你就得到一个V1版本--------------

同样的操作,去得到V2版本

这样就有V1和V2两个版本

但是这个时候,上线的V2版本有bug,想要回退到V1
操作如下:

先本地回退,再推送到远程
git reset --hard HEAD^
--------
$ git reset --hard HEAD^
HEAD is now at 1f83679 V1
-------

这样就回退到V1版本

假如,想要回退上几个版本怎么办呢?

指定回退到上100个版本
git reset --hard HEAD~100

回到指定版本

# 先 查看历史版本的id
git reflog
git reset --hard +id

如有问题,请留言指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值