git自己操作命令组集合
一、总结
一句话总结:
1、官方有非常详细的中文文档资料,任何组件或者插件记得看有没有文档资料,这个用起来快,配合百度。
2、git clone命令是直接把git仓库上面的代码clone下来,所以你可以注意一下git仓库代码的长相(文件层次结构)
3、有(点).git的就是git本地仓库,git所有的配置都在里面的config文件里面
4、git命令:直接就是git 加那些动词,然后可能有一些 -什么 的属性。
二、将远程git的m_Orchestrate仓库的2018_4_18_second分支的代码弄到电脑上来
1、在要放置代码的位置建一个文件夹,这里我建的文件夹名为m_Orchestrate(注意:这里不该新建目录, 应该直接拉到github目录下)
全路径为:E:2017-02-21--SoftWarePHPSOFTWAREphpStudy_NewPHPTutorialWWWgithubm_Orchestrate
也就是在github文件夹下面建了一个名为m_Orchestrate的文件夹
2、获取github上面这个仓库的地址:(仓库上面2018_4_18_second分支地址和master分支的地址是一样的)
这里是:https://github.com/fry404006308/m_Orchestrate.git
3、用git clone命名把仓库里面的代码clone到上面建的文件夹里面
3.1 打开git bash先跳转到上面的路径:
cd E:\2017-02-21--SoftWare\PHP\SOFTWARE\phpStudy_New\PHPTutorial\WWW\github\m_Orchestrate
3.2 执行clone命令克隆代码到上述文件夹
全命令如下:git clone https://github.com/fry404006308/m_Orchestrate.git
注意:此时新建文件夹m_Orchestrate里面的代码时master分支里面的代码,不是我们要的2018_4_18_second分支的代码
4、然后git branch列出本地分支
但是此时报错,显示当前目录不是一个仓库,的确不是一个仓库。
所以此时如过切换到下一个m_Orchestrate文件夹就会显示是仓库了
注意:说明最开始不应该在github下面建m_Orchestrate文件夹的。
5、所以我们重新来,不再github文件夹下面建m_Orchestrate文件夹,直接把代码弄到github文件夹里面,其余上述步骤照旧
5.1 进到github文件夹下
cd E:\2017-02-21--SoftWare\PHP\SOFTWARE\phpStudy_New\PHPTutorial\WWW\github
5.2 把https://github.com/fry404006308/m_Orchestrate.git仓库上面的代码克隆下来
git clone https://github.com/fry404006308/m_Orchestrate.git
5.3 进入 m_Orchestrate 文件夹,也就是进入git仓库
cd m_Orchestrate
5.4 新建本本地分支2018_4_18_second并将远程分支2018_4_18_second上的东西拉下来
git checkout -b 2018_4_18_second origin/2018_4_18_second
然后分支就成功切换了
然后检查代码,发现代码也是远程分支2018_4_18_second上最新的。
完成。
三、自己常用的git命令集合
cd E:\2017-02-21--SoftWare\PHP\SOFTWARE\phpStudy_New\PHPTutorial\WWW\github\m_Orchestrate git checkout -b 2018_4_18_second git pull https://github.com/fry404006308/m_Orchestrate.git git pull https://github.com/fry404006308/m_Orchestrate.git 2018_4_18_second 提交 git add . git commit -m "提交信息" git push -u origin 2018_4_18_second git push -u origin master 初次 git clone https://github.com/fry404006308/m_Orchestrate.git 删除本地分支::git branch -d 2018_4_18_second 切换分支: git checkout master 新建本本地分支并将远程分支上的东西拉下来: git checkout -b 2018_4_18_second origin/2018_4_18_second # 列出所有本地分支$ git branch # 列出所有远程分支$ git branch -r # 列出所有本地分支和远程分支$ git branch -a # 新建一个分支,并切换到该分支$ git checkout -b [branch]
.git下的config文件就是显示的当前的一些用户,仓库地址信息
四、官方文档阅读总结
1、官网文档下载地址
Git - Book
https://git-scm.com/book/zh/v2
2、一次提交就是一个指针
3、分支合并中的快进(简单的指针右移)
在合并的时候,你应该注意到了"快进(fast-forward)"这个词。 由于当前 master
分支所指向的提交是你当前提交(有关 hotfix 的提交)的直接上游,所以 Git 只是简单的将指针向前移动。 换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。
4、分支合并中的三方合并
这和你之前合并 hotfix
分支的时候看起来有一点不一样。 在这种情况下,你的开发历史从一个更早的地方开始分叉开来(diverged)。 因为,master
分支所在提交并不是 iss53
分支所在提交的直接祖先,Git 不得不做一些额外的工作。 出现这种情况的时候,Git 会使用两个分支的末端所指的快照(C4
和 C5
)以及这两个分支的工作祖先(C2
),做一个简单的三方合并。
合并后:
5、git只需要30多个命令动词就可以玩转了
本书旨在讨论如何通过 checkout、branch、remote 等大约 30 个诸如此类动词形式的命令来玩转 Git。
6、. git目录(git所有的东西)
当在一个新目录或已有目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含了几乎所有 Git 存储和操作的对象。 如若想备份或复制一个版本库,只需把这个目录拷贝至另一处即可。 本章探讨的所有内容,均位于这个目录内。
7、Git对象(简单的键值对数据库)
Git 是一个内容寻址文件系统。 看起来很酷, 但这是什么意思呢? 这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。 可以通过底层命令 hash-object
来演示上述效果——该命令可将任意数据保存于 .git
目录,并返回相应的键值。
8、Git引用(分支名)(看.git/refs
目录和能清晰)
我们可以借助类似于 git log 1a410e
这样的命令来浏览完整的提交历史,但为了能遍历那段历史从而找到所有相关对象,你仍须记住 1a410e
是最后一个提交。 我们需要一个文件来保存 SHA-1 值,并给文件起一个简单的名字,然后用这个名字指针来替代原始的 SHA-1 值。
在 Git 里,这样的文件被称为“引用(references,或缩写为 refs)”;你可以在 .git/refs
目录下找到这类含有 SHA-1 值的文件。
五、合并分支
1、先切换到主分支
切换分支: git checkout master
2、用git merge和并分支到主分支
主分支合并2018_4_18_second分支:git merge 2018_4_18_second