every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
git使用记录
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 # 子模块
将别人的项目添加到我们的项目中作为第三方库。
首先创建单独的文件夹,作为第三方库的路径
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
如果执行git clone [url] 将会下载主项目,任何的submodule都是空的。证明了sbumodule的独立性,不包含在父仓库中。
克隆父仓库之后填充submodule可以执行
git submodule update --init --recursive # 在父项目中填充子项目
推荐在clone的时候使用
git clone [url] --recurse-submodules
在普通的仓库中,有分支概念。在submodule中是版本,不是分支 。
如果想查看版本信息,可以通过
git submodule status
更改版本
cd spacetime
git checkout 7.1.0 # 改版本
cd .. # 返回上一级目录
git submodule status
git pull
git submodule update lib/spacetime
某个项目开发到一半遇到突发情况需要区处理别的内容,但当前项目暂时不想提交,可以用git stash 将内容保存在堆栈区。
某个内容本应在dev开发,却在master进行了开发,需要重新切换dev。可以通过git stash将内容保存在堆栈中,再切回dev分支,再次恢复内容。
即,git stash不仅可以将内容恢复到原先的分支上,还可以恢复到任意分支上。其作用范围包括工作区和暂存区,即没有提交的内容都会保存在堆栈区中。
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的文件备份
git 分区:
工作区 -------->>> 暂存区 ----->>> 仓库区
回退到之前的版本,参数有–soft, --mixed(默认), --hard
回退到指定版本好**(仓库区)刚commit完的那一刻,但暂存区和工作区**代码保持不变
暂存区和仓库区代码回滚到指定版本,工作区代码不变
工作区、暂存区、仓库区代码都回滚到指定版本。
注意: 若工作区有未提交的代码,不要使用这个命令,因为工作区回滚以后,没有提交的代码再也找不回来了。若想安全回滚可以使用git stash方法,将代码临时存储到堆栈中。
用soft,只回滚仓库区 代码到上一个版本,通过git push -f 撤销上一次push,最后重新push
git reset --soft HEAD~1 # 本队仓库区回退到上一个版本
git push origin master -f # 通过-f将回滚后的版本强制推送上去
如果要同时撤销暂存区,就用–mix,
如果要撤销工作区,就用–hard,
否则用soft最安全,只撤销仓库区
有如下两种功能
git checkout name # 切换分支
git checkout -b name # 创建分支并切换代码,即git branch name ; git checkout name
git checkout . # 放弃工作区中的全部文件修改
git checkout -- filename # 放弃工作区中某个文件的修改
git checkout -f # 强制放弃index和工作区改动
rm t.txt # 删除当前路径下的t.txt文件
git checkout -- t.txt # 恢复本地文件
说明:
实验前置操作
rm t.txt # 删除t.txt文件
git add t.txt # 提交的暂存区
查看远程地址
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/
1 添加SSH Keys (本机的用户目录下的.ssh)
添加到github 账户中
2 在 github上创建仓库
3 本地仓库和远程仓库关联
git init
git add he.py
git commit -m "first commit file"
git remote add origin [email protected]:onceone/GitTest.gitranhou
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]
先克隆远程仓库到本地,然后开发
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