Git零基础入门与常见命令介绍

Git 是一个开源的分布式版本控制系统,用于高效地处理任何大小的项目。它由Linus Torvalds为了帮助管理Linux内核开发而开发的开放源码软件。与常用的版本控制工具(如CVS、Subversion)不同,Git采用了分布式版本库的方式,不需要服务器端软件支持。

目录

1.安装Git

2.基本命令介绍

2.1创建本地仓库

2.2添加和提交

2.3回滚

3.分支

3.1创建分支

3.2切换分支

3.3合并分支

3.4变基分支

3.5优选

4.使用IDEA进行版本控制

5.远程仓库

5.1创建本地仓库

5.2推送到远程仓库

5.3克隆项目

5.4抓取和拉取


认识Git

当我们开发软件时,通常会有一个工作目录,这里是我们实际编写和修改代码的地方。每当完成了一部分新功能或者修复了一些问题,我们可以把改动暂存起来,这个暂存的地方叫做暂存区。这一步就像是为即将提交的变化做一个标记。

这些标记过的改动最终会被提交到本地仓库中。本地仓库实际上就是存储在你电脑上的一个版本控制系统,记录着项目每一次变更的历史。每次提交都像是给你的代码拍了一个快照,保存了当时的状态。

除了本地仓库外,我们还会用到远程仓库。远程仓库通常是位于服务器上的,团队成员可以通过网络将本地仓库中的更改推送到远程仓库,也可以从远程仓库拉取最新的代码到自己的本地仓库。这样一来,即使团队成员不在同一地点,也能协同工作,保持代码的一致性和最新状态。

通过这样的流程,每次完成一个小的功能点或者修复了一个bug,我们都可以将其提交并记录下来。这样做不仅方便跟踪项目的进展,还可以轻松地回滚到之前的任何状态,或者查看某个版本具体做了哪些改动。这种方式极大地提高了开发效率和代码管理的便捷性。

1.安装Git

Git - Downloading Package

安装完毕后需要先设定用户名及邮箱区分用户

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

2.基本命令介绍

2.1创建本地仓库

将任意一个文件夹作为一个本地仓库,进入之后右键选择Open Git Bash here进入命令窗口

创建本地仓库的命令如下:

输入:git init

输入后,会自动生成一个 .git 目录,注意这个目录是一个隐藏目录,而当前目录就是我们的工作目录。

查看当前状态的命令如下 :

输入:git status 

如果已经成功配置为本地仓库,会出现以下状态,master为当前分支,暂无提交记录,此时仓库为空。

2.2添加和提交

如何用git进行版本控制呢,我们先在上一步创建的文件夹中创建一个文本文档,往里面写一些内容。

再次输入 :git status

发现刚刚新增的文本文件成了Untracked files状态,Untracked files是未追踪文件的意思,此时git不会记录它的变化,等于还没对他进行版本控制,将其当做一个新创建的文件,我们可以将其添加到暂存区,那么它会自动变为被追踪状态,添加到暂存区的命令如下:

输入:git add wyw.txt

或者: git add . //代表一次性添加目录下所有的文件。

然后再次输入 git status 查看当前状态,发现已经成了 to be committed , 此时代表添加到暂存区成功。

接下来就要提交到Git本地仓库了 , 在’ ‘中加入描述方便后续查看, 比如修改了什么或者新增了什么内容。

输入: git commit -m 'Initial Commit'

看到已经添加到本地仓库成功了

如何查看提交记录?

输入: git log

如果里面有多条记录的时候也可以用

git log --online #进行逐行查看,较为直观

修改之后也需要再次提交。当我们对我们的文档加入如下修改之后,再次git status 查看状态,由于文档已经被追踪了

显示有文件被修改但是还未commit

同样的,我们可以将其加入到暂存区,然后提交到本地仓库

git add xx.txt

git commit -m 'Modify first'

使用 git log 查看提交记录,看到已经成功提交,也能看到历史提交,head指向最新的状态

