Bootstrap

Git使用教程

GIT

git配置

在使用 Git 进行版本控制之前,首先需要配置用户名和邮件地址。每一个 Git 提交都会使用这些信息,因此正确配置这些信息非常重要。

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

#git config: 固定命令,设置git相关配置

#–global: 全局配置;一次配置,整机在使用git时都生效 

配置后,可以运行如下命令查看是否成功

git config --list  
#如果信息太多,可以输入 q 退出 

如果后续想要修改,只需要重新执行一下命令即可

Git基础命令

初始化空的Git仓库

新建一个文件夹或现有的文件夹并不是 Git 仓库,因为文件夹内不包含 .git 文件夹,没有被 Git 管理。可以在新文件夹或现有文件夹中运行以下命令,得到 .git 文件夹,初始化成功后,Git 就可以开始管理该文件夹了。

git init

初始化空的 git 仓库成功后,在项目文件夹中,开启显示隐藏文件,即可查看 .git 文件夹

记录更新到Git仓库

核心操作:工作区开发—>将修改后的文件添加到暂存区—>将暂存区的文件记录到版本库

把工作区变化放到暂存区中
# 将 index.html 添加到暂存区  
git add index.html  
  
# 将css目录下一切添加到暂存区  
git add css  
​
# .的意思是当前目录下所有变化都暂存,可以一次性把所有变化文件放入暂存区
git add .  
把暂存区内容,提交到版本库
git commit -m '提交的内容说明'

Git日志及状态查看

查看所有提交的日志记录,命令如下

git log  

简化查看,可以输入如下命令

git log --oneline  

查看 git 仓库变化,只能看未提交的所有变更的文件状态

git status  

Git版本回退

回退命令语法如下

git reset --hard 版本号  

查看版本号

git log --oneline  

输入git reflog命令,可以查看 git 所有的操作记录,包括你的reset记录,使用情景:reset后想要再回到最近一次提交的记录,但发现git log看不到最近一次提交的记录了

git reflog  

Git分支

查看分支
# 查看当前版本库所有分支,命令效果中绿色带*代表现在所处的分支  
git branch  
创建分支
# 创建分支  
git branch 分支名 
切换分支
# 切换分支命令  
git checkout 分支名  
创建并切换分支
git checkout -b 分支名
分支合并

首先切换到要合并到的目标分支上

# 切换分支(以master主分支为例)  
git checkout master  

合并命令语法

# 把目标分支(以reg为例)名下的所有记录, 合并到当前分支(master)下  
git merge reg  
合并时冲突问题

在两个分支修改了同一个文件并提交过,在合并的时候,就会产生冲突

#比如我在branch2分支时,在hello.txt文件中增加一行"This is branch2 vim" 并将记录更新到Git库

86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (branch2)
$ git add hello.tx
​
86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (branch2)
$ git commit -m 'branch2提交hello.txt'
[branch2 8c08965] ‘branch2提交hello.txt’
 1 file changed, 1 insertion(+)
​

#然后我在master分支时,在hello.txt文件中增加一行"This is master vim" 并将记录更新到Git库

86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (branch2)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'system/master'.
​
86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (master)
$ git add hello.txt
​
86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (master)
$ git commit -m 'master提交hello.txt'
[master 882bf98] master提交hello.txt
 1 file changed, 1 insertion(+)

合并时就会出现下面冲突问题

86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (master)
$ git merge branch2
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

我们打开hello.txt文件,里面的内容是这样的:

hello world!
Today is a good day!
<<<<<<< HEAD
This is master vim
=======
This is branch2 vim
>>>>>>> branch2

我们可以手动编辑,修改为我们最终要保留的内容,在解决了文件中的所有冲突后,需要将修改后的文件添加到暂存区,就像平常提交文件修改一样。

86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (master|MERGING)
$ git add hello.txt
​
86135@LAPTOP-MagicBook14 MINGW64 /d/gitrepository/code (master|MERGING)
$ git commit -m '解决了hello.txt在合并分支时产生的冲突'
[master d548080] 解决了hello.txt在合并分支时产生的冲突
 
