【git】使用记录

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

git使用记录

1. git

1.1 基础知识

git init # 初始化,将当前文件夹设置为仓库,会新建.git文件进行记录
git add m.py # 文件添加到仓库缓存区
git commit -m "提交到仓库" # 把缓存区文件提交到仓库

修改代码后:

git add m.py
git commit -m "修改代码后提交"

查看历史版本

git log

回退历史版本的方法

方法一:

HEA^ # 上一个版本
HEAD^^ # 上上一个版本
HEAD~n # n 为前面第n个版本,采用这个
git reset --hard HEAD^

方法二:

git reset --hard id # id 为提交的版本号,通过git lod 可查看

记录每次命令

git reflog

项目中无需git管理的文件,如日志、临时文件等,可以进行忽略设置,在工作目录下创建.gitignore文件。

命令说明

git clone # 下载远程仓库
git status/log # 查看仓库状态、查看仓库历史

---------------------------------------------------
git branch [branch name] # 创建分支
git branch -v # 查看分支
git branch -r # 查看远程端分支
git checkout [branch name] # 切换分支
git reset --hard 'cmmitID' # 回退之前的版本

----------------------------------------------------
git pull/push # 拉取远程仓库代码并与本地合并,推送到远程仓库
git remote -v # 显示远程仓库
git remote add [shortname] [url] # 添加远程仓库

----------------------------------------------------
git merge/rebase/cherry-pick # 合并
git stash # 暂时保存到堆栈区,
git submodule # 子模块

1.2 git submodule

1.2.1 添加一个submodule

将别人的项目添加到我们的项目中作为第三方库。

首先创建单独的文件夹,作为第三方库的路径

mkdir lib
cd lib

将第三方库以submodule形式注入到项目中,如,我们需要一个“时区转换器”

git submodule add https://github.com/spencermountain/spacetime.git

代码会下载到的lib文件夹下。

和不使用submodule有什么区别?

使用submodule以后,其将作为我们项目的一部分,确保文件不会“泄露”到reposityory当中。

.gitmodules文件

[submodule "spacetime"]
	path = spacetime
	url = https://github.com/spencermountain/spacetime.git

.git/config

[submodule "spacetime"]
	url = https://github.com/spencermountain/spacetime.git
	active = true

1.2.2 克隆一个含有submodule的项目

如果执行git clone [url] 将会下载主项目,任何的submodule都是空的。证明了sbumodule的独立性,不包含在父仓库中。

克隆父仓库之后填充submodule可以执行

git submodule update --init --recursive # 在父项目中填充子项目

推荐在clone的时候使用

git clone [url] --recurse-submodules

1.2.3 使用特定版本

在普通的仓库中,有分支概念。在submodule中是版本,不是分支

如果想查看版本信息,可以通过

git submodule status

更改版本

cd spacetime
git checkout 7.1.0 # 改版本
cd .. # 返回上一级目录
git submodule status

1.2.4 更新submodule

git pull
git submodule update lib/spacetime

1.3 git stash

某个项目开发到一半遇到突发情况需要区处理别的内容,但当前项目暂时不想提交,可以用git stash 将内容保存在堆栈区。

某个内容本应在dev开发,却在master进行了开发,需要重新切换dev。可以通过git stash将内容保存在堆栈中,再切回dev分支,再次恢复内容。

即,git stash不仅可以将内容恢复到原先的分支上,还可以恢复到任意分支上。其作用范围包括工作区和暂存区,即没有提交的内容都会保存在堆栈区中。

1.3.1 常用命令

git stash
git stash save "将内容放到堆栈中暂存" # 可添加描述

git stash list # 查看当前stash 中的内容
git stash pop # 将当前stash中的内容弹出(删除),并应用到当前分支中(栈)
git stash apply # 将栈中的内容应用到当前目录(不删除),默认使用第一个,可指定
git stash drop 名称 # 将栈中内容删除
git stash clear # 清除 栈中内容
git stash show # 查看栈中保存的内容和当前目录的差异,默认show第一个存储
git stash show -p # 显示第一个存储改动的详情,可显示其他存储
git stash branch # 从最新的stash 创建分支
# 想备份文件
git add file1.js,file2.js  # 添加不想要保存的部分文件
git stash -keep-index # 备份那些没有被add的文件
git reset # 取消已经add的文件备份

1.4 git reset


