初始化一个新的代码仓库,做一些适当配置;

有两种取得 Git 项目仓库的方法。
第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。
$ git init

第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。
$ git clone git://github.com/schacon/grit.git
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit

开始或停止跟踪某些文件;如何让 Git 忽略某些文件,或是名称符合特定模式的文件;

//此为注释 – 将被 Git 忽略
//忽略所有 .a 结尾的文件
*.a
//但 lib.a 除外
!lib.a
//仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
//忽略 build/ 目录下的所有文件
build/
//会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
//ignore all .txt files in the doc/ directory
doc/*/.txt
此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。
要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从(1)暂存区域移除),然后提交。

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),(2)但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:
$ git rm --cached readme.txt

移动文件

$ git mv README.txt README
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

    renamed:    README.txt -> README

其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.txt README
$ git rm README.txt
$ git add README
如何既快且容易地撤消犯下的小错误;
如何浏览项目的更新历史,查看某两次更新之间的差异;
以及如何从远程仓库拉数据下来或者推数据上去。

git 分支

git提交一个文件,会提交一个commit对象,代表此次commit。其指向一个tree对象,里面包含了此次提交的文件对象的一个索引:
18333fig0301-tn.png

多次提交后,如下:18333fig0302-tn.png

新建一个分支:这会在当前 commit 对象上新建一个分支指针
$ git branch testing
或者
$ git checkout -b iss53
等于
$ git branch iss53
$ git checkout iss53

18333fig0305-tn.png

要切换到其他分支,可以执行 git checkout 命令。我们现在转换到新建的 testing 分支:
$ git checkout testing18333fig0306-tn.png
现在,在testing分支和master分支分别提交一次,就会如下:
18333fig0309-tn.png
一般这种情况是,有重大版本的时候,先在下一个版本开发,如果上一个版本要改bug,再切回上一个版本,再新建一个分支去改bug,改完合并,等下个版本开发完后,两个分支再合并。

git分支合并

$ git checkout master
$ git merge iss53

git branch 命令不仅仅能创建和删除分支,如果不加任何参数,它会给出当前所有分支的清单:
$ git branch
iss53

  • master
    testing

要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 --merged 和 --no-merged 选项(Git 1.5.6 以上版本)。比如用 git branch --merged 查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游。):
$ git branch --merged
iss53

  • master
    之前我们已经合并了 iss53,所以在这里会看到它。一般来说,列表中没有 * 的分支通常都可以用 git branch -d 来删掉。

删除已合并分支

$ git branch -d testing


Lizzy0077
73 声望7 粉丝

前端