git 命令

来源:互联网 发布:淘宝售后怎么赚钱 编辑:程序博客网 时间:2024/06/05 17:30

原创:http://blog.sina.com.cn/u/2312748742 在此特别感谢小布老师的帮助。

1)git config --global user.name /user.email +用户名/email

2)git init 初始化git,新建仓库。

3)git log 查看日记。git log -p,详细日记。

4)git status 查看状态

5)git add . 要提交的文件。 .为这个文件夹

6)git commit 真正把要提交的文件保存到仓库中。

  前面两个命令可以用 git commit -a -m"信息"

7)git branch 创建分支

8)git checkout experiment 切换分支 。接下去在这个分支工作。。。。。。

9)提交分支工作,并且切回到主干。

10)git merge experment 合并分支到主干。

11)git branch -d experiment 删除分支。

12)git ls-files --deleted 查看删除的文件

13)git checkout test/ 恢复文件

14)git diff 比较差异

15)git revert恢复到之前的索引。

 例子:

16)当git add .后又不想放到缓存了。想撤出怎么办:

使用git reset HEAD<那个文件名>  。可以用giestatus查看。

17)当改了一些文件后想返回怎么办,输入  git status可以看到有改过的文件会出现Changed but not updated ,此时如果你不想改了,可以gitcheckout --<file> ,返回。此命令是把原来的版本覆盖过来。

 

18)当git commit -m "信息" ,当不要了这个怎么办,使用 git rest --soft HEAD^此命令会把git log里的记录返回到之前的,也可以用git commit -a -c ORIG_HEAD 重新再定义信息。

git原理分析:

.git仓库里其实有branches/config/description/HEAD/hooks/info/objects/refs

1)git采用有改变就保存起来,没有采用什么修改算法等。

2)git可以用--globle保存全局的个人消息。也可以用 .git/config 里的局部消息

3)有三个地方,一、git init后有一个.git这个就是Repository放保存的仓库。

4)二、working directory 工作区

5)三、staging area/index缓存区。

6)上面三个顺序,二 -> 三 ->一  ,其中 二到三 用git add 三到一 用gitcommint  。如果也可以用 git commint -a 来让git 自己执行 二到三

7)从仓库里取出来恢复文件 用 git checkout -f HEAD , 只要.git这个仓库不丢失,其它工作区的文件无所谓。

8)git其实有三个对象,这个是git的核心。 first :blob,这个是叶子,真正的文件。second :tree,树,其实这个就是目录,它指向了blob,third:commit,这个是历史记录的。没commit一次,就有一个,它指向tree.

9)git hash-object <file>,这个是HSA1值,哈希值,它代表file。

10)find .git/objects/ -type f 列出普通文件

11)git show <哈希值> 。可以显示文件内容。

12)git cat-file -t <哈希值>。显示文件时tree还是 blob 或者 commit.

13)tree 对象。有 blob/tree 。 gitls-tree <哈希值>

14)git保存的原理它内容和文件名是分离的,如果内存相同而文件名不一样,则它只保存一份内容。文件名称由tree保存。

15)commint对象: 里面有tree/parent/auther/commiter 用git show -s -pretty =raw <哈希值>

16)blob对象。正真的文件。压缩成哈希值作文件名称。

17)tag对象也可以称另一个对象。它是标签。用在 commit -m “标签” 。

18)References 引用、有 HEAD,branches .romote brach

19) 打入标签; git tag V1.00.00.01 或者创建标签对象 。 gittag -a <标签名> -m "描述信息"

20)查看标签: ls .git/refs/tags/

21)提取之前的版本。

  cat.git/HEAD           看他的头指向哪里

  cat.git/resf/heads/master   

  cat .git/refs/tags/

  提取对应的版本并压缩:

  git archive --format=tar--prefix=/<gitspace存放文件夹> V1.0(标签) |gzip   >/workspace/kylin/v1.0.tar.gz

22)用 git checkout v1.0 ./   其实同上,它是先去找.git/refs/tags/v1.0 找到这个记录的希哈值。通过这个希哈值找了tag标签,标签就指向了commit ,commit指向了tree,tree指向了blob,因此就都找到了。

23)合并冲突后应手动去更改,然后再主分支上commit一次即可。

24)合并后要删除分支:git branch -D testing

25)有些不想放到仓库里应该用 .gitignore 文件,然后把不想放仓库的文件名写到.gitignore里面

26)git diff --staged 或者git diff 比较workspace VS staged

27) git diff --cached: 比较 staged VS local reperety

28)删除git rm <文件名>

29) git reset --head <commit 名>恢复到哪个版本 缓冲区,工作区,heard都没了。还原到原来的版本

   ①替换引用的指向。引用指向新的提交ID。

   ②替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。

   ③替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。

30)git reset 表示撤销缓存区。 (默认为--mixed),更改引用的指向及重置暂存区,但是不改变工作区

31) git reset --soft <commit名>  只更改引用的指向,不改变暂存区和工作区.

32) git 不同节点的某一个文件的比较: git diff   26665422dd22  s225df5585x222   --   aa.c
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(32) | 评论(0) | 转发(0) |
0

上一篇:SecureCRT home end 键更改

下一篇:android service传递并获取参数 之 transact

相关热门文章
  • linux 常见服务端口
  • 【ROOTFS搭建】busybox的httpd...
  • xmanager 2.0 for linux配置
  • 什么是shell
  • linux socket的bug??
  • 请问Linux默认shell的是什么 ...
  • 谁能够帮我解决LINUX 2.6 10...
  • 现在的博客积分不会更新了吗?...
  • shell怎么读取网页内容...
  • ssh等待连接的超时问题...
给主人留下些什么吧!~~
原创粉丝点击