Git基础与实操

一、什么是Git?

Git是一个版本控制工具,而且是一个开源的分布式版本控制工具。

二、Git基本配置

Git有三种配置,分别以文件的形式存放在三个不同的地方。可以在命令行中使用git config查看这些变量。
1、系统配置(对所有用户都适用)

存放在git的安装目录下:git config --system core.autocrlf

2、用户配置(只适用于该用户)

存放在用户目录下:git config --global user.name

3、仓库配置(只对当前项目有效)

存放在当前仓库工作目录的配置文件下:git config --local remote.origin.url

注:配置级别:仓库>用户>系统,每一个级别的配置都会覆盖上层级别的相同配置。

(一)配置个人身份

git config --global user.name “Zhang San”

git config --global user.email zhangsan.@××.com

注:这个配置信息会在Git仓库中提交的修改信息中体现,但和Git服务器认证使用的密码或公钥密码无关。

查看当前项目的用户/邮箱

git config --global user.name

git config --global user.email

(二)文本换行符配置

Windows使用回车和换行(CRLF)两个字符来结束一行,而Mac和Linux只使用换行(LF)一个字符结束,避免扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在迁出代码时把LF转换为CRLF。

1、在Windows系统上:

git config --global core.autocrlf true

2、在Mac、Linux系统上:

git config --global core.autocrlf input

3、若是纯Window程序员,且正在开发仅在Windows上的项目,可以false取消功能:

git config --global core.autocrlf false

(三)文本编码配置

#中文编码支持

git config --global gui.encoding utf-8                   

git config --global i18n.commitencoding utf-8           # 用来让git commit log存储时,采用的编码

git config --global i18n.logoutputencoding utf-8        #  查看git log时,显示采用的编码

#显示中文路径

git config --global core.quotepath false

(四)与服务器的认证配置

1、http/https协议认证

设置口令缓存:

git config --global credential.helper store

添加HTTPS证书信任:

git config http.sslverify false

2、ssh协议认证

使用公钥认证,无需密码,加密传输,操作便利又保证安全性。

ssh认证的配置过程:

# 生成公钥:

ssh-keygen -t rsa -C zhangsan@××.com

连续三个回车,生成的私钥/公钥一般在用户目录的.ssh/id_rsa.ssh/id_rsa.pub文件中。

# 添加公钥到代码平台:

登陆代码平台—>进入“Profile Settings”—>点击左侧栏的“SSH Keys”—>点击“Add SSH Key”,将公钥文件(id_rsa.pub)的内容,复制到“Public Key”栏,保存即可。

三、Git基本命令

Git版本控制下的3种工程区域和状态:

【1】区域:

版本库(Repository):在工作区中有一个隐藏目录.git,这个文件夹就是Git的版本库,里面存放了Git用来管理该工程的所有版本数据,也可以叫本地仓库。

工作区(Working Directory):日常工作的代码文件或者文档所在的文件夹。

暂存区(Stage):一般存放在工程根目录.git/index文件中,所以又把暂存区叫做索引(index)。

【2】状态:

已提交(committed):该文件已经被安全地保存在本地数据库中了。

已修改(modified):修改了某个文件,但还没提交。

已暂存(staged):把已修改的文件放在下次提交时要保存的清单中。

1、工程准备—git init & git clone

git init 项目/工程名

自动生成.git隐藏目录,存放着本项目的Git版本库。

git clone [URL]             git lfs clone [URL]

用于克隆远端工程到本地磁盘。

lfs插件是对二进制文件进行区别管理,在确保项目git服务器已支持git-lfs前提下,使用lfs可以完整地下载工程中的二进制文件,否则内容不完整。

2、新增 删除 移动文件到暂存区—git add & git rm & git mv

git add 文件名

在提交该文件前,需要先将其add到暂存区,然后才能提交。

git rm 文件名

将该文件彻底从当前分支的缓存区删除,因此它从当前分支的下一次提交快照中被删除。

【也可以直接从硬盘上删除该文件,然后对该文件执行git commit操作,效果一样】

git mv file1.txt local         ——(移动)将file1.txt移动到目录local下

git mv file1.txt file2.txt     ——(重命名)将file1.txt重命名为file2.txt

3、查看工作区—git diff & git status

git diff

用于比较项目中任意两个版本(分支)的差异,也可以用来比较当前的索引和上次提交间的差异。

git status

用于显示工作目录和暂存区的状态。

4、提交更改的文件—git commit

git commit file_name -m "commit message"

git commit -am "commit message" ————一次性提交所有暂存区改动的文件到版本库

将暂存区的文件改动提交到本地版本库。

【注意】提交是本地动作,不会影响远端服务器。

提交成功后,git日志可以查到此次提交的id和描述信息——git log

5、查看日志—git log

git log

用于查看提交历史。

6、推送至远端仓库—git push

git push origin branch_name:new_branch_name  ——本地分支可以与推送到远端的分支名不同。

在使用git commit 将自己的修改从暂存区提交到本地版本库后,可以使用git push将本地版本库的分支推送到远端服务器上对应的分支。

【注意】windows上分支名的大小写不敏感,避免推送到远端服务器造成分支覆盖。

7、分支管理—git branch & git chechout & git branch -d & git pull &git fetch

【1】查看分支

git branch ——查看本地工程的所有git分支名称。有*且高亮的分支表示当前工作区所在的分支。

git branch -r  ——查看远端服务器上的分支,返回的分支名带origin前缀表示在远端。

git branch -a ——查看远端服务器和本地工程的所有分支。

【2】创建分支

git branch new_branch_name

git chechout -b new_branch_name

相同点:都可以创建新的分支(默认基于当前分支节点创建)。

区别点:git branch新建分支后不会切换到新分支,git checkout -b新建分支后自动切换到新分支。

【3】删除分支

git branch -d branch_name

git branch -D branch_name

都可以用来删除本地分支,大写表示强制删除。

git branch -d -r branch_name

git push origin : branch_name

可以删除服务器上的远程分支,注意 branch_name 是本地分支名。

删除后要推送到远端服务器才行。

【4】切换分支

git checkout branch_name

切换分支,官方叫法是“检出”。

git checkout -f 

强制切换。

【5】拉取分支

git pull origin remote_branch:local_branch

从远端服务器获取某个分支的更新,再与本地指定分支进行自动合并。

git fetch origin remote_branch:local_branch

从远端服务器获取某个分支,符合预期后再手动进行合并。

8、合并分支—git merge & git rebase

git merge branch_name

用于从指定的分支(节点)合并到当前分支的操作。

git rebase branch_name

【注意】二者背后实现机制,以及合并后对当前节点造成的影响各不相同,有各自的风险存在。

9、撤销操作

git reset commit_id

用于撤销当前工作区中的某些 git add/commit 操作。

git checkout .

用于回退本地所有修改而未提交的文件内容。

【注意】它不给用户任何确认机会,谨慎使用。

git checkout -filename ——仅仅回退filename文件中未提交的改动

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值