Git使用

Git使用

​ PS:命令前需添加git执行

1.个人本地使用
行为命令备注
初始化init在本地当前目录初始化git仓库
clone(远程仓库地址)将远程仓库(remote repository)拷贝到本地
查看当前转态status查看当前仓库状态(本地),遇到问题的时候可以通过该命令获取提示
查看不同diff查看当前文件状态和commit到本地仓库文件之间不同的地方
diff 版本号1 版本号2查看指定两个版本之间不同的地方
添加文件add -A/文件名将工作区文件添加到缓存区
撤回修改且未缓存的内容checkout – .小数点表示撤回所有修改
提交commit -m “提交信息”提交信息体现修改了什么
删除untracked文件clean -xf删除当前目录下未追踪的文件,不管它是否是.gitignore文件里面指定的文件夹和文件
查看提交记录log查看当前版本及之前的commit记录
reflogHEAD的变更记录
版本回退reset --hard 版本号回到指定版本号的版本(旧版本或最新版本)
2.个人使用远程仓库
行为命令备注
查看全局配置config --list --global
设置用户名config --global user.name “名字”
设置邮箱config --global user.email “邮箱”
生成ssh keyssh --keygen -t rsa -C “邮箱”不用加git
添加远程仓库remote add origin 远程仓库地址
上传并指定默认push -u origin master指定origin为默认主机,以后push默认上传到origin上
提交到远程仓库push
从远程仓库同步pull

在这里插入图片描述

  • workspace即工作区,逻辑上是本地计算机还没有添加到repository
  • staging即版本库中的stage,是暂存区,修改已经添加进repository,但还没有作为commit提交,类似于缓存
  • local repository,只有到这一步才算是成功生成一个新版本
  • remote repository 是远程仓库,用来将本地仓库上传到网络,用于备份、共享、合作。
3. Git下载

官网下载地址 | Git Hub下载地址

PS: Git for Windows从2.8.0版本开始,默认添加环境变量,可以不用手动配置环境变量

4.本地Git使用
1.新的仓库==>初始化

​ 选择想要创建仓库的文件夹,右键并点击Git Bash Here

​ 运行git init来初始化仓库, 如下:

在这里插入图片描述

2.文件的添加和提交

​ 在文件夹中创建一个happyday.txt的文件并添加内容Happy Mid-Autumn Festival!.

​ 使用git status查看有什么变化:

在这里插入图片描述

​ 显示有两个未追踪文件,并提示可以使用git add <file>...命令。

​ 使用git add -A命令:

在这里插入图片描述
​ 图中显示警告,除此之外什么都没有,可以再次通过git status查看状态:

在这里插入图片描述
状态改变,提示Change to be committed(也就是可以执行commit),并说明如何将文件从stage移出

执行git commit -m "提交信息"将文件提交到repository里:

在这里插入图片描述

运行git log就可以看到提交记录:

在这里插入图片描述

为什么设计暂存区

3.文件的修改

​ 修改happyday.txt文件的内容为Everyone, Happy Mid-Autumn Festival!

​ 执行git status命令:

在这里插入图片描述

​ 给出提示,修改未添加到缓存区,说明可以使用git add <file>...将更新添加到stage,然后commit,或者执行git checkout -- <file>...来撤销修改

​ 执行git diff查看文件做了哪些修改:
在这里插入图片描述

​ 默认比较对象为提交的最新版本。

​ 红色(前面有-号)表示删除,绿色(前面有+号)表示添加,因此,在git看来,所做出的的修改操作为,删除之前的行,添加了新的一行。

PS: 如果使用Windows创建txt文件,并用自带的文本编辑器来编辑文本,得到的编码是GBK。而Git读取文件是,使用UTF-8无ROM编码,因此会出现中文无法正常显示的问题。

​ 执行git checkout -- .撤销修改,并用git status查看状态:
在这里插入图片描述
​ 之前的状态提示已经消失,执行vim happyday.txt查看文件:

在这里插入图片描述
​ 之前的改动已经撤销

​ 现在再次更改文件,然后建立版本,使用git log来查看提交

git add -A
git commit -m "add Everyone"
git log

在这里插入图片描述
​ 现在显示有两个提交

4.版本回退

​ 在之前的版本修改了部分内容,并且提交了,突然发现之前删除的内容是需要的可以进行版本回退

​ 执行git log查看版本:

在这里插入图片描述

​ 其中两行黄色部分已commit开头的,后面是一串16进制字符,是一串哈希值,也就是版本号。

​ 执行git reset --hard 7b6381c(取版本号前7位就可以),使用git log查看版本:
在这里插入图片描述
​ 提示HEAD已经更改指向7b6381c了,同时可以看到之前提交的最新版本记录消失了

​ 如果想要回到最新版本,可以执行git reflog查看版本更换情况:

在这里插入图片描述

​ 可以看到HEAD的变化情况,第一行表示当前版本号是7b6381c,其他由上到下表示最新的版本号

​ 再次执行git reset --hard cbfd936命令,回到之前版本:
在这里插入图片描述

​ 回到了第一次reset前的状态。

PS:版本回退,导致未提交的文件全部消失(需add)

5.清除未追踪文件

通常在reset或者pull之前要做两件事:

  • 将新添加且未追踪的文件删除(比如编译程序后所产生的文件)
  • 已追踪的文件已有修改,但又不需要这些修改,将他们还原

删除文件演示:

