当前位置:   article > 正文

Git 的介绍和使用方法

Git 的介绍和使用方法

Git是什么?

Git是目前世界上最先进的分布式版本控制系统(类似于同时协作,每个人负责一个模块后上传到分支dev下,负责人审核过后合并到master中)。

下载方法和安装

直接到官网下载后,默认安装。

Git - 安装 Git

打开 在桌面按着shift键同时鼠标右键 会出现一个Open Git Bash here

单击打开后输入

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

your name的位置填自己的名字(最好是英文)

email@example.com的位置填自己的邮箱

如何创建本地库

  1. $ mkdir learngit 创建一个文件夹叫 learngit       
  2. $ cd learngit    cd 是打开这个文件夹
  3. $ cd d: 切换到d盘目录
  4. $ cd xx/xx/learngit 打开xx文件夹下的xx文件夹的learngit文件夹
  5. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop 在桌面打开 默认是桌面的路径 我的桌面放在d盘所以是d盘下的
  6. $ cd d: cd 切换 意思就是回到d盘下的根目录
  7. l@LAPTOP-A06MTDD6 MINGW64 /d 现在的状态就是在 d盘的根目录
  8. $ cd study/work/vscode/test cd 打开d盘目录下最后的test文件
  9. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test 现在在test文件下
  10. $ mkdir learngit mkdir是创建一个名叫learngit的文件夹
  11. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test
  12. $ cd learngit 打开创建的文件夹
  13. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit
  14. $ git init 然后通过 git init 这个命令将这个目录添加到Git本地管理的仓库
  15. Initialized empty Git repository in D:/Study/work/Vscode/test/learngit/.git/

然后会创建一个 .git 文件夹

.git 文件夹默认是隐藏在learngit文件夹中防止用户误删

想要验证 需要打开文件资源管理器到learngit文件下后 点功能查看 显示 隐藏的项目 即可

如何将文件放入git本地仓库

手动在learngit 文件夹下新建一个 readme.txt 文本

  1. 第一步输入 git add 添加到仓库
  2. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  3. $ git add readme.txt
  4. 此时的readme.txt 并未直接在仓库 而是在暂存区
  5. 第二步输入git commit 将文件提交到仓库
  6. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  7. $ git commit -m "第一次提交" "" 这个里面是提交时需要写入的描述 标识为什么上传 区分
  8. [master (root-commit) 99e019d] 第一次提交 这是提交后反馈的信息
  9. 1 file changed, 1 insertion(+)
  10. create mode 100644 readme.txt
  11. $ git add file1.txt
  12. $ git add file2.txt file3.txt 可以同时将两个文件提交到暂存区
  13. $ git commit -m "add 3 files." 同时可以将三个文件同时提交的本地仓库
git status 命令可以让我们时刻掌握仓库的状态
  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git status
  3. On branch master
  4. nothing to commit, working tree clean
git diff 命令可以让我们查看提交的文件和 当前的文件有什么区别 

下面意思就是说 当前文件比提交的 多了一行 第二次提交 原因是我们此时还未上传到本地仓库

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git diff
  3. diff --git a/readme.txt b/readme.txt
  4. index ab5b55f..5843bf4 100644
  5. --- a/readme.txt
  6. +++ b/readme.txt
  7. @@ -1 +1,2 @@
  8. -文本文本
  9. \ No newline at end of file
  10. +文本文本
  11. +第二次提交
  12. \ No newline at end of file
查看日志

git log 命令是查看版本提交的日志 方便回到指定的版本

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git log
  3. commit 8ade6008934d486c570228a9e53570ba6fd80853 (HEAD -> master)
  4. Author: 显示的自己的名字和邮箱号
  5. Date: Sat Jul 20 09:40:17 2024 +0800
  6. 三次
  7. commit 0427f038d73926bfc0acd505bbe754fae40578a8
  8. Author: 显示的自己的名字和邮箱号
  9. Date: Sat Jul 20 09:39:50 2024 +0800
  10. 第二次
  11. commit 99e019dfec88d11d515f852e6b0c8e9d00552c6d
  12. Author: 显示的自己的名字和邮箱号
  13. Date: Sat Jul 20 09:33:26 2024 +0800
  14. 第一次提交

git log --pretty=oneline 简短明了的显示日志

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git log --pretty=oneline
  3. 8ade6008934d486c570228a9e53570ba6fd80853 (HEAD -> master) 三次
  4. 0427f038d73926bfc0acd505bbe754fae40578a8 第二次
  5. 99e019dfec88d11d515f852e6b0c8e9d00552c6d 第一次提交