那我们如何查看提交的内容呢?

输入: git show +(commit 的唯一id,完整或者短一些的都可以)

就可以看到新增的修改内容了。

再次查看状态,此时都已成功添加了。

接下来我们看看如何使用.gitignore来完成文件忽略列表,新建一个aaa.text,和一个.gitignore,查看当前状态:这两个文件都没被追踪。

但是我们想要忽略aaa.text,不对其进行版本控制,我们可以在.gitignore里加入:

这样,aaa.text就不在git的控制之中了。

其他可以在.gitignore中编写的语句:

# 这样就会匹配所有以txt结尾的文件

*.txt

# 虽然上面排除了所有txt结尾的文件,但是这个不排除

!bbb.txt

# 也可以直接指定一个文件夹,文件夹下的所有文件将全部忽略

test/

# 目录中所有以txt结尾的文件,但不包括子目录

xxx/*.txt

# 目录中所有以txt结尾的文件,包括子目录

xxx/**/*.txt

完成.gitignore的提交

完成以上的操作,此时本地仓库的状态如下:

2.3回滚

当我们想要回退到过去的版本时,就可以执行回滚操作。

回滚前状态:

输入 :git reset --hard commitId # commit是唯一的标识

执行成功后的文件夹状态:可以看到已经回到了一开始的状态。

查看log日志也只有一条记录,证明我们已经正确回滚了。

那么又怎么取消回滚呢,假设我又想回去回滚前的版本,我们可以用git reflog来找到所有的commit,feflog中的内容不会因为回滚而消失,找到我们想要去到的回滚前的commitID,再使用一一次 git reset -- hard 就可以实现取消回滚:

输入 : git reflog 和 git reset --hard commitId

git reflog可以帮助我们找到所有的操作记录和commitId,我们直接再次reset就能搞定了。

额外的知识点:对于已经创建了,只是进行修改的文件,可以直接commit -a表示自动添加到暂存区

输入: git commit -a -m 'Modify second'

这样就省去了先add再commit的步骤,合二为一。

3.分支

分支是Git中用于开发和管理代码的重要概念之一。每个分支都是一个独立的代码版本,可以在分支上进行修改和提交,而不影响主线(通常是master分支)上的开发工作。

因此,我们可以在一个主干上分出N个分支,分别对多个分支的代码进行维护。

3.1创建分支

查看当前仓库中存在的分支:

git branch

master是默认情况下的分支,我们之前一直使用的也是master分支,我们接着来基于当前分支创建一个新的分支:

输入: git branch test #创建分支

#删除分支 git branch -d test

对文件进行修改然后提交

查看log发现这时候,master实现了新的提交,而我们刚刚创建的test分支没有发生修改,还是之前提交的状态。现在 master和test是两个互不影响的分支了

3.2切换分支

切换分支的命令如下

输入: git checkout test #进行分支切换

切换成功了test分支,此时test分支里的wyw.txt是修改前的版本,与master分支里的版本不一样了。

接下来,我们对test分支进行修改,然后commit

使用 git log -all -graph --oneline #查看所有分支的记录

此时,这两个分支的同一个文件内容就不一样了,他们的内容是相互隔离的。

3.3合并分支

回到master分支,合并分支的命令如下:

输入 : git merge 分支名

进行合并,但此处会有报错,由于我们在两个分支都进行了同一个文件的修改,到底保留谁的修改呢,还是都保留?

查看冲突在哪的命令如下:

输入:git diff

也可以通过查看文件夹看到,

我们保留两个分支的修改

然后再次提交,输入以下命令:

git commit -a -m '描述'

git log --all --graph --oneline #查看记录

现在我们可以看到test 和master 已经合并了。注意,这里并不是直接合并,只是把test分支的内容同步到master分支上,是提交的内容合并到master,并不是分支的合并。

3.4变基分支

我们准备一个master分支和一个test分支,并且提交一个在master分支中的修改。此时日志如下。

然后我们去到test中进行一次修改,再查看log,此时两个分支都得到了修改。

如果我们想要test变基到master上,执行以下命令即可:

输入: git rebase master

如果没有冲突,则成功变基,查看log,与合并不同,现在test与master合并到了一条线,合并是分支回到主干的过程,而变基是直接修改分支开始的位置,比如我们希望将test变基到master上,那么test会将分支起点移动到master最后一次提交位置,变基后,test分支相当于同步了此前master分支的全部提交如下图所示:

3.5优选

现在我们有一个master2和一个master3分支,我们可以通过优选使得其将他分支上的提交作用于当前分支上,比起变基和合并有更大的灵活性,可以选择自己想要的分支。

我们想让master2分支作用于test分支,于是我们去到test分支中,输入以下命令:

git cherry-pick commitId  #commitId是想要优选的唯一的id,此处放入master2的id

这样,就成功地完成了一次优选。

4.使用IDEA进行版本控制

如何在idea中进行版本控制呢,我们先加入我们当前项目的代码:

然后根据我们.gitignore文件中的内容,项目中的部分文件是不会被追踪的,呈现出不一样的颜色如下:

下面这个颜色属于未追踪状态。

idea右上角中间的按钮为commit提交:

然后完成初次提交

idea下方可以观察到提交状态:

继续添加一个文件并且commit:

可以看到控制台也是在执行git命令的。

如何创建分支呢?在下图的新建分支;右键分支可以选择切换分支。

在分支上继续修改,提交可以看到如下状态

5.远程仓库

我们已经在本地编写好了代码,如何把本地仓库推送到远程仓库?

5.1创建本地仓库

加入内容,同步到本地仓库

5.2推送到远程仓库

在此之前我们要有一个GitHub仓库或者码云等仓库,复制这里的https地址:

然后输入命令:

git remote add (仓库名) (http)地址  

此处地址一定要写对,错误的地址也会直接执行而不会给我们报错。

然后输入:

git push 远程仓库名称 本地分支名称[:远端分支名称]

此时远端还没有分支,我们第一次使用可以不加上远端分支名称,远端会自动创建一个master分支 git push origin master

中间需要使用token登录。

成功推送了。

再次修改文件再提交,如下图所示,本地的master已经到了第二个版本,远程仓库还是第一个版本,然后就需要再次提交到远程仓库以保持版本一致,此处也不需要再次提交验证凭证了,git帮我们记住了我们提交的token。

每一次提交代码都要带上分支名字,会显得有点麻烦,我们可以将本地的分支与远程的分支绑定起来,绑定后就不需要指定分支名称了。命令如下:

git push --set-upstream origin master:master

git push origin

出现以下这样的远程仓库和本地仓库处于同一行的状态,就说明我们已经绑定成功。

5.3克隆项目

如果我们已经存在一个远程仓库的情况下,我们需要在远程仓库的代码上继续编写代码,这个时候怎么办呢?可以使用克隆操作来将远端仓库的内容全部复制到本地:

使用如下命令:

git clone + 项目地址  #克隆

5.4抓取和拉取

如果多人在同时开发一个远程仓库的时候,比如A完成了他的模块,A就提交代码并推送到远程仓库,B完成了他的模块,B也提交代码并推送到远程仓库,如果A先提交了,到B提交的时候,B的本地仓库中的内容和远程仓库就不一致了,这时候我们就需要用pull操作,获取远程仓库中最新的提交。

比如当我尝试push到远程仓库的时候,会报错本地仓库内容与远程仓库内容不一致。

我们可以用以下命令解决这样的冲突问题:

先输入:git fetch 远程仓库名称 #抓取:只获取但不合并远端分支,

然后手动合并:git merge 分支名 #手动合并才能提交

或者直接输入 : git pull 远程仓库 #拉取:获取+合并,等于上述二合一。

这样就可以完成同步,多人开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值