Git 简介及基础操作

目录

简介

基本概念

安装

Windows下安装

Git配置

用户信息

个性化配置

工作流程

基本操作

创建仓库

本地创建

拷贝项目

仓库文件管理

提交

改动

回退版本

删除

提交历史

查看日志

远程操作

远程仓库基本操作

从远程获取代码库

下载远程代码并合并

上传远程代码并合并

分支管理

查看分支

创建分支

切换分支

合并分支

删除分支

Git服务器搭建


简介

Git是一个开源的分布式版本控制系统。

和SVN区别:

1.Git是分布式的,而SVN不是。

2.Git把内容按元数据方式存储,而SVN是按文件来存储。

3.Git里分支是一种同时处理不同版本存储库的方式,SVN里分支则像是版本库的另外一个目录。

4.Git没有全局的版本号,而SVN有。

5.Git的内容完整性要优于SVN。Git的内容存储使用得是SHA-1哈希算法,这能保障代码内容的完整性,使得在遇到磁盘故障和网络问题时降低对版本库的破坏。

以前Github曾默认使用master来命名源代码存储库的主要版本,后来改为了main命名,因此在学习Github相关知识时,要注意将名称master转化为main来理解。

基本概念

1.Git工作区,暂存区/缓存区,版本库。

工作区【workspace】是指电脑能看到的建立有Git仓库的目录。

暂存区【staging area】一般存放在.git/index文件中,所以暂存区有时也叫作索引。

版本库【local repository】是工作区里的一个隐藏目录【.git】。

安装

Windows下安装

官网下载地址:

Git - Downloading Package

如果去官网下载git失败或者下载很慢,可以选择国内软件资源平台下载Git,例如:

【Git下载】

完成安装之后,就可以使用命令行的git工具【已经自带ssh客户端】了。此外,也可以使用Git图形界面的项目管理工具Git【Git GUI】,打开方法是:Windows开始菜单->所有程序->Git->Git GUI。

验证是否安装成功:

git --version

Git配置

Git提供了一个名叫git config的工具,用来配置或读取相应的工作环境变量,

Git配置会存放在以下三个地方:

1.Git安装目录/etc/gitconfig文件。该文件存放的是系统中对所有用户都普遍适用的配置,若使用git config时用--system选项,读写的就是这个文件。

2.~/.gitconfig文件。该文件存放的配置只适用于该用户。若使用git config时用--global选项,读写的就是这个文件。

3.项目根目录/git/config文件。该文件存放的是针对当前项目的配置。在项目运行时,项目里的Git配置会覆盖用户Git配置和系统Git配置。

显示当前git配置信息:

git config --list

编辑git配置文件:

git config -e # 针对当前仓库。

git config -e --global # 针对系统上所有仓库。

用户信息

下列示例配置中使用了--global选项,对应更改的配置文件位于用户主目录下。如果只是在某个特定的项目中配置Git,那么就去掉--global选项。

配置个人用户名称:

git config --global user.name "用户名称"

配置个人电子邮件地址:

git config --global user.email 电子邮箱地址

验证配置信息是否成功写入:

git config --global --list

或者

vim ~/.gitconfig

或者

git config user.name

git config user.email

如果在配置信息查询结果中看到重复的变量名,则说明它们来自不同的配置文件,但Git实际采用的会是最后一个。

个性化配置

Git默认使用的文本编辑器,一般可能会是Vi或Vim,如果想改成别的编辑器,可以运行如下命令:

git config --global core.editor 编辑器名字

可以配置在解决合并冲突时使用哪种差异分析工具。

示例命令:

git config --global merge.tool 差异分析工具名字

Git可以理解kdiff3、tkdiff、meld、xxdiff、emerge、vimdiff、gvimdiff、ecmerge、opendiff等合并工具的输出信息。

工作流程

1.克隆Git资源作为工作目录。

2.在克隆的资源上添加或修改文件。

