Git的理解和使用

Git是一种分布式版本控制系统,用于管理计算机上的文件和源代码。它由Linus Torvalds为了帮助管理Linux内核开发而创建,现在广泛应用于许多其他项目中。

一、Git的下载与安装

1.git的下载

需要去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com或者gitforwindows.org,或者阿里镜像

2.git的安装

这里下载的版本是 Git-2.40.0-64-bit.exe,可以根据需要下载对应的版本,接下来我们就对这个版本进行安装

2.1        双击下载后的 Git-2.40.0-64-bit.exe,开始安装,这个界面主要展示了 GPL 第 2 版协议1的内容,点击 [next] 到第二步。

2.2        可点击 “Browse…” 更换目录,也可直接在方框里面改,我一般直接将 “C” 改为 “D”,这样就直接安装在 D 盘里了。点击 [next] 到第三步。

2.3        图中这些英文都比较简单,我已经把大概意思翻译出来了,大家根据自己的需要选择勾选。点击 [next] 到第四步。

注:最后一个选项打勾的话,需要下载 Windows Terminal 配合 Git Bash使用,如图:

2.4        方框内 Git 可改为其他名字,也可点击 “Browse...” 选择其他文件夹或者给"Don't create a Start Menu folder" 打勾不要文件夹,点击 [next] 到第五步。

安装成功后点击开始菜单里的图如下可以看到git bash等图标:

2.5        Git 安装程序里面内置了 10 种编辑器供你挑选,比如 Atom、Notepad、Notepad++、Sublime Text、Visual Studio Code、Vim 等等,默认的是 Vim ,选择 Vim 后可以直接进行到下一步,但是 Vim 是纯命令行,操作有点难度,需要学习。如果选其他编辑器,则还需要去其官网安装后才能进行下一步。

下图为默认编辑器 Vim.可直接点击 [next] 到第六步。

如果你不想用 Vim 当默认编辑器,换一个,比如 Notepad++ ,那么你者需要点击下面的蓝色字体 " Notepad++ " 去其官网下载安装好才能进行下一步 [next].

安装后还要配置在我的电脑->属性->高级系统设置->高级->环境变量->系统变量->Path->编辑添加 Notepad++ 的安装地址,如 C:\Program Files\notepad++.
这样才能在 Git Bash 里面直接调用 Notepad++.

$ notepad++ 文件名.后缀  //在 git bash 调用 notepad++ 打开文件

新手建议使用 Notepad++ 、Sublime Text,这两个比 Windows 自带的记事本功能多太多了。点击 [next] 到第六步。


2.6        第一种是让 Git 自己选择,名字是 master ,但是未来也有可能会改为其他名字;第二种是我们自行决定,默认是 main,当然,你也可以改为其他的名字。一般默认第一种,点击 [next] 到第七步。

2.7        调整你的 path 环境变量

第一种是仅从 Git Bash 使用 Git。这个的意思就是你只能通过 Git 安装后的 Git Bash 来使用 Git ,其他的什么命令提示符啊等第三方软件都不行。

第二种是从命令行以及第三方软件进行 Git。这个就是在第一种基础上进行第三方支持,你将能够从 Git Bash,命令提示符(cmd) 和 Windows PowerShell 以及可以从 Windows 系统环境变量中寻找 Git 的任何第三方软件中使用 Git。推荐使用这个。

第三种是从命令提示符使用 Git 和可选的 Unix 工具。选择这种将覆盖 Windows 工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。一句话,适合比较懂的人折腾。

2.8        选择 SSH 执行文件

2.9        选择HTTPS后端传输

2.10        配置行尾符号转换

2.11 配置终端模拟器以与 Git Bash 一起使用

2.12 选择默认的 “git pull” 行为

2.13 选择一个凭证帮助程序

2.14配置额外的选项

2.15 配置实验性选项

上面是实验性功能,可能会有一些小错误之类的,建议不用开启。
点击 [install] 进行安装。

二、Git的主要特点

1.分布式

