git 使用笔记(一)

通常处理

初始化:html

$ git init

这样就会在当前目录建立版本库.git

经常使用指令:

添加文件:github

$ git add FILENAME

删除文件索引,而且删除文件数据库

$ git rm FILENAME

重命名:安全

$ git mv OLDFILENAME NEWFILENAME

提交更新,所有:分布式

$ git commit -a

查看日志.ide

$ git log

查看指定版本日志.grunt

$ git show xxxxx

切换分支.工具

$ git checkout BRANCHNAME

建立新的分支.fetch

$ git branch BRANCHNAME

就近建立一个分支,转移全部目前修改到此分支中, 其实就是建立分支和切换分支的合并操做

$ git checkout -b BRANCHNAME

实验完毕,发现可行提交后,直接返回主分支中进行合并.

$ git commit -a 
$ git checkout master 
$ git merge BRANCHNAME

分支合并,切换到须要合并的分支中,而后执行merge就可以合并.

$ git merge TARGETBRANCH

更多时候咱们须要远程操做.除了直接clone出来一个完整的仓库,须要追加更新.

$ git fetch git://xxxx.xxxx master:LOCALBRANCH

将远程仓库中的分支fetch到本临时分支后(例子中为origin:master),若是指定了分支,则会保存到指定分支中去(例子中为LOCALBRANCH).而后进行代码审核,最后再merge到主分支中去.

固然,也有的时候咱们对远程仓库中的代码有绝对信心,或者仅仅只是你一我的在维护,那么就能够直接获取而且合并.

$ git pull git://xxx.xxxx master

Git 记录的方式

Git 是一种分布式版本控制系统,客户端并不仅提取最新版本的文件快照,而是把代码仓库完整

image

图片来源:http://git-scm.com/figures/18333fig0103-tn.png

每次修改以后,Git 并非保存这些修改以后的差别变化,实际上就像一个照相机同样,将修改后的文件拍下做为文件快照,记录在一个微型的文件系统中。每次提交更新时,检查一遍全部文件的信息

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但尚未提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

Git 管理项目时,文件流转的三个工做区域:Git 的工做目录暂存区域,以及本地仓库

image

图片来源:http://git-scm.com/figures/18333fig0106-tn.png

工做区:就是电脑中能够看到的目录。
版本库:工做区中有一个隐藏目录 ".git" ,这个不算作是工做区,而是 Git 的版本库。

基本的 Git 工做流程以下:

第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区(对修改后的文件进行快照,而后保存到暂存区域。);
第二步是用 git commit 提交更改,实际上就是把暂存区的全部内容提交到当前分支;
第三步是用 git push 推送更改,将保存在暂存区域的文件快照永久转储到 Git 目录中。

若是是 Git 目录中保存着的特定版本文件,就属于已提交状态;若是做了修改并已放入暂存区域,就属于已暂存状态;若是自上次取出后,做了修改但尚未放到暂存区域,就是已修改状态

图片来源:image
git简明教程

分支

分支是用来将特性开发绝缘开来的。在你建立仓库的时候,master 是“默认的”分支。在其余分支上进行开发,完成后再将它们合并到主分支上。

从开发主线上分离开来,造成的分支能够在不影响主线的同时继续工做。git中的分支,不会建立源代码目录的完整备份,它的操做几乎在瞬间完成,在不一样分支之间切换也很轻松 git checkout brachname

image
图片来源:http://rogerdudler.github.io/git-guide/img/branches.png git简明教程

建立一个叫作“feature_x”的分支,并切换过去:

$ git checkout -b feature_x

切换回主分支:

$ git checkout master

再把新建的分支删掉:

$ git branch -d feature_x

除非你将分支推送到远端仓库,否则该分支就是 不为他人所见的:

$ git push origin <branch>

在项目中有不少文件不须要提交,好比IDE生成的项目文件,自动化工具 grunt等。在使用 git status 时,这些文件会列举在 Untracked files 中,有时候为了方便而使用 git add -A 命令的时候,会将这些没有被跟踪的文件添加到索引。

若是一个不当心将某个不须要提交的修改添加到了暂存区(git add *),即:staged。若是这时进行 commit 操做,这个不想提交的修改也会一同提交到本地仓库的 HEAD 中,固然只有 push 以后修改才会提交到远端的仓库。在 commit 以前,使用

$ git rm --cached filename

即可以把它从暂存区中删除,保留源文件。

这条命令只是在暂存区中将文件快照删除而已,并不会将源文件从项目中删除。若是想连同源文件一块儿删除可使用这条命令

$ git rm filename

比较提交 - git diff

使用 git diff 查看文件被修改的具体内容:

$ git diff filename

也能够用来比较项目中任意两个版本的差别,好比比较两个分支之间的差别:

$ git diff brach1..brach2

你可能还会看到下面这条看起来很是类似的命令:

$ git diff brach1...brach2

不一样之处在于:两个分支名之间的点的个数,后面这条也就是三个"."的命令将显示出 brach1 和 brach2 共有父分支和 brach2 之间的差别。

你一般用git diff来找你当前工做目录和上次提交与本地索引间的差别。

$ git diff

上面的命令会显示在当前的工做目录里的,没有 modified (添加到索引中),且在下次提交时 不会被提交的修改。若是你要看在下次提交时要提交的内容(staged,添加到索引中),你能够运行:

$ git diff --cached

上面的命令会显示你当前的索引和上次提交间的差别;这些内容在不带"-a"参数运行 "git commit"命令时就会被提交。

$ git diff HEAD

上面这条命令会显示你工做目录与上次提交时之间的全部差异,这条命令所显示的 内容都会在执行"git commit -a"命令时被提交。

相关文章
相关标签/搜索