3.如果别人修改了,可以更新本地资源。

4.在提交前查看修改。

5.提交修改。

6.在修改完成后,如果发现错误,可以撤回修改并再次修改和提交。

基本操作

创建仓库

本地创建

在项目文件夹中创建Git仓库。

语法:

git init 目标目录

目标目录若省略,则在当前目录下初始化一个Git仓库,在目录下生成一个隐藏的.git目录【版本库】,该目录包含了资源的所有元数据。

拷贝项目

从现有Git仓库中拷贝项目。

语法:

git clone <repo> <directory>

参数说明:

<repo>是指Git仓库。

<directory>是指本地指定目录,可选。

示例指令:

git clone git://github.com/Github用户名/Github项目名.git

注意从Github仓库里克隆下来的是main分支里的内容。

还可以通过URL拷贝一个Git仓库到本地。

语法:

git clone [url]

仓库文件管理

提交

初始化Git仓库后,可以用git add命令告诉Git需要对哪些文件进行跟踪,并提交。

示例指令:

git add *

git commit -m "all in"

也可以指定只上传某种类型、某个文件目录、某个文件提交到仓库去。

示例指令:

git add [file1] [file2] ... # 添加一个或多个文件到暂存区。

git add [dir] # 添加指定目录到暂存区,包括子目录。

git add . # 添加当前目录下所有文件到暂存区。

git add test1