删除分支
git branch -d 分支名  

如果分支的修改没有被合并到其他分支上,Git 会提示一个类似以下的错误信息:

error: The branch 'branch_name' is not fully merged. If you are sure you want to delete it, run 'git branch -D branch_name'.  

如果确定要删除该分支并且不在乎丢失该分支的修改,可以使用

git branch -D <branch_name>

命令来强制删除该分支。但这样会丢失掉分支上的未合并修改

Git忽略文件

有的时候,我们某些文件或文件夹不想让 git 进行跟踪管理。这时候可以在 .git 文件夹同级目录下新增.gitignore的忽略文件并写入忽略规则(此处的文件名就是 .gitignore ,不是后缀)

# .gitignore内容:  
password.txt  
  
其余用法:  
# 忽略文件夹  
css  
# 忽略文件夹下的某个文件  
css/index.js  
# 忽略文件夹下某类文件  
css/*.js  

.gitignore文件在项目中可以根据脚手架自动生成,无需自己编写,当然如果你非要写,以下是Vue官方自动生成的.gitignore文件代码,可供复制使用

# Logs  
logs  
*.log  
npm-debug.log*  
yarn-debug.log*  
yarn-error.log*  
pnpm-debug.log*  
lerna-debug.log*  
  
node_modules  
dist  
dist-ssr  
*.local  
  
# Editor directories and files  
.vscode/*  
!.vscode/extensions.json  
.idea  
.DS_Store  
*.suo  
*.ntvs*  
*.njsproj  
*.sln  
*.sw?  

Git远程仓库

Gitee

注册登录

注册登录 gitee.com 网站以后,添加主邮箱为自己本地 git 仓库设置的邮箱,注意一定要相同,否则无法正确提交 如果忘记了本地设置的邮箱地址:

可以打开控制台输入 git config --list 重新查看邮箱地址

当然也可以使用 git config --global user.email 你的邮箱地址重新覆盖原来的邮箱地址 邮箱设置界面不要勾选不公开我的邮箱地址,否则也无法正常提交

新建仓库

常见后跳转到下面页面,得到一个远程仓库的地址链接,一般以.git结尾,我们选择SSH路径

SSH配置

我们可以在本机一次性配置 SSH 以后免密登录,SSH 密钥组成和作用如下:

  • 作用: 实现本地仓库和 gitee 平台之间免登录的加密数据传输

  • 组成: id_rsa (私钥文件,存放于客户端的电脑中即可)、id_rsa.pub (公钥文件,需要配置到 gitee 平台中)

  • SSH 密钥创建与使用步骤:

    先在本机生成一个密钥 (以后也可以重新生成、重新配置),打开一个终端,输入以下命令:

    ssh-keygen -t rsa -C "你注册账号的邮箱"  

    连续敲击 3 次回车,即可在C:\Users\用户名文件夹.ssh目录中生成id_rsa和id_rsa.pub两个文件

    使用 VSCode 打开id_rsa.pub文件,复制里面的文本内容

    粘贴配置到 码云 -> 设置 -> ssh 公钥 中即可

初始化空仓库

先给本地仓库配置个远程仓库的地址, 建立仓库之间的链接

由于每次 push 操作都需要带上远程仓库的地址,十分麻烦,我们可以给仓库设置一个别名

# 给远程仓库设置一个别名  
git remote add 仓库别名 仓库地址(SSH地址,可以去gitee空仓库的代码页直接复制即可)  
git remote add origin [email protected]:(username)/repository.git  
  
# 如果要删除 origin 这个别名  
git remote remove origin  
  

注意:推送的本地仓库一定要非空并且本地暂存提交过,不然会报错!这点也很好理解,你传个空的项目到一个空仓库,这可不得给你报错吗

Push向远程推送

# 第一次推送到远程时需要指定具体的分支,因为远程仓库并没有这个分支  
# 使用 -u 记录 push 到远端分支的默认值,将来直接 git push 即可
git push -u 仓库别名 分支名  
​
#假设本地有一个feature_branch,远程仓库别名是origin,要将其推送到远程的test_branch,命令就是:
git push origin feature_branch:test_branch
    
#当本地分支和远程目标分支名称相同(本地分支和远程分支都为test_branch)时,可以省略冒号和远程分支名称
git push origin test_branch
 

同样需要注意可能出现的合并冲突和权限问题。如果远程分支已经有了新的更新,可能需要先拉取更新(git pull origin test_branch)并解决冲突后再进行推送;同时要确保你拥有向远程test_branch分支推送的权限。

Pull从远程拉取

假设当前处于本地的 master 分支,并且希望拉取远程仓库 originmaster 分支的更新到本地 master 分支,可以直接使用以下命令:

git pull origin master

示例场景: 假设你和团队成员共同开发一个项目,其他成员已经向远程仓库的 master 分支推送了新的代码提交,你本地的 master 分支处于旧的状态。执行上述 git pull origin master 命令后,Git 会先从远程仓库 originmaster 分支获取最新的提交记录(这一步类似执行 git fetch origin master),然后自动尝试将获取到的更新合并到你本地的 master 分支(相当于执行 git merge origin/master)。

如果希望拉取远程仓库 originmaster 分支的更新到本地 dev 分支

先切换到 dev 分支:

git checkout dev

再将远程master分支更新合并到本地的 dev 分支

git pull origin master

如果在合并过程中出现冲突,Git 会提示你解决这些冲突。

查看冲突文件

git status

需要手动编辑冲突的文件,解决冲突后,使用以下命令标记冲突已解决:

git add 冲突文件
git commit -m '提交说明'

比较差异

在 Git 中,你可以使用多种方式来比较差异,包括比较本地分支、远程分支以及本地和远程分支之间的差异。以下是一些常用的命令和方法:

1. 比较本地分支之间的差异

假设你有两个本地分支 branch1branch2,你可以使用以下命令来比较它们之间的差异:

git diff branch1..branch2

或者使用 git diff--name-status 选项来查看文件的更改状态:

git diff --name-status branch1..branch2
2. 比较本地分支与远程分支的差异

假设你有一个本地分支 local_branch 和一个远程分支 origin/remote_branch,你可以使用以下命令来比较它们之间的差异:

git diff local_branch origin/remote_branch
3. 比较本地分支与远程分支的最新提交

如果你只想比较本地分支与远程分支的最新提交,可以使用以下命令:

git diff local_branch..origin/remote_branch
4. 比较工作目录与暂存区的差异

如果你想查看工作目录(未暂存的更改)与暂存区(已暂存的更改)之间的差异,可以使用以下命令:

git diff

它会显示哪些更改已经在工作目录中进行了,但尚未被 git add 命令添加到暂存区。

5. 比较暂存区与最新提交的差异

如果你想查看暂存区与最新提交之间的差异,可以使用以下命令:

git diff --cached

它会显示哪些更改已经被 git add 命令添加到暂存区,但尚未提交到版本库。

6. 比较工作目录与最新提交的差异

如果你想查看工作目录与最新提交之间的差异,可以使用以下命令:

git diff HEAD

它会显示哪些更改已经在工作目录中进行了,但尚未被 git add 命令添加到暂存区,或者已经被 git add 命令添加到暂存区但尚未提交到版本库。

  1. git diff

    • 只显示工作目录与暂存区之间的差异。

    • 不包括已经添加到暂存区但尚未提交的更改。

  2. git diff HEAD

    • 显示工作目录与最新提交之间的差异。

    • 包括已经添加到暂存区但尚未提交的更改。

7. 使用 git log 查看提交历史和差异

你可以使用 git log 命令来查看提交历史,并使用 --oneline--graph 等选项来美化输出。例如:

git log --oneline --graph

如果你想查看两个分支之间的提交历史差异,可以使用以下命令:

git log branch1..branch2

问答

题目 1:创建并切换分支

问题:你当前在 master 分支上,希望创建一个新的分支 feature-a 并切换到该分支。请写出完成此操作的 Git 命令。

答案

git checkout -b feature-a

题目 2:合并分支

问题:你当前在 feature-a 分支上,并且已经完成了所有工作。现在你希望将 feature-a 分支的更改合并到 master 分支。请写出完成此操作的 Git 命令。

答案

git checkout master
git merge feature-a

题目 3:解决合并冲突

问题:在合并 feature-a 分支到 master 分支时,出现了合并冲突。你如何解决这些冲突?请写出解决冲突的步骤。

答案

  1. 查看冲突文件

    git status
  2. 手动编辑冲突文件:打开冲突文件,手动解决冲突。

  3. 标记冲突已解决

    git add <冲突文件>
  4. 提交合并结果

    git commit

题目 4:拉取远程更新

问题:你当前在 dev 分支上,并且希望拉取远程仓库 originmaster 分支的更新到本地 dev 分支。请写出完成此操作的 Git 命令。

答案

git pull origin master

题目 5:比较分支差异

问题:你有两个本地分支 branch1branch2,希望比较它们之间的差异。请写出完成此操作的 Git 命令。

答案

git diff branch1..branch2

题目 6:查看提交历史

问题:你希望查看当前分支的提交历史,并且希望输出简洁的提交信息。请写出完成此操作的 Git 命令。

答案

git log --oneline

题目 7:撤销暂存区的更改

问题:你使用 git add 命令将一些文件添加到暂存区,但后来决定撤销这些更改。请写出完成此操作的 Git 命令。

答案

git reset

题目 8:撤销工作目录的更改

问题:你修改了一些文件,但后来决定撤销这些更改,恢复到最新提交的状态。请写出完成此操作的 Git 命令。

答案

git checkout -- <文件名>

题目 9:删除分支

问题:你已经完成了 feature-a 分支的工作,并且已经将其合并到 master 分支。现在你希望删除 feature-a 分支。请写出完成此操作的 Git 命令。

答案

git branch -d feature-a

题目 10:推送本地分支到远程仓库

问题:你创建了一个新的本地分支 feature-b,并且希望将其推送到远程仓库 origin。请写出完成此操作的 Git 命令。

答案

git push -u origin feature-b

题目 11:查看远程仓库信息

问题:你希望查看当前配置的远程仓库信息。请写出完成此操作的 Git 命令。

答案

git remote -v

题目 12:拉取远程更新

问题:你希望拉取远程仓库 origin 中的最新更新到本地当前分支。请写出完成此操作的 Git 命令。

答案

git pull origin

问题:你希望拉取特定分支master的更新到本地当前分支。请写出完成此操作的 Git 命令。

答案:

git pull origin master

这会从远程仓库 originmaster 分支拉取更新并合并到当前分支。

题目 13:查看当前分支

问题:你希望查看当前所在的分支。请写出完成此操作的 Git 命令。

答案

git branch

题目 14:查看文件更改状态

问题:你希望查看当前工作目录中文件的更改状态。请写出完成此操作的 Git 命令。

答案

git status

题目 15:查看特定文件的更改历史

问题:你希望查看特定文件 example.txt 的更改历史。请写出完成此操作的 Git 命令。

答案

git log example.txt

题目 16:查看特定提交的详细信息

问题:你希望查看特定提交 abc123 的详细信息。请写出完成此操作的 Git 命令。

答案

git show abc123

题目 17:撤销最后一次提交

问题:你刚刚提交了一次更改,但后来决定撤销这次提交。请写出完成此操作的 Git 命令。

答案

git reset --soft HEAD~1

题目 18:恢复误删除的文件

问题:你误删除了一个文件 example.txt,并且希望恢复该文件。请写出完成此操作的 Git 命令。

答案

git checkout -- example.txt

题目 19:查看远程分支

问题:你希望查看远程仓库中的所有分支。请写出完成此操作的 Git 命令。

答案

git branch -r

题目 20:重命名本地分支

问题:你希望将本地分支 old-branch 重命名为 new-branch。请写出完成此操作的 Git 命令。

答案

git branch -m old-branch new-branch

本文参考:

史上最全 Git 图文教程(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客

;