您现在的位置是:首页 >技术教程 >Git的基本使用网站首页技术教程

Git的基本使用

"派派" 2023-06-17 12:00:02
简介Git的基本使用

目录

基本介绍

 基本使用

git启动

git工作流程

远程操作及分支介绍

提交远端

分支

 分支合并

 分支冲突


基本介绍

是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,比如说可以在同一个项目中,分别和不同工作小组的人相互协作。

下载地址:Git - Downloads

基本工作原理:

 1. clone (克隆) : 从远程仓库中克隆代码到本地仓库。
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
3. add (添加) : 在提交前先将代码提交到暂存区。
4. commit (提交) : 提交到本地仓库。本地仓库中保存修改的各个历史版本。
5. fetch ( 抓取 ) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull ( 拉取 ) : 从远程库拉到本地库,自动进行合并(merge) ,然后放到到工作区,相当于
fetch+merge。
7. push (推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。

 基本使用

git启动

安装好之后,右击鼠标会出现这样的界面:

 其中:Git GUI:Git提供的图形界面工具,Git Bash:Git提供的命令行工具。后面操作都以命令行举例。

 许多命令与Linux命令是相同的。安装后首先要设置你的用户名与邮箱

git config --global user.name+用户名
git config --global user.email+你的邮箱
 

查看基本配置:git config -l


#查看系统config
git config --system --list
  
#查看当前用户(global)配置
git config --global  --list

使用git的第一步首先我们得要有一个本地仓库,创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。

可以自己创建一个空文件夹,后打开git,执行命令:git init

结果:

 相关的配置文件就在该文件中。

git工作流程

前面大概介绍了下,现在具体进行介绍

创建本地仓库

git init 或者克隆远程目录,例如 git clone url

文件的四种状态

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

例如:假设我在当前文件夹中创建一个空的文件

版本切换

例如我在当前文件中输入hello,再次提交到仓库后,这相当于两个版本。 例如:

命令形式: git reset --hard commitID  ,git - log或者 git reflog命令 可以查看版本内容,例如:

忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等,可在主目录下建立".gitignore"文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。

  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。

  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

例如:

#为注释*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!!lib.txt     #但lib.txt除外/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录tempbuild/       #忽略build/目录下的所有文件doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

远程操作及分支介绍

提交远端

以当前文件夹的内容举例

可以使用git branch 命令查看当前分支,使用git pull命令进行提交到远程仓库中,这里使用码云。

命令: git remote add < 远端名称 > < 仓库路径 > 。远端名称,默认是origin ,取决于远端服务器设置 。仓库路径,从远端服务器获取此URL。

例如:

推送到远程仓库:

命令: git push [-f] [--set-upstream] [ 远端名称 [ 本地分支名 ][: 远端分支名 ] ]
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master -f 表示强制覆盖 --set - upstream 推送到远端的同时并且建立起和远端分支的关联关系。
git push -- set - upstream origin master
如果 当前分支已经和远端分支关联 ,则可以省略分支名和远端名。
git push 将 master 分支推送到已关联的远端分支

分支

一般我们git init之后都会有一个master分支 

创建分支命令:创建分支 git branch 分支名

例如:

 切换分支 git checkout 分支名,git checkout -b 创建分支并切换

 在dev分支创建文件并进行提交到远端:

 在Gitee上进行查看:

master分支上:

 

dev分支上:

 分支合并

例如在A分支去合并B分支,会将B分支内容同步到A分支,而B分支没有变化。这里切换成master分支,去合并dev分支。

 git branch --no-merged
查看所有包含未合并工作的分支

 git merge+分支名 ,进行合并,例如:

 分支冲突

例如在当前maste中的h.c文件中,修改了内容,并把它提交到了远程,后面切换了dev分支,也对h.c内容做了修改且提交到了远程,那么此时合并就会出现问题。

例如:

 

 手动修改后,再次提交到远程仓库。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。