git add test2/*.txt

git add readme.txt

git commit -m "部分提交"

git commit命令用于将暂存区内容添加进本地仓库中。

语法:

git commit -m [message] # 提交暂存区内容到本地仓库中

# 提交暂存区的指定文件到仓库区。

git commit [file1] [file2] ... -m [message]

可用-a参数设置修改文件后不需要执行git add命令,直接提交到本地仓库。

示例指令:

git commit -a

git默认是不提交空目录的,如果想提交项目里的每个空目录可以通过在项目根目录的gitbash界面里运行如下指令:

find . -type d -empty -exec touch {}/.gitignore \;

上面这条指令其实是给每个空目录添加了一个.gitignore文件,等空文件夹里新建了文件就可以删除掉里面的.gitigonre文件。

改动

查看仓库当前的状态,显示有变更的文件。

示例指令:

git status [-s]

-s的作用是获取简短输出结果。在简短输出结果中AM状态的意思是这个文件在被添加到暂存区之后又有改动。

比较文件的不同,即暂存区和工作区的差异。

示例指令:

git diff # 查看尚未缓存的改动。

git diff --cached # 查看已缓存的改动。

git diff HEAD # 查看所有改动。

git diff --stat # 显示改动摘要。

# 显示暂存区和工作区的差异。

git diff [file]

# 显示暂存区和上一次提交【commit】的差异。

git diff --cached [file]

git diff --staged [file]

# 显示两次提交之间的差异。

git diff [first-branch] [second-branch]

git mv命令用于移动或重命名一个文件、目录或软连接。

语法:

git mv [file] [newfile]

回退版本

git reset命令用于回退版本,可以指定退回某一次提交的版本。

语法:

git reset [--soft | --mixed | --hard] [HEAD]

参数说明:

--mixed为默认【可省略】,用于重置暂存区文件和上一次的提交【commit】保持一致,工作区文件内容保持不变。

--soft用于回退到某个版本。

--hard用于撤销工作区中所有未提交的修改内容,将暂存区和工作区都回退到上一次版本,并删除之前的所有信息提交【谨慎使用】。

HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,以此类推。上面的^也可以改为数字形式,HEAD~0表示当前版本,HEAD~1表示上一个版本,HEAD~2表示上上一个版本。

示例指令:

git reset HEAD # 取消已缓存的内容。

git reset HEAD^ # 回退所有内容到上一个版本。

git reset HEAD^ hello.php # 回退hello.php文件的版本到上一个版本。

git reset 052e # 回退到指定版本。

git reset --soft HEAD~3 # 回退到上上上一个版本。

删除

给项目创建仓库后,如果要删除文件,需要用git rm命令来删除文件。

将文件从暂存区和工作区中删除。

语法:

git rm [ -f | --cached ] <file>

-f用于将文件从暂存区和工作区中强制删除。

-cached用于只将文件从暂存区【跟踪清单】移除,工作区仍保留该文件。

删除文件:

git rm [相对目录/]文件名

删除非空文件夹:

git rm -r 文件目录

删除空文件夹:

git rm 文件目录

如果删除不了,可用git rm -f 文件目录,还不行则可用rm -r 文件目录

删除完后还要运行

git commit -m "提交说明"

保留删除结果到版本。

提交历史

查看日志

查看历史提交记录。

语法:

git log [--oneline] [--graph] [--reverse] [--author] [--since] [--before] [--until] [--after]

可选项说明:

--oneline 查看历史记录的简洁版本。

--graph   查看历史中什么时候出现了分支、合并。

--reverse 逆向显示所有日志。

--author  查找指定用户的提交日志。

--since--bofore--until--after可用来指定日期。

以列表形式查看指定文件的历史修改记录。

语法:

git blame <file>

远程操作

远程仓库基本操作

显示所有远程仓库。

语法:

git remote -v

添加远程版本库

语法:

git remote add [shorname] [url]

示例指令:

git remote add origin git@github.com:yourName/yourRepo.git

yourName是指github里注册的用户名,而yourRepo则是github里创建的仓库名。

显示某个远程仓库的信息。

语法:

git remote show [remote]

示例指令:

git remote show  git@github.com:yourName/yourRepo.git

修改仓库名:

git remote rename old_name new_name

删除本地配置的远程仓库:

git remote rm name

这个name就是本地配置文件里添加的远程版本库的配置名称【如用git remote add 指令添加远程版本库时设置的shortname】。

从远程获取代码库

语法:

git fetch [alias]

参数说明:

alias参数就是本地配置文件里远程版本库的配置名称。

示例指令:

git fetch origin

如果在获取远程代码的显示结果中,看到例如”0205aab..febd8ed main -> origin/main”这样的内容,则表示main分支已经被更新,就需要使用git merge命令将更新同步到本地。

示例指令:

git merge origin/main

查看README.md文件内容。

语法:

cat README.md

下载远程代码并合并

git pull 用于从远程获取代码并合并到本地版本,可以视作是git fetchgit merge FETCH_HEAD的简写。

语法:

git pull <远程主机名> <远程分支名>:<本地分支名>

示例指令:

# 更新操作

git pull

git pull origin

# 将远程主机origin的main分支拉取过来,与本地的brantest分支合并。

git pull origin main:brantest

# 如果是远程分支与当前分支合并,则冒号后面的部分可以省略。

git pull origin master

上传远程代码并合并

git push 用于将本地分支版本上传到远程并合并。

语法:

git push [-u] <远程主机名> <本地分支名>[:<远程分支名>]

如果本地当前分支名和远程分支名相同,则可以省略:<远程分支名>。

-u的作用是指定默认主机,当当前分支与不止一个主机存在追踪关系时会用到。

示例指令:

git push origin main

等同于

git push origin main:main

# 强制推送

git push --force origin main

分支管理

查看分支

语法:

git branch

创建分支

语法:

git branch [branchname]

切换分支

语法:

git checkout [-b] [branchname]

参数说明:

-b作用是创建新分支并立即切换到该分支下。

合并分支

从远程仓库提取数据并尝试合并到当前分支。

语法:

git merge [alias]/[branch]

删除分支

语法:

git branch -d [branchname]

Git服务器搭建

使用Github,可能存在国内网络访问不稳定、管理仓库的自由灵活程度受到平台限制等问题,因此可以考虑自己搭建一台Git服务器作为私有仓库使用,网上有相关教程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值