![3bad2e140eeb8017769d77d6fe9e5ef8.png](https://i-blog.csdnimg.cn/blog_migrate/4e72c6c6e6f98e32be97ce51e49bad6c.png)
有了上一篇的简易Git使用指南,接下来我们就可以创建自己的代码库了
创建代码库
1.把文件夹变成git文件夹
git init
这样子就这里面的内容就可以git了
2.把要git的文件放入暂存区
git有三个空间: Working Directory工作区,Staging Area暂存区,Repository仓库
![cc04bf78e53585bcc07093d06c36aa46.png](https://i-blog.csdnimg.cn/blog_migrate/f0dc2b1bd36101cdb067d7aca63c29a0.jpeg)
工作区里面有三个txt文件,然后把cookie和bread放到暂存区,之后一次提交,就会一次性把staging area里面的所有东西(包括cookie和bread)提交到repository
git add cookie.txt #把cookie.txt放到暂存区
git add bread.txt #把bread.txt放到暂存区
如果某个文件被意外的放进了暂存区,可以使用 git reset cake.txt #从暂存区中删除cake.txt
查看文件的状态,可以使用 git status
![b87e973bb8b5b62d4aae8733ea7363ba.png](https://i-blog.csdnimg.cn/blog_migrate/e0092970adfe23eefa006737ad921634.jpeg)
3.对文件进行编辑
4.提交本次的编辑
当我们已经完成了一个版本的编辑之后,就可以提交了,输入 git commit
就会弹出如下的一个编辑器,我的是Sublime,在最上面添加本次修改的主要修改内容。如果想要使用其他的编辑器,可以查看本文”其他问题“
![55ca60f29647745663d901570686ee4e.png](https://i-blog.csdnimg.cn/blog_migrate/6aecbb6296756d7a09da3f02f351f55e.jpeg)
如果做了很多次修改以及上传,想要查找之前修改的不同版本,用 git log
即可,就会出现每次修改版本的快照
![57cb0e1bace6a76188e98ae63926813f.png](https://i-blog.csdnimg.cn/blog_migrate/1b6f61a88126e4599f2761b1eb1870fc.jpeg)
修改代码库
1.git diff
在简易Git使用指南这篇文章中我们已经学过了git diff这个命令,可以对比两个不同的commit的之间的差别,那么假如我们修改了代码,然后 出去喝了点水,和同事聊聊天,回来之后忘记自己修改了哪些代码,也没有提交commit怎么办呢? 换句话说,git diff除了对比 commit1和commit2,可以对比工作目录和暂存区吗?
![a6b465bda832dcadea84181a408766c5.png](https://i-blog.csdnimg.cn/blog_migrate/278b0a7ba10d906b08b64c866141992f.jpeg)
当然可以!
git diff #对比working directory和staging area
git diff --staged #对比staging area和commit1
git diff commit1 commit2 #对比commit1和commit2
2.创建分支
![b8b9b516791d186120d7c6967ae894c4.png](https://i-blog.csdnimg.cn/blog_migrate/14d834e289d51de189dda5496bca5461.jpeg)
有的时候,我们可能会想要对自己工作的项目进行一个分支,比方说,Asteroids小游戏,我们想要试验一个简易的版本,同时又不想破坏原来的想法,就可以创建一个分支
git branch #查看目前都有哪些分支
git branch [branch_name] #创建一个新的分支
git checkout [branch_name] #当前为此branch
![a67214166ac1d89ed35fc70cc29ff41d.png](https://i-blog.csdnimg.cn/blog_migrate/58ec27208f054ce0ebbbb1e7bea4f156.jpeg)
如图,刚开始只有master主分支,然后我们创建了一个easy-mode的分支,然后当前分支设置为easy-mode,就可以看到小星星"* "移动到了easy-mode
如果想要看到某一分支什么时候产生的,可以输入以下代码来查看(这里的分支叫做coins) git log --graph --oneline master coins
( 请注意,在可以使用 git log 查看 coins 分支之前,你需要使用命令 git checkout coins
检出 coins 分支 )
![82e36e825f14795a66c6ed26b19fe8da.png](https://i-blog.csdnimg.cn/blog_migrate/854c233b665f6f389ccf39ea0b6a6e03.jpeg)
可以看到是在Revert controls之后产生了新的coins分支
3.合并分支
一个项目往往由不同的人同时开发,那么假如Jack创建了一个分支,对代码做了修改,Rachel也创建了一个分支,对代码做了修改,最终项目要合并。 首先我们先看一下项目合并的话,哪些代码会被保存下来,例子如下,初始的代码是ABD,然后Jack的代码是BDE,Rachel的代码是ABCD,那么最终合并的时候,由于A在初始的代码里面,但是被Jack删掉了,所以final不会有A,而BD存在于初始,Jack,Rachel的代码里面,保留,C和E分别都是初始没有的,但是后来添加上的,也保留
![8dad092b7506a2eb5d5d854d9d985677.png](https://i-blog.csdnimg.cn/blog_migrate/7e8df139f850258a6422886275817888.jpeg)
合并分支还会产生一个问题就是,你想要合并哪些分支?并且合并之后可能会删除其中一条分支的标签,怎么确定要保留哪个分支的标签,删除哪个分支的标签呢? 如果当前分支为branch1,并且运行git merge branch2 branch3
,则合并的版本会将 branch1 以及 branch2 和 branch3 组合起来。 如果当前分支为branch2,运行git merge branch2 branch3
,则将 branch2 和 branch3 组合起来,且branch2指向新的提交(即把branch3合并到了branch2上面,branch3的标签删掉
这部分详情请点击Udacity通过命令行合并
合并之后有的时候会报错,因为会有一些代码冲突,那么就需要人为的在代码上面进行修改了
至此,git的基本用法就学完了,接下来可以利用Github进行协作
其他问题
如何修改默认编辑器
只需输入下面的代码就可以了,此处我用的是Sublime,当然也可以使用Notepad++等的编辑器,地址为此编辑器的exe地址
git config --global core.editor "'C:Program FilesSublime Text 3/sublime_text.exe' -n -w"
任妍Carol:机器学习小白笔记目录zhuanlan.zhihu.com