您现在的位置是:首页 >技术交流 >git基础网站首页技术交流

git基础

一览星梦辰 2024-07-04 11:18:03
简介git基础

git基础

四个专有名词:
● Workspace:工作区
● Index / Stage:暂存区
● Repository:仓库区(或本地仓库)
● Remote:远程仓库

工作区:

程序员进行开发改动的地方,是你当前看到的,也是最新的。
平常我们开发就是拷贝远程仓库中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作

暂存区

.git目录下的index文件, 暂存区会记录git add添加文件的相关信息,不保存文件实体, 通过id指向每个文件实体。可以使用git status查看暂存区的状态。暂存区标记了你当前工作区中,哪些内容是被git管理的。
当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过git add先提交到暂存区,被git管理。

本地仓库

保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它要更旧一些。
git commit后同步index的目录树到本地仓库,方便从下一步通过git push同步本地仓库与远程仓库的同步。

远程仓库

远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的。

git常用命令

add

add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理

	1、git add .  	
		添加当前目录的所有文件到暂存区
	2、git add [dir]     
		添加指定目录到暂存区,包括子目录
	3、git add [file1]			
		添加指定文件到暂存区

commit

commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。

1、git commit -m [message]
	提交暂存区到本地仓库,message代表说明信息
2、git commit [file1] -m [message]
	提交暂存区的指定文件到本地仓库
3、git commit --amend -m [message]
	使用一次新的commit,替代上一次提交

branch

涉及到协作,自然会涉及到分支,关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作。

1、git branch
	列出所有本地分支
2、git branch -r
	列出所有远程分支 
3、git branch -a
	列出所有本地分支和远程分支
4、git branch [branch-name]
	新建一个分支,但依然停留在当前分支
5、git checkout -b [branch-name]
	新建一个分支,并切换到该分支
6、git branch --track [branch][remote-branch]
	新建一个分支,与指定的远程分支建立追踪关系
7、git checkout [branch-name]
	切换到指定分支,并更新工作区
8、git branch -d [branch-name]
	删除分支
9、git push origin --delete [branch-name]
	删除远程分支

merge

merge命令把不同的分支合并起来
一般在merge之后,会出现conflict,需要针对冲突情况,手动解除冲突。主要是因为两个用户修改了同一文件的同一块区域。

1、git fetch [remote]
	merge之前先拉一下远程仓库最新代码
2、git merge [branch]
	合并指定分支到当前分支

rebase

rebase又称为衍合,是合并的另外一种选择。
rebase与merge的区别:merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase。如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

reset

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区

1、git reset —soft [commit]
	只改变提交点,暂存区和工作目录的内容都不改变
2、git reset —mixed [commit]
	改变提交点,同时改变暂存区的内容
3、git reset —hard [commit]
	暂存区、工作区的内容都会被修改到与提交点完全一致的状态
4、git reset --hard HEAD
	让工作区回到上次提交时的状态

revert

git revert用一个新提交来消除一个历史提交所做的任何修改。
revert与reset的区别
1、git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2、git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容

push

上传本地仓库分支到远程仓库分支,实现同步。

1、git push [remote][branch]
	上传本地指定分支到远程仓库
2、git push [remote] --force
	强行推送当前分支到远程仓库,即使有冲突
3、git push [remote] --all
	推送所有分支到远程仓库

其他命令

1、git status
	显示有变更的文件
2、git log
	显示当前分支的版本历史
3、git diff
	显示暂存区和工作区的差异
4、git diff HEAD
	显示工作区与当前分支最新commit之间的差异
5、git cherry-pick [commit]
	选择一个commit,合并进当前分支
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。