git 分区:

  • 工作区:最开始的状态,可直接编辑的地方
  • 暂存区:通过git add方法将工作区代码提交到暂存区
  • 仓库区:通过git commit方法将暂存区代码提交到仓库,形成记录

工作区 -------->>> 暂存区 ----->>> 仓库区


回退到之前的版本,参数有–soft, --mixed(默认), --hard

参数说明
soft

回退到指定版本好**(仓库区)刚commit完的那一刻,但暂存区和工作区**代码保持不变

mix(默认参数)

暂存区和仓库区代码回滚到指定版本,工作区代码不变

hard

工作区、暂存区、仓库区代码都回滚到指定版本。

注意: 若工作区有未提交的代码,不要使用这个命令,因为工作区回滚以后,没有提交的代码再也找不回来了。若想安全回滚可以使用git stash方法,将代码临时存储到堆栈中。

使用场景
1. 撤销上一次的push

用soft,只回滚仓库区 代码到上一个版本,通过git push -f 撤销上一次push,最后重新push

git reset --soft HEAD~1 # 本队仓库区回退到上一个版本

git push origin master -f # 通过-f将回滚后的版本强制推送上去
撤销一次commit

如果要同时撤销暂存区,就用–mix,

如果要撤销工作区,就用–hard,

否则用soft最安全,只撤销仓库区

1.5 git checkout

有如下两种功能

  • 切换分支
  • 撤销修改

1.5.1 切换分支

git checkout name # 切换分支
git checkout -b name # 创建分支并切换代码,即git branch name ; git checkout name

1.5.2 撤销修改

git checkout . # 放弃工作区中的全部文件修改
git checkout -- filename # 放弃工作区中某个文件的修改
git checkout -f # 强制放弃index和工作区改动

1.6 rm

1.6.1 几种情况


  1. 删除本地文件,但是未添加到暂存区;
  2. 删除本地文件,并且把删除操作添加到了暂存区;
  3. 把暂存区的操作提交到了本地git库;
  4. 把本地git库的删除记录推送到了远程服务器github。

1.6.2 分类说明

删除本地文件,但是未添加到暂存区
rm t.txt # 删除当前路径下的t.txt文件
git checkout -- t.txt # 恢复本地文件

说明:

  1. t.txt 文件已添加到缓存区
  2. 删除t.xt这一操作没有添加到缓存区
删除本地文件,并且把删除操作添加到了暂存区

实验前置操作

rm t.txt # 删除t.txt文件
git add t.txt # 提交的暂存区

1.7 远程地址

查看远程地址

git remote -v

添加远程地址

git remote add origin http://git.XXXX.com/XXX/XXX.git/

修改远程地址

git remote set-url origin http://git.XXXX.com/XXX/XXX.git/

2. github

1 添加SSH Keys (本机的用户目录下的.ssh)

添加到github 账户中

2 在 github上创建仓库

3 本地仓库和远程仓库关联

2.1 方法一:

  1. 本地新建和github仓库同名文件夹,并添加文件
git init
git add he.py
git commit -m "first commit file"
  1. 本地仓库和远程仓库链接
git remote add origin [email protected]:onceone/GitTest.gitranhou
  1. 把本地仓库内容推送到github
git push -u origin master

注意:

本地文件和github文件不同,报错

Updates were rejected because the tip of your current branch is behind

两种解决方法:

1

git pull origin master # 把远程的文件拉取下来,然后再推送
git push origin master

2

# 创建分支
git branch [branch name]
# 然后push
git push -u origin [branch name]

2.2 方法二:

先克隆远程仓库到本地,然后开发

git clone [email protected]:smuyyh/BookReader.git

参考

[1] https://www.jianshu.com/p/296d22275cdd

[2] https://www.jianshu.com/p/2d4514d85336

[3] https://www.jianshu.com/p/3ecc1609889f

[4] https://blog.csdn.net/weixin_42310154/article/details/119004977

[5] https://www.jianshu.com/p/2d74a6f41d07

[6] https://www.jianshu.com/p/a7b53728ffeb

[7] https://blog.csdn.net/raoxiaoya/article/details/111321583

[8] https://www.jianshu.com/p/c3ff8f0da85e

[9] https://zhuanlan.zhihu.com/p/346993796

[10] https://blog.csdn.net/qinwenjng120/article/details/104945015

[11] https://blog.csdn.net/weixin_44799217/article/details/112746525

猜你喜欢

转载自blog.csdn.net/weixin_39190382/article/details/128779093
今日推荐