vim delete.txt // touch delete.txt
git clean -xf // rm -rf delete.txt

在这里插入图片描述
在这里插入图片描述

PS: git clean -xf将会把所有untracked文件全部删除(包括.gitignore设定的untracked文件),一旦清除,再也找不回来,谨慎使用

6. git status中文乱码问题

如果执行git status产生中文乱码,可以执行:

git config --global core.quotepath false

如果执行git log也产生乱码,可以执行:

git config --global il8n.commitencoding utf-8
git config --global il8n.logoutputencoding utf-8 #utf-8 由需求决定
5. Git Hub与Git关联
1. 本地Git 与 Git Hub的连接
  1. Git Hub注册账号
  2. 本地配置用户名和邮箱:
git config --list --global # 查看本地全局配置
git config --global user.name "用户名"
git congig --global email "邮箱"
  1. 生成ssh key

​ 运行ssh-keygen -t rsa -C "邮箱"会有三次输入直接回车即可。
在这里插入图片描述

PS: 上图为已有ssh key提示

​ 将生成好的ssh key复制到剪贴板,执行clip < ~/.ssh/id_rsa.pub(或者到上图显示路径粘贴)

  1. 打开Git Hub,进入Setting:

在这里插入图片描述

​ 点击左边的SSH and GPG keys,将ssh key粘贴到右边的Key里面,点击Add SSH key

在这里插入图片描述

​ 回到Git bash,执行ssh -T git@github.com:

在这里插入图片描述

如图所示,添加成功。

2. 创建远程仓库并与本地关联
  1. 创建远程仓库:
    点击右上角的‘+’,找到new repository
    在这里插入图片描述

填好Repository name后,点击Create repository,远程仓库创建成功

  1. 将远程仓库和本地仓库关联

    复制远程仓库SSH地址:
    在这里插入图片描述PS:有两种方式可以关联,一种是SSH,一种是HTTPS.由于HTTPS比较慢,所以推荐使用SSH。

​ 运行git remote add origin SSH地址:
在这里插入图片描述
​ 如果在创建repository的时候,加入了README.md或者LICENSE,那么GitHub会拒绝本地的push命令,那么需要先执行git pull origin master

​ 执行git push -u origin master将本地仓库上传至GitHub仓库进行关联:
在这里插入图片描述
如图所示关联已完成,并可以在GitHub上看到修改:
在这里插入图片描述

PS: 如果想更换本地仓库位置,可以将.git文件转移到相应目录下,然后提交就可以了

扩展

深入理解Git

移动git仓库

GitHub团队项目开发


.gitignore

​ Git中以.gitignore文件定义哪些文件将被Git排除跟踪,被.gitignore匹配到的文件将不会显示在Git的Untracked files列表

​ .gitignore文件控制Git仓库中应排除跟踪的文件(可由文件类型、路径、通配符等确立)

常用规则
  1. 配置语法

​ 以斜杠/开头表示目录

​ 以星号*通配多个字符

​ 以问号?通配单个字符

​ 以方括号[]包含单个字符的匹配列表

​ 以感叹号!表示不忽略匹配到的文件或目录

​ PS: git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着前面的规则匹配范围更大,则后面的规则将不会生效(!开头与非!开头的匹配互不影响

  1. 示例说明

​ 规则:test/*

​ 表示忽略目录test下的所有内容(不管是根目录下==/test/还是子目录下/child/test/==)

​ 规则:*.zip

​ 表示忽略所有.zip类型文件

​ 规则:

​ /*

​ !.gitignore

​ 表示忽略全部内容,但是不忽略.gitignore文件

PS: Windows中,文件路径使用正斜杠/分隔符,而不是反斜杠

创建.gitignore文件
  1. 常规Windows操作
    • 根目录下创建gitignore.txt文件;
    • 编辑gitignore.txt,写下规则;
    • 打开命令行窗口,cd 根目录(直接在文件夹上面的地址栏输入cmd,回车);
    • 执行命令ren gitignore.txt .gitignore
  2. 用Git Bash
    • 进入bash命令窗口;
    • 输入vim .gitignoretouch .gitignore命令,打开文件(没有文件会自动创建);
    • i键切换到编辑状态,输入规则,按Esc键退出编辑,输入:wq保存退出;

​ 如下:

# 注释
/test/	
忽略已提交文件中的变化
  1. 临时忽略变更

​ 临时忽略本地仓库中已提交的文件的变更

git update-index --skip-worktree <file>
git update-index --assume-unchanged <file>

​ 恢复追踪

git update-index --no-skip-worktree <file>
gir update-index --no-assume-unchanged <file>
  1. 永久忽略变更

​ 如果一个文件已被Git跟踪,那么再将这个文件添加到.gitignore不会忽略文件变更,需要从Git暂存区(index)中移除这个文件信息,步骤如下:

  • .gitignore中添加这个文件

  • 从暂存区移除文件信息、提交删除文件和更新.gitignore文件

git rm --cached <file>
git add .
git commit -m 'update .gitignore'
git commit -m "update .gitignore" //windows使用命令是双引号
PS: 如未被追踪,直接在.gitignore文件中添加匹配,然后提交就可以了
  1. 仅在个人系统中忽略文件

.gitignore文件被提交并被推送后,就会团队共享,若只是在系统上排除文件,可以编辑本地仓库中的.git/info/exclude文件,修改这个文件不会共享给其他人,这个动作只对本地仓库有效

.gitignore详解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值