Git采用分布式存储模型,每个克隆库(包括本地和远程库)都具有完整的版本历史记录和文件副本。这意味着即使某个节点离线或丢失,其他节点仍然可以继续工作并共享数据。

2.版本控制

Git可以记录文件和代码的修改历史,并提供回滚和比较功能。它通过使用提交(commit)来组织修改记录,每次提交都可以理解为一次版本发布。

3.分支管理

Git支持创建和管理多个分支,每个分支可以独立地修改和提交。这使得不同的团队或开发者可以同时处理不同的功能开发,而不影响彼此的工作。

4.合并与冲突解决

当多个分支同时进行修改时,可能会发生冲突。Git提供了强大的合并和冲突解决功能,可以自动合并相互独立的修改,或者提示用户手动解决冲突。

5.快照管理

Git将文件和目录的状态视为一系列快照,而不是基于差异。这意味着每个提交都包含了所有文件的完整拷贝,而不是相对于上一个版本的差异。

6.可扩展性

Git的设计允许用户在不同的层次上添加自定义功能或工具,如钩子、插件、子模块等。

7.开源

Git是一个开源项目,可以自由获取和修改源代码。同时也有广泛的社区支持和生态系统,提供了许多有用的工具和扩展。
 

三、Git的常用命令

git init                                                  # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx"                       # 配置用户名
git config --global user.email "xxx@xxx.com"              # 配置邮件
git config --global color.ui true                         # git status等命令自动着色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global --unset http.proxy                    # remove  proxy configuration on git
git clone git+ssh://git@192.168.53.168/VT.git             # clone远程仓库
git status                                                # 查看当前版本状态(是否修改)
git add xyz                                               # 添加xyz文件至index
git add .                                                 # 增加当前子目录下所有更改过的文件至index
git commit -m 'xxx'                                       # 提交
git commit --amend -m 'xxx'                               # 合并上一次提交(用于反复修改)
git commit -am 'xxx'                                      # 将add和commit合为一步
git rm xxx                                                # 删除index中的文件
git rm -r *                                               # 递归删除
git log                                                   # 显示提交日志
git log -1                                                # 显示1行日志 -n为n行
git log -5
git log --stat                                            # 显示提交日志及相关变动文件
git log -p -m
git show dfb02e6e4f2f7b573337763e5c0013802e392818         # 显示某个提交的详细内容
git show dfb02                                            # 可只用commitid的前几位
git show HEAD                                             # 显示HEAD提交日志
git show HEAD^                                            # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag                                                   # 显示已存在的tag
git tag -a v2.0 -m 'xxx'                                  # 增加v2.0的tag
git show v2.0                                             # 显示v2.0的日志及详细内容
git log v2.0                                              # 显示v2.0的日志
git diff                                                  # 显示所有未添加至index的变更
git diff --cached                                         # 显示所有已添加index但还未commit的变更
git diff HEAD^                                            # 比较与上一个版本的差异
git diff HEAD -- ./lib                                    # 比较与HEAD版本lib目录的差异
git diff origin/master..master                            # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat                     # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
git branch                                                # 显示本地分支
git branch --contains 50089                               # 显示包含提交50089的分支
git branch -a                                             # 显示所有分支
git branch -r                                             # 显示所有原创分支
git branch --merged                                       # 显示所有已合并到当前分支的分支
git branch --no-merged                                    # 显示所有未合并到当前分支的分支
git branch -m master master_copy                          # 本地分支改名
git checkout -b master_copy                               # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy                        # 上面的完整版
git checkout features/performance                         # 检出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933                    # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0                                         # 检出版本v2.0
git checkout -b devel origin/develop                      # 从远程分支develop创建新本地分支devel并检出
git checkout -- README                                    # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master                                   # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e                             # 合并提交ff44785404a8e的修改
git push origin master                                    # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933                        # 删除远程仓库的hotfixes/BJVEP933分支
git push --tags                                           # 把所有tag推送到远程仓库
git fetch                                                 # 获取所有远程分支(不更新本地分支,另需merge)
git fetch --prune                                         # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master                                    # 获取远程分支master并merge到当前分支
git mv README README2                                     # 重命名文件README为README2
git reset --hard HEAD                                     # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase
git branch -d hotfixes/BJVEP933                           # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933                           # 强制删除分支hotfixes/BJVEP933
git ls-files                                              # 列出git index包含的文件
git show-branch                                           # 图示当前分支历史
git show-branch --all                                     # 图示所有分支历史
git whatchanged                                           # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818       # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD                                          # 内部命令:显示某个git对象
git rev-parse v2.0                                        # 内部命令:显示某个ref对于的SHA1 HASH
git reflog                                                # 显示所有提交,包括孤立节点
git show HEAD@{5}
git show master@{yesterday}                               # 显示master分支昨天的状态
git log --pretty=format:'%h %s' --graph                   # 图示提交日志
git show HEAD~3
git show -s --pretty=raw 2be7fcb476
git stash                                                 # 暂存当前修改,将所有至为HEAD状态
git stash list                                            # 查看所有暂存
git stash show -p stash@{0}                               # 参考第一次暂存
git stash apply stash@{0}                                 # 应用第一次暂存
git grep "delete from"                                    # 文件中搜索文本“delete from”
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck

四、Git的简单使用

 1.打开git bash

2.远程仓库配置

远程仓库有很多,比如github,国内的码云,局域网自建git服务器,托管在其他地方的服务器,本文以github为例
**网址:**https://github.com
注册账户: 类似普通的网站新用户注册,使用邮箱注册即可。
新建仓库: 点击右上角,加号,new repository

建立好的仓库

3.生成SSH

用户名

git config --global user.name "注册名"

 

邮箱

git config --global user.email "注册邮箱"

 

 

生成SSH(以有SSH可以跳过这一步)

ssh-keygen -t rsa -C "自己的邮箱"

 

SSH文件存放在C:/User/用户/.ssh下,id_rsa为私钥,id_rsa.pub为公钥。

4. github配置SSH


打开id_rsa.pub文件,全选,复制全文

github->账户->setting

选择SSH and GPGkeys,New SSH key

自定义一个title,然后粘贴从公钥文件中拷贝的key

测试SSH连接

ssh -T git@github.com

按照提示输入yes,回车,提示successfully之类的就说明SSH连接正常,github上的钥匙也会变成绿色

至此,本地git客户端和远程github建立了联系。

5.建立本地仓库

新建一个文件夹

git bash中执行命令,将该文件夹初始化为一个仓库

git init

 

结束以后在文件夹下面会出现一个隐藏的文件夹.git,没有的话,设置一下文件夹选项,显示隐藏文件

6.文件推送到远程仓库

在远程建立好仓库,本地进行clone,然后再添加新文件,最后推送至远程。这样的步骤对新手比较友好。如:事先在github建立了仓库,bysj,并新建了README文件,此时远程仓库中只有这一个文件。

clone远程至本地

git clone git@github.com:用户名/仓库名.git

将远程的bysj仓库及其中的README文件clone至本地

 

然后,向bysj文件夹中手动添加了doc,src,WebContent三个文件夹及其中的子文件夹和文件等。可以用ls命令查看bysj文件夹下的文件,可以看到有一个文件,三个文件夹,使用命令进行

add

git add 文件夹1/ 文件夹2/

add有多种形式,可以add某个文件,某个文件夹,或直接add当前仓库下所有文件

git add 单个文件
git add 文件夹1/ 文件夹2/ ……多个文件夹之间空格隔开
git add .

commit

git commit -m “注释”

push

git push -u origin master

 成功推送至远程仓库bysj,三个文件夹,一个README文件。

7.总结:如何推送文件至远程?


①建立本地仓库
②与远程建立连接,测试

ssh -T git@github.com
③init命令初始化仓库

git init
④手动拷贝文件,并执行add命令

git add 文件夹1/ 文件夹2/
⑤commit命令

git commit -m “注释”
⑥push命令

git push -u origin master

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值