Linux Git 学习笔记

2023-05-16

1、版本的创建:

git init #初始化
git add .\name #表示提交当前所有文件\某个文件到缓存区
git commit -m '版本号'	#表示提交当前缓存区文件,一次性做成一次版本的记录

2、版本的回退:

HEAD为指向当前版本的指针,HEAD^ 表示上一个版本,HEAD ^^ 表示上两个版本……,同时HEAD~加数字,表示前‘数字’个版本,例如HEAD~10表示前十个版本。

git reset --hard HEAD^ #表示回退到上一个版本
#若是回退后再想回到前一个版本,需要使用提交号来回退,例:
git reset --hard 1bcaeb7e1	
#上述末尾该字符串表示序列,可经由 git log 查看,当terminal曾经关闭过,也可以由git reflog 来查看之前提交的记录

3、缓存区与工作区

git init 所在的目录称为工作区
工作区中的.git目录,称为版本库
git add就是把文件的修改添加到缓存区中,git commit 提交修改,就是把缓存区所有内容提交到当前分支,创建版本记录
git status #表示查看当前的更改内容
#当使用完git add后再使用git status 会有明显不同
#再使用 git commit提交,就又会形成新的版本,HEAD指针更新指向本版本

4、管理修改

git commit 只会提交缓存区的内容形成新版本,未提交至缓存区的不会被提交
当你希望丢弃之前工作区的改动,你可以使用:

git checkout -- name \ .	#丢弃之前工作区的改动,也即将最新版本的某个文件 \ 所有文件 替换为工作区文件

可以看到,原本对于文件的修改“fifth line”已经消失

#当你使用了 git add 提交了文件至缓存区后,又想要撤销这一举动,你可以使用:
git reset HEAD name	#该行代码可以进行撤销某一文件,使用“.”可以撤销全部文件 

#场景1、当你改乱了工作区某个文件的内容,想直接丢弃工作区修改时,用命令
	git chechout -- name
#场景2、当你不但该乱了工作区的某个文件内容,还添加到了缓存区,想丢弃修改,分两步:
	git reset HEAD name	#这就回到了场景1,第二布按场景1操作
#场景3、你在场景1、2的基础上,还把乱文件提交到了版本,可以参考“2、版本的回退”一节,随后按照场景2,1来操作。
	git reset --hard HEAD^ #表示回退到上一个版本

5、对比工作区和某个版本中文件的不同

git diff HEAD -- name	#该命令可以显示工作区文件与当前版本HEAD不同之处,也可以使用HEAD^^表示前几个版本

下面图片表示 —表示HEAD所代表的文件,+++表示工作区文件,下面内容中不带±号的表示两个文件中共有的内容,带+号表示工作区多出的内容
在这里插入图片描述

git diff HEAD HEAD^ -- name	#该命令可以显示当前版本HEAD与上一版本HEAD……不同之处,也可以使用HEAD^^表示前几个版本
#这里---表示HEAD,+++表示HEAD^,HEAD 与 HEAD^放的位置不同+-所代表的文件也不同
git log --pretty=oneline	#表示简短显示提交记录

6、创建分支

git checkout -b NameOfBranch	#该命令创建新的分支,并切换到该分支
#当你想要切换到某一个分支的时候,使用如下命令:
git checkout NameOfBranch
#当你想要合并某一条分支的时候,使用:
git merge NameOfBranch	#该命令会将NameOfBranch分支以及当前所处的分支合并
#当你希望删除某个分支时候,使用如下命令
git branch -d NameOfBranch	#该命令会删除名为NameOfBranch的分支
#小结
	git branch	#查看分支
	git branch name	#创建分支
	git checkout name	#切换分支
	git checkout -b name	#创建+切换分支
	git merge name	#合并某些分支到当前分支
	git branch -d name	#删除分支

6.2、解决冲突

在两个分支上面都有了提交,并且编辑的还都是同一个文件,就会产生合并冲突,需要手动解决,需要进行一次新的提交。手动解决,比如删除部分产生冲突的地方,然后保存推出vim,然后再次提交。
如果你在两个分支下分别编辑了两个不同的文件,然后使用Git commit进行提交,不会产生冲突,但是也不会使用“快速合并”,而是会产生一次新的合并与提交,并且需要在一个界面上输入提交信息

在这里插入图片描述
上图中,是使用 git merge dev 命令后的结果,v0.3-dev 表示 dev 分支的提交,v0.6-master 表示 master分支的提交。合并分之后,很明显将 dev 分支的提交也放在了master 分支里面,并且将合并后的版本独立进行了一次提交,也就是新的 v0.3-dev-master。
而当只有一个分支更改了一个文件,而另一个分支并没有更改文件的时候,使用 git merge NameOfBranch 命令会产生“快速合并”,直接把 dev2 分支提交的版本号加到 master 分支上,如下图所示:
在这里插入图片描述

7、bug消除

#使用快速合并命令:
git merge NameOfBranch
#使用该命令进行快速合并之后,再使用命令查看分支状况:
git log --pretty=oneline --graph
#你会发现这时候,会看不出分支合并的现象,想要消除这种现象,需要使用命令:
git merge --no-off -m '版本号' NameOfBranch	#使用该命令进行合并分支,会保留分支现象,禁止快速合并。

在git中,每一个BUG都是依靠分支来完成,很自然地,你想到新建一个bug-001分支来修复他,但是,当前分支的工作还没有提交,可以使用以下命令来保存现场
git stash #这个时候就会保存现场
当你在新建分支bug-001中修改bug后,再进行合并:
git merge --no-off -m ‘版本号’ NameOfBranch #使用该命令进行合并分支,在使用上述公式时候,会保留分支现象。
使用上述命令合并以保留分支现象,最
后删除bug-001分支
之后使用 git stash pop 来修复现场

8、如何推送代码

git push origin NameOfBranch	#推送代码到分支
#将本地分支设定为跟踪远程分支:
git branch --set-upstream-to=origin/NameOfBranch NameOfBranch
#当你设定了跟踪远程分支之后,你的推送就无须再加NameOfBranch,直接使用
git push	#使用该命令就会直接推送到你追踪的远程分支
#从远程分支上拉取代吗
git pull origin NameOfBranch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux Git 学习笔记 的相关文章

随机推荐