git命令

admin 2022年1月6日01:30:32评论41 views字数 2742阅读9分8秒阅读模式

突然在文件里看到了一个git命令脑图,整理得挺好的。

git提交本地分支到远程分支

1.在本地项目的文件夹下,git仓库初始化

1
git init

2.将本地文件索引添加至git库中

1
git add *

3.

1
2
git commit -m "first" 
# -m 后为提交日志

4.可查看本地仓库分支,发现会出现一个master的分支

1
2

git branch

5.配置远程仓库

1
2
git remote add test http://[email protected]/scm/wbqa/xxxx.git
# test 为远程仓库别名 后面http 为远程仓库地址

6.配置完成后,可使用 git remote -v 命令查看是否生效

1
git remote -v

7.创建分支

1
git branch web

8切换到新建的分支

1
git checkout web

8.使用push命令,将代码提交到远程仓库分支

1
$ git push test web

如果出现如下错误

1
2
3
4
5
6
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/xx/xxx'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

尝试-f

1
2

git push -f test master:jenkinsapi

.git文件详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.git
|   config #项目的配置文件
|   description # 仓库的描述信息,主要给gitweb等git托管系统使用
|   HEAD #此文件永远存储当前位置指针,指向当前工作区的分支
|   index #index也称为stage,是一个索引文件。当执行git add后,文件就会存入Git的对象objects里,并使用索引进行定位。所以,只要执行了git add,就算工作目录中的文件被误删除,也不会引起文件的丢失;创建了一个提交(commit), 那么提交的是当前索引(index)里的内容, 而不是工作目录中的内容。
packed-refs
|   COMMIT_EDITMSG # 保存最新的commit message,Git系统不会用到这个文件,只是给用户一个参考。
+---hooks  # 放一些shell脚本,可以设置特定的git命令后触发相应的脚本。hooks里存放 git 提交的各个阶段文件,用于在 git 命令前后做检查或做些自定义动作
|       applypatch-msg.sample #用于 git am 命令提交信息校验
| commit-msg.sample # git commit 之前,编辑器退出后触发,传入 COMMIT_EDITMSG 文件名
| fsmonitor-watchman.sample # 配合 core.fsmonitor 设置来更好监测文件变化
| post-update.sample # git push 之后,服务端更新每一个 ref 时触发,用于针对每个 ref 作校验等
| pre-applypatch.sample # 用于 git am 命令执行前动作
| pre-commit.sample # git commit 之前,commit-msg 通过后触发,譬如校验文件名是否含中文
| pre-push.sample # git push 之前触发
| pre-rebase.sample # git rebase 之前触发,传入 rebase 分支作参数
| pre-receive.sample # git push 之后,服务端更新 ref 前触发
| prepare-commit-msg.sample # git commit 之前,编辑器启动之前触发,传入 COMMIT_FILE,COMMIT_SOURCE,SHA1
| update.sample
|
+---info
|       exclude #初始化时只有这个文件,用于排除提交规则,与 .gitignore 功能类似。他们的区别在于.gitignore 这个文件本身会提交到版本库中去,用来保存的是公共需要排除的文件;而info/exclude 这里设置的则是你自己本地需要排除的文件,他不会影响到其他人,也不会提交到版本库中去
|       refs #如果新建了分支后,就会有此文件 ,用于跟踪各分支的信息。
|
+---logs # 保存所有更新操作的引用记录,主要用于git reflog等
|   |   HEAD #直接记录在所有分支上的操作
|   |
| \---refs
| +---heads
|       |       master #记录各自分支的操作记录
|       |
| \---remotes
| \---origin
| HEAD
|
+---objects # 所有文件的存储对象。在执行了git add之后,文件就已经存入objects里
|   +---info #记录对象存储的附加信息
|   \---pack #执行 git gc 后都会全部打包到 pack 里。.pack 存储对象文件,.idx 是索引文件,用于允许它们被随机访问
|           pack-8fdd1120297c68c8c389812f252037dfd1077afd.idx
| pack-8fdd1120297c68c8c389812f252037dfd1077afd.pack
|
\---refs #refs文件夹存储着分支和标签的引用
   +---heads #一般通过 git branch 生成,git show-ref --heads 可以查看
   |       master # 标识了本地项目中的master分支指向的当前commit的哈希值。
|
+---remotes
| \---origin
| HEAD
|
   \---tags #一般通过 git tag 生成。git show-ref --tags 可以查看

ctf考点

1
2
3
4
5
python GitHack.py http://123.207.178.76:8105/.git/
# 进入目录,进行回滚操作
git log # 输出所有的日志
git checkout "ea2b29" #切换分支或恢复工作树文件
cat index.php

参考文章:

解析.git文件夹,深入了解git内部原理

FROM :blog.cfyqy.com | Author:cfyqy

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:30:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   git命令http://cn-sec.com/archives/721699.html

发表评论

匿名网友 填写信息