git

git diff 后直接按n按键--快速找diff关键字

 

reset命令:

第一步. 移动HEAD指针 git reset --soft HEAD~

第二步. 更新索引 git reset --mixed HEAD~

第三步:更新工作区 git reset --hard HEAD~ //这一步会真正销毁你所修改的文件内容,谨慎处理。

 

直接用 git reset HEAD~ ,相当于第二步,修改的文件内容还在,只是需要重新add(这条命令正好和git add反着来)

git reset HEAD test.txt 和上面一行的命令效果一样。

git reset eb43df test.txt //指定某一个提交的文件来回退。仅仅改变暂存区的记录,工作区和提交的不变。

 

git 文件(也叫数据对象)有三种模式:1.普通文件->100644 2.可执行文件->100755 3.符号链接->120000

git cat-file -t hash_value // -t查看SHA-1值指向的对象类型, p参数可将hash指定的值显示为看得懂的内容

git ls-files --stage //查看暂存区(也叫索引)的内容,暂存区保存的只是个索引,真正的文件存在git/objects

 

步骤一:

echo 'test content' | git hash-object -w --stdin //hash-object命令可以存储git文件,并返回对应键值。

Git 以对象类型作为开头来构造一个头部信息,本例中是一个“blob”字符串。 接着 Git 会添加一个空格,随后

是数据内容的长度,最后是一个空字节(null byte)。Git 会将上述头部信息和原始数据拼接起来,并计算出这条新内容的 SHA-1 校验和,比如原始内容为“version 1”,则拼接后为"blob 9\u0000version 1",然后计算SHA-1校验和。

git存储内容的方式为:一个文件对应一条内容,这个文件存储在objects目录下,文件名以SHA-1值命名;而内容则为git add的目标文件(即使你只是改动了一行代码,它也会将整个c文件的内容计算为一个SHA-1值并生成一个新的文件存在objects目录下)。

步骤二:

上述的hash-object操作只是保存了文件的内容,文件名test.txt没保存。所以需要一个树对象这样一个目录结构来保存。

git树对象有两个作用:1.可以解决文件名保存的问题 2. 可以将多个数据对象或者树对象结合一起。

创建树对象,首先得把数据对象的哈希值罗列到索引区中:

git update-index --add --cacheinfo 100644 \

83baae61804e65cc73a7201a7252750c76066a30 test.txt //这个就是git add的底层操作

然后创建树对象:git write-tree //这一步才真正创建了一个可用于commit的树对象

暂存区和树对象会随着add越来越大,这个怎么理解????

步骤三:

上述的树对象同样也只有一个哈希值对应,没有指明作者等一些基本信息,不方便查看,commit可以解决这个问题。

commit对象作用:保存每一笔提交的基本信息,包括树对象、作者、父提交对象、注释。

echo 'first commit' | git commit-tree d8329f //为树对象d8329f 创建一个commit id

echo 'second commit' | git commit-tree 0155eb -p fdf4fc3 // -p 后指定父提交对象

步骤四:

创建引用对象。

git引用就是每一笔提交的SHA-1值的别名,比如master、tag。

git update-ref refs/heads/master SHA-1 //用git log SHA-1 和git log master 效果一样

Git 分支也是一种引用。当你用git branch 新建一个分支时,git实际上会运行update-ref命令,去取得当前master分支最新的 SHA-1 值,然后赋给refs/heads/branch_name

HEAD指针也是一种引用,它是一个指向master的指针。

cat .git/HEAD 可查看HEAD指向。

git reset head^ 回溯到上个版本,只是修改了commit,修改的文件还没回溯。

远程引用,位于.git/refs/remotes/目录下,只是用来记录服务器分支的状态。

 

git branch -v 查看每个分支最后一次提交

查看单个文件的修改状态

git log -p filename //可以显示该文件的每次提交的diff

git show commit-id filename //查看某次提交中的单个文件的变化

 

删除服务器文件,然后再push一版,此时github上已经不存在了

git rm --cached useless.log

git commit -m "remove file from remote repository" git push

 

2. git add file

把新增的或者修改的文件添加到暂存区中(有新增的文件,此命令一定要用,不然追踪不到,也就提交不了)

查看工作区与暂存区之间的差异信息:git diff

撤销已修改还未提交到暂存区的修改项: git checkout -- file (checkout管不了已经add到暂存区的文件)

撤销已经提交到暂存区的修改项:git reset HEAD file (只是撤销暂存区的修改项,工作区的不会撤销,想要撤销工作区的还需checkout)

3. git commit

把暂存区的包提交到本地仓库中

查看暂存区和最近commit区之间的差异信息:git diff --staged

查看已经commit信息:git show

撤销已经commit的修改项:git reset --hard origin/master(origin/master 指针还未移动到本地最新的commit上)

修改commit注释:git commit --amend

4. git push origin master

上传到远程仓库中。

查看修改信息:git show / git diff master origin/master

撤销远程仓库的修改项:git reset --hard commitID

 

切换到远程分支:

  1. 确保在最新的本地master上(如果本地master不是最新,则会出现 updating paths is incompatible with switching branches.)
  2. 确保工作目录是干净的(可以用git clean -df),然后git checkout -b newLocalBranch tag (新建新的分支newbranch并切换过去,新的分支可以不用跟远程分支名一样,此处的tag既可以是origin/master上的,也可以是origin/other_branch 的)

或者用 git checkout -b newLocalBranch origin/branchname

  1. git push origin newLocalBranch:remoteBranch

(git push <远程主机名> <本地分支名>:<远程分支名>)

 

git remote 查看远程仓库名(也叫远程主机名),一般叫origin

git remote -v 查看当前远程分支的路径

git push/add 之前一定要先 git pull 来拉到最新code

 

版本回退

git reset --hard 加 git clean-df (确保clean的目录是在工作文件夹里,最好先cd)

版本向前

git reflog 查询回退后消失的版本,然后reset --hard

git log --name-status 每次修改的文件列表, 显示状态
git log --name-only 每次修改的文件列表
git log --stat 每次修改的文件列表, 及文件修改的统计
git whatchanged 每次修改的文件列表
git whatchanged --stat 每次修改的文件列表, 及文件修改的统计
git show 显示最后一次的文件改变的具体内

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值