git 知道这些就够了
git status
可以查看当前仓库的状态信息。
如果在仓库创建两个新文件,index.html 和 index.js。
在执行一下 git status
。
git add <文件名>
输入git add <文件名>
可以将单个文件加入暂存区。
再次查看状态:发现 index.html 绿了
如果要把全部文件加入暂存区,可以使用 git add .
命令。
OK,他全家都绿了。
git commit -m
使用 git commit -m <描述>
命令提交变更。
这样,就提交了 commit 。
git log
可以通过 git log
命令查看日志。
通过日志,我们可以看到什么人在什么时间提交了什么日志。每一个commit会生成一个哈希值,这个值是唯一的。
接下来我们修改一下 index.js 文件,简单的加几行代码。
加完三行代码,然后在查看状态。
发现又出现红色的文件,红色的文件表示有新的变更,然后重复之前的步骤,提交一下代码。
注意,git commit
只提交那些被绿了的文件。
git reset <文件名>
当你 add 了一个文件,但是又后悔了,觉得本次提交不该包含这个狗东西的时候,在commit之前,我们可以使用 git reset
来讲绿色的重新变成红色的。
文件状态
文件是有状态的
变更
变更就是对比仓库文件和现有文件之间的差异,如果一致,则认为unmodified,也就是说,只要提交了,就是 unmodified。
自定义命令 alias
git 常用命令
设置自定义命令:找到git安装目录,打开 gitconfig文件
然后就可以设置自己的 alias。
回退 Reset
如果我们提交了多次,就像上面我们提交了两次,但是我觉得第一次提交的好,我想回到第一次提交的状态,可以先找到当时的 commit ID,然后通过 git reset <commitID>
将文件恢复到当时提交时的状态(指文件内容)。
关于 --hard 参数加不加的区别后面会说,然后 git log
看一下提交日志。
发现第二次提交没有了,哈哈哈哈。
假如说,你有他妈的后悔了,想回到最新的 commit 怎么办,这是后可以使用 git reflog
命令查看所有的操作记录,在当中找到你想回退的 commitID 再次使用 git reset
命令即可回到最新的版本。
这时候发现这个 commitID 和之前不一样长是吧,其实是一样的,其实 commitID 只要前七位就可以锁定是那个 commit 了,所以输入全部和输入前七位是一样的。其实如果想回到最新的,直接使用git pull
也行,后面会说。
git reset 的模式
reset 是可以重置到某个 commit 状态的。那么 reset 之后的文件变更去哪里了,这里就受到了 reset 模式的影响。
分支 Branch
我们可以使用 git checkout -b <name><template>
命令创建新的分支。后面跟两个参数,第一个参数是新分支的名字,第二个参数是指以哪个分支或者是 commit 为模板,如果第二个参数不填,则以当前所在分支为模板。这个模板的意思?
我们每次 commit 是记录在当前分支中的,假如我们以这个分支为模板,新切一个分支,新分支的记录会继承自模板分支。
但是请注意,切完分支后,分支的改动都和其他分支不在有关系。
新切一个分支叫 bc-a 。
查看日志,发现他继承了模板分支。
然后修改一下
在 bc-a 分支提交一个 commit。查看日志在 bc-a 分支有新的commit 提交。
这个在 bc-a 分支提交的commit ,在 主分支会有吗?
使用 git checkout master
可以切换回主分支。
好的,主分支没有记录。
接下来可以通过 git branch
来查看所有分支。
高亮的条目代表我们现在所处的分支,这样的话我们想要去某一个 commit 就可以通过切换分支而不是去找 commitID,这样还是挺方便的。
合并 merge
如果我们需要合并其他分支的变更,我们使用 git merge <branchName>
命令即可合并分支变更,注意,是分支变更,不是分支内容。
远程仓库 Remote
之前所有的骚操作都是在我们自己本地电脑里面执行的单击小游戏玩法。
切换到 bc-a 分支,然后提交 bc-a 分支到远程仓库是失败的,因为远程仓库没有 bc-a,所以我们使用下面提示的命令在远程仓库创建 bc-a。
git push -set-upstream origin bc-a
拉取远程仓库信息
git fetch
上面的命令只是知道远程仓库有一个 bc-a 分支,但是本地是没有的。
查看本地分支
先 git fetch
然后 git checkout bc-a
模板分分支来自远程仓库,就不需要设置上流分支了。
在前面,专门讲 branch 的命令格式 git checkout -b <name><template>
,但是,如果 trmplate 不是本地的,是来自远程仓库的话,需要在 template 前面加一个 origin ,也就是 git checkout -b <name> origin <template>
。
git pull
git pull
等于 fetch
+ merge
变基 Rebase
搞错了,不是上面的变基,是下面的...
变基简单点就是重新排列 base,而 base 就是指 commit 。
在分支变基:
git rebase master
变基完成, add 到暂存区,使用
git rebase --continue
执行下一个 commit 的 rebase,直至完成。