git入门

一、Git安装

前往Git官网选择自己操作系统对应的版本

这里Setup表示是安装版本的,双击进行安装,完成后右键有git bash。

Portable表示是解压版本的,无需安装解压即用,右键没有git bash。

接下来傻瓜式安装即可。

二、基本配置

在电脑桌面右键,点击Git Bash Here,会打开一个窗口,里面可以运行Linux命令,我们可以在这配置基本信息。

1. 设置用户信息

输入这两行命令并回车以设置你的用户名和邮箱(该邮箱不要求必须真实存在)用来记录用户对代码的操作情况,这样做的目的是为了方便了解谁在什么时候对代码做了什么操作。

git config --global user.email "11111@123.com"
git config --global user.name "tyuhu2"

你也可以通过以下命令查看邮箱和用户名

git config --global user.email
git config --global user.name

2. 解决Git中文乱码问题

在使用Git时对中文文件名的显示会出现乱码,需要通过设置解决。

  1. 在Git Bash里运行以下指令:

git config --global core.quotepath false

  1. 右键单击Bash空白处,找到Options

找到Text,把Locale设置为zh_CN,Character set设置为UTF-8。一般这时就已经可以显示中文了,如果还是乱码,建议重装git。

三、Git操作

1. Git操作中的文件状态

如果我们在工作目录下新建了一个文件,但Git此时并不认为该文件归Git管理,此时该文件的状态就是untracked(未跟踪)。同样的,如果是修改仓库里的文件,此时该文件的状态就是unstaged(未暂存),和untracked一样,它们都处于工作区。

暂存区是提交到本地仓库前的一个缓冲区。如果要把工作区的内容提交到暂存区,只需要用git add指令来提交即可。

这里的仓库就是指本地仓库,将文件从暂存区提交到本地仓库需要使用git commit指令。

如果我们想要查看文件状态,可以在工作目录的Git Bash里使用指令git status。

2. 新建本地仓库

在项目文件夹右键打开Git Bash Here,输入git init指令回车,就会发现在文件夹下出现了一个.git文件夹,这就说明本地仓库建立完成。

3. git add添加到暂存区

前面提到过,git add指令用于将文件从工作区提交到暂存区,我们可以用"git add 文件名"的形式提交。

此时再查看文件状态,会发现1,txt已经提交成功。

这种文件名提交的方式每次只能提交一个文件,如果要提交多个文件,我们可以用"git add ."来一次性提交所有工作区的文件。

4. git commit提交到本地仓库

利用git commit提交暂存区的内容到本地仓库,-m后面跟的是注释,自己添加。

git commit -m "注释"

提交完成后,如果想要查看提交的历史记录可以用git log指令。

5. 修改文件

如果我们对已经提交到仓库的文件进行了修改,Git会感知到内容有变化,此时用git status查看就会发现此时被修改的文件会提示modified(被修改),此时的该文件就是处于工作区,如果要再次提交,只需要再用git add和git commit就行了。

6. 版本回退与切换

比如我有一个文档,第一次提交的时候里面什么都没有,第二次提交的时候里面写了一个1,如果我想要让这个文档回到什么都没有的状态,我们只需要把文件还原到第一次提交的状态即可。该操作可以通过命令 git reset --hard commitID实现,其中commitID可以通过git log查看,如下图

(tips: 在Git Bash复制文本时,只需要选中需要复制的文本即可,不需要右键点Copy)

需要注意的是,使用版本回退后也会清除git log中后续的提交记录,比如刚开始我做了两次提交,一次是"版本 v1.0",第二次时"版本v1.0.1",此时我回退到了v1.0版本,此时再用git log查看,

发现版本v1.0.1的提交记录不在了,而想要版本切换时又需要commitID,此时我们可以通过git reflog命令查看变化情况

可以看出,当前CommitID为c816151,第二次提交的ID为2945fc0,再使用git reset命令切换到最新版也是能成功切换的

总之,使用reset回退版本适用于丢弃掉新版本而使用旧版本的情况,如果想再回到新版本,需要知道CommieID,但是如果回退的时间比较长,提交的次数又比较多的话,找这个ID还是挺麻烦的。

7. .gitignore文件

在项目中,总是会存在一些文件,我们并不希望提交到仓库,因为这些文件并不是项目的核心文件没啥用,比如pycache文件夹。这时,我们可以通过创建.gitignore文件,并在里面添加上想要git忽略掉的文件即可,这样Git就会自动"无视"这些文件。

一般这些需要git忽略的文件格式和文件目录都是固定的,我们可以直接Copy过来用,这是github上别人总结的gitignore模板,可以直接拿过来用,也可以根据自己的需要加以修改。

8. 分支

创建与切换分支

分支的作用在于把开发和产品分离开,我们可以创建两条分支,一条develop(开发)分支,一条master(产品)分支,我们在开发的时候在develop分支进行,在对产品更新的时候把开发分支的内容合并到产品分支上。

查看分支:git branch

创建分支:git branch 分支名

切换分支:git checkout 分支名

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

重命名分支:git branch -m 旧分支名 新分支名

删除已合并过的分支:git branch -d 分支名

删除未合并过的分支:git branch -D 分支名