返回版本

git reset --hard HEAD^         的意思是返回上一个版本    HEAD 表示当前版本

git reset --hard HEAD^^       的意思是返回上上一个版本

问题来了如果上传的版本多了 想返回前100个版本 难道写一百个^吗??

可以间写 HEAD~100      但是同时有点数不清了 这时建议使用 commitID的方法回退

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git reset --hard HEAD^
  3. HEAD is now at 0427f03 第二次

git reset --hard 99e019dfec88d(commitID) 切换指定版本  只需要前几位就行

(99e019dfec88d11d515f852e6b0c8e9d00552c6d )是commitID

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git reset --hard 99e019dfec88d
  3. HEAD is now at 99e019d 第一次提交

git reflog  查看历史版本变化  是你回退到了之前的版本 又想撤回 就可以看到ID 使用上面的切换就行

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git reflog
  3. 99e019d (HEAD -> master) HEAD@{0}: reset: moving to 99e019dfec88d
  4. 0427f03 HEAD@{1}: reset: moving to HEAD^
  5. 8ade600 HEAD@{2}: commit: 三次
  6. 0427f03 HEAD@{3}: commit: 第二次
  7. 99e019d (HEAD -> master) HEAD@{4}: commit (initial): 第一次提交
工作区和暂存区

工作区的意思就是电脑中的目录,例如我的learngit文件夹就是一个工作区。

版本库 工作区中有一个隐藏文件夹 .git,这个不算工作区 算git的版本库里面存放着暂存区和分支

git restore --staged 撤销暂存区的修改

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git add . 添加到暂存区
  3. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  4. $ git status 使用status查看文件状态
  5. On branch master
  6. Changes to be committed:
  7. (use "git restore --staged <file>..." to unstage)
  8. modified: readme.txt
  9. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  10. $ git restore --staged readme.txt 将文件从暂存区中撤销回来

git restore 撤销工作区的修改

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git restore readme.txt 撤销工作区中没有上传到暂存区的内容
删除文件

rm 工作区删除一个文件

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git add text.txt 先往版本库中添加一个新的文件
  3. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  4. $ git commit -m "add text.txt" 并且上传
  5. [master 33c8e27] add text.txt
  6. 1 file changed, 0 insertions(+), 0 deletions(-)
  7. create mode 100644 text.txt
  8. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  9. $ rm text.txt 通过rm 指令 删除这个文件
  10. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  11. $ git status 使用status指令 会告诉你工作区和版本库的不同 哪些文件被删除
  12. On branch master
  13. Changes not staged for commit:
  14. (use "git add/rm <file>..." to update what will be committed)
  15. (use "git restore <file>..." to discard changes in working directory)
  16. deleted: text.txt
  17. no changes added to commit (use "git add" and/or "git commit -a")

如果此时你真的需要把此文件删除,需在版本库中git rm删除该文件 然后git commit 提交

git rm 版本库删除一个文件 

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git rm text.txt 从版本库中删除
  3. rm 'text.txt'
  4. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  5. $ git commit -m "remove text.txt" 提交
  6. [master c5a9264] remove text.txt
  7. 1 file changed, 0 insertions(+), 0 deletions(-)
  8. delete mode 100644 text.txt
  9. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  10. $ git status 在使用status命令查看 版本库和工作区一致了
  11. On branch master
  12. nothing to commit, working tree clean

此时删错了,可以是git checkout指令从版本库中恢复 原因是从版本库中替换工作区的版本

没有提交在版本库中的(从版本库中删除的)   删除是无法还原

如何建立远程库

创建SSH Key

首先要创建自己的SSH Key,先看看自己的C盘 用户 自己的里面有没有.ssh文件,如果有,再看看里面有没有id_rsa和id_rsa.pub这两个文件,如果有说明你之前创建过,可以下一步了。如果没有需要创建SSH Key: 需要把邮箱换成自己的邮箱,不需要设置密码,一直回车即可。

id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心的告诉别人。

$ ssh-keygen -t rsa -C "邮箱"

打开网站 gitee 国内的远程仓库,gitHub国外的远程仓库 可能会出现打不开的现象。

登录后 右上角点我的头像 设置 往下滑找到这个SSH 公钥 然后去找到刚才生成的id_rsa.pub 右键文本文档打开复制里面的内容到 gitee 里面添加公钥后去新建一个仓库 开源就是gitee网站所有人都能看见,私有就是只有你和你的仓库成员看见。仓库名称填learngit 点创建即可

然后根据仓库提示进行绑定

关联远程库

git remote add origin 远程仓库地址 本地库和远程库关联

git push -u origin master / git push 本地库推送到远程库

输入后 刷新你的远程库就可以看见本地库推送过来的内容

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  2. $ git remote add origin https://gitee.com/lysvip/learngit1.git 本地库关联远程库
  3. l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
  4. $ git push -u origin "master" 本地库推送到远程库
  5. Enumerating objects: 15, done.
  6. Counting objects: 100% (15/15), done.
  7. Delta compression using up to 32 threads
  8. Compressing objects: 100% (8/8), done.
  9. Writing objects: 100% (15/15), 1.25 KiB | 1.25 MiB/s, done.
  10. Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
  11. remote: Powered by GITEE.COM [GNK-6.4]
  12. To https://gitee.com/lysvip/learngit1.git
  13. * [new branch] master -> master
  14. branch 'master' set up to track 'origin/master'.
SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

  1. The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
  2. RSA key fingerprint is xx.xx.xx.xx.xx.
  3. Are you sure you want to continue connecting (yes/no)?

git clone 远程仓库地址 从远程库克隆到本地 

别的成员想要编写需要先克隆到他的本地才能编写 然后推送更新

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop
  2. $ git clone https://gitee.com/lysvip/learngit1.git
  3. Cloning into 'learngit1'...
  4. remote: Enumerating objects: 15, done.
  5. remote: Counting objects: 100% (15/15), done.
  6. remote: Compressing objects: 100% (8/8), done.
  7. remote: Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
  8. Receiving objects: 100% (15/15), done.
  9. Resolving deltas: 100% (2/2), done.

git pull 从远程库获取最新的版本 

例如两个 我先推送到远程库新的版本 他还在使用旧版本编译然后也要推送到远程库 会出现冲突  需要先获取最新版本 在推送就可以解决版本冲突

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ git pull
  3. remote: Enumerating objects: 5, done.
  4. remote: Counting objects: 100% (5/5), done.
  5. remote: Compressing objects: 100% (2/2), done.
  6. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
  7. Unpacking objects: 100% (3/3), 269 bytes | 9.00 KiB/s, done.
  8. From https://gitee.com/lysvip/learngit1
  9. 43cbb4e..eb9e2c6 master -> origin/master
  10. Updating 43cbb4e..eb9e2c6
  11. Fast-forward
  12. readme.txt | 3 ++-
  13. 1 file changed, 2 insertions(+), 1 deletion(-)
分支管理

将功能分发给两个人,两个人pull最新的内容,在本地创建了自己的分支跟别人的分支不冲突,上传的远程的时候,只需要将自己的分支和远程获取的分支结合起来推送到远程仓库即可。

git branch 分支名 创建分支

git checkout 分支名 切换分支

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

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ git checkout -b dev
  3. Switched to a new branch 'dev'

git branch 查看当前分支

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (dev)
  2. $ git branch
  3. * dev
  4. master

git push origin dev 把本地库 dev 分支推送到远程库

$ git push origin dev

git checkout -b dev origin/dev 在本地库建 dev 分支并和远程库 dev 分支关联(克隆仓库的背景下)

$ git checkout -b dev origin/dev

git checkout master 切换到master 分支

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (dev)
  2. $ git checkout master
  3. Switched to branch 'master'
  4. Your branch is up to date with 'origin/master'.
  5. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  6. $

git merge 分支名 合并分支 就是将dev里面写的同步到master分支下

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ git merge dev
  3. Already up to date.

git branch -d dev删除分支

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ git branch -d dev
  3. Deleted branch dev (was eb9e2c6).
  4. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  5. $ git branch
  6. * master
删除远程库

git remote rm name 删除远程库 此时的删除只是删除了本地和远程库的关系,不是真正的删除远程库,真删除远程库需要手动到gitee网站后台中删除

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ $git remote rm origin
  3. bash: remote: command not found

git remot -v 查看远程库的信息

  1. l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
  2. $ git remote -v
  3. origin https://gitee.com/lysvip/learngit1.git (fetch)
  4. origin https://gitee.com/lysvip/learngit1.git (push)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号