在创建仓库的时候,也可以同时把分支创建了,指令是git init -b 分支名,而我们如果创建仓库的时候没有创建分支,在提交代码时git则会创建一个名为master的默认分支。

举个例子,比如我现在有一个a分支,然后创建了1个a.txt文件并提交到本地仓库,然后再创建1个b分支,此时b分支由于是在已有a分支的情况下创建的,所以它继承了a分支的所有内容,用git log查看发现两个分支的提交内容记录是一样的。但是如果现在切换到b分支,再创建1个2.txt文件并提交到b分支的本地仓库里,此时在切换回a分支会发现a分支的目录里和提交记录里都是找不到2.txt文件的,分支之间相互独立。

合并分支

合并分支的指令是git merge 分支名

合并分支是把另一个分支的内容合并到当前分支,比如我在a分支创建了一个a.txt,然后创建b分支,此时b分支也有a.txt,此时回到a分支,再创建b.txt文件,此时a分支是比b分支"新"的,此时我们回到b分支,输入指令git merge a即可把a分支合并到b分支,此时b分支便会出现b.txt文件。

在开发过程中,轻易不要动产品分支,否则可能会给他人的合并带来冲突!!!

9. 冲突

远程仓库冲突

在多人协作开发的时候,我们需要一个第三方平台(如github或公司自己的远程仓库)管理代码,比如员工a和员工b同时开发一个项目,为了实现两个员工的代码同步,就需要二者都把代码提交到云端。当然,除了向远程仓库推送,自己本地仓库的多个分支合并也可能会出现冲突。

如果员工a仓库里有1文件和2文件,员工b仓库有1,2,3文件,此时员工b把写好的代码提交远程仓库,此时是没问题的,而此时远程仓库有1,2,3文件,a员工仓库只有1,2文件,也就是此时远程仓库的版本是比a员工的仓库版本新的,如果a员工此时写好了1个4文件并推送到远程仓库,仓库会拒绝a员工的推送,这就是冲突的产生。

而要解决冲突也很简单,a员工只需要使用git pull命令把远程仓库的文件同步过来,然后a员工就有了1,2,3,4一共4个文件,此时就可以再次提交了。总之就是员工开发的代码版本必须高于远程仓库的代码版本,否则会发生冲突。

本地分支冲突

我现在有一个a分支,一个b分支,两个分支都有1个1.txt文件并都已提交到本地仓库,a分支的该文件内容是123,b分支是456,此时我在a分支合并两分支就会提示冲突,此时打开a分支中1.txt文件会如下图所示

我们只需要保留需要保留的部分(123)即可,然后重新git add 和git commit并正常合并。

四、Gitee远程仓库

1. 创建仓库

首先注册账号并登录,然后新建一个仓库

点击创建即可完成。

2. 配置公钥

要想向创建的仓库推送代码,需要被验证你是否有权限向该仓库推送。方式1就是使用账号密码,但这种方式过于繁琐不推荐,方式2是使用公钥。

先来生成密钥,在Git Bash窗口里输入命令

ssh-keygen -t rsa

回车执行,然后一直按回车,直到出现下图中的RSA密钥

查看密钥可以使用下面指令

cat ~/.ssh/id_rsa.pub

然后把密钥复制一下,打开gitee设置里的SSH公钥复制到公钥里面,标题会自动生成,自己写也可以。

此时公钥配置完成,输入以下指令验证是否配置成功

ssh -T git@gitee.com

回车后显示提示信息,然后输入yes再次回车就可以看到成功登陆提示了。

3. 添加远程仓库

首先要添加远程仓库的地址用于将本地仓库和远程仓库绑定,使用以下指令

git remote add origin 远程仓库地址

其中远程仓库地址可以从仓库页面拿到,选择SSH,里面的链接就是地址。

如果你选择HTTPS,那么推送代码的时候是需要账号密码的,配置的公钥起不到作用。

origin代表远程仓库的别名,这个是约定俗成的,通常不改动。

此时我们可以使用git remote指令查看我们的远程仓库

删除远程仓库的指令未:

git remote rm 仓库名(origin)

4.推送到远程仓库

使用以下指令,意思是说把本地仓库的master分支推送到远程仓库origin

git push origin master

这样就说明推送成功了,此时返回gitee刷新页面就可以看到代码文件了。

5. 从远程仓库克隆

如果想把远程仓库的项目下载到本地,可以使用以下指令

git clone 仓库地址(SSH) 文件夹名(可选)

好了,现在你的本地已经有远程仓库的项目了。如果此时另一位员工又向远程仓库提交了一个c.txt文件,那么此时我们的本地仓库版本又不是最新了,那么我们可以使用git fetch origin [分支名],如果不加分支则表示更新所有分支。更新之后,我们往往还需要使用git merge对更新的文件进行合并。

git fetch之后往往需要merge,而为了合并这两步,可以使用git pull origin <远程分支名>:<本地分支名>,如果不加本地分支名表示拉取并合并到当前分支。

相关推荐
清源妙木真菌2 小时前
Linux:git的了解和基础使用(保姆级教程)
git
但老师10 小时前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y10 小时前
git创建分支
git
研究是为了理解15 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT16 小时前
Git 的基本概念和使用方式
git
Winston Wood19 小时前
一文了解git TAG
git·版本控制
喵喵先森19 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu54321 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio1 天前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。1 天前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode