git 基础命令
我们即将学习的内容将包括如下几个部分(扮演不同角色):
1) Basic Repository Command:每个操纵git的人都需要掌握
2) Individual Developer (Standalone):独立开发者需要掌握
3) Individual Developer (Participant):合作开发者需要掌握
4) Integrator:项目汇总人需要掌握
5) Repository Administration:仓库管理员需要掌握
我们都会使用这些命令来完成最基本的工作:
git-init或git-clone来创建git仓库
git-fsck来检查仓库的错误
git-gc用来完成一些琐碎的工作,比如重组或删减。
git-show-branch:可以显示你当前所在的分支以及提交记录。 git-log:显示提交日志 git-checkout或者git-branch:用于切换和创建分支 git-add:用于将修改内容加入到index文件中 git-diff和git-status:用于显示开发者所做的修改 git-commit:用于提交当前修改到git仓库。 git-reset和git-checkout:用于撤销某些修改 git-merge:用于合并两个分支 git-rebase:用于维护topic分支(此处我也不太懂,等完成git学习后转过头来会关注此问题) git-tag:用于标记标签。
bogon:aha lakeslove$ git show-branch ! [ahaback] 这是ahaback目录下的文件 * [master] 解决pull引起的冲突 ! [test] 添加输入说明,并重新编译 --- - [master] 解决pull引起的冲突 +* [ahaback] 这是ahaback目录下的文件 * [master^] 删除程序开始 +* [master~2] 在test2中编译 +* [master~3] 编译 -- [master~4] Merge branch 'test' +*+ [test] 添加输入说明,并重新编译
git checkout — curses/ux_audio_oss.c //用于取消对curses/ux_audio_oss.c文件的修改
git reset –soft HEAD^ //head回复到上一次commit的代码。–soft选项表示不改动index file和working tree中的内容,
git reset HEAD^ //head和index回复到上一次commit的代码。不改动working tree中的内容
git reset --hard HEAD^ //working tree、index、head 都回复到上一次commit到代码
git-clone:复制别人的git仓库到本地
git-pull和git-fetch:保持和别人的git仓库的同步更新
git-push:共享方式。等同于CVS方式下的共享。
git-format-patch:利用邮件形式提交补丁。等同于内核开发方式。
我们总结的将是疑难知识点。 我提炼出来的需要解决的疑难问题包括: 1 commit和commit -a的区别 2 log -p的中-p的作用 3 merge的用法及参数用法 4 fetch的用法 5 pull的用法 6 commit信息详解 7 HEAD的含义及相关用法,ORIG_HEAD的用法以及其他常量的使用方法 8 tag的用法
log -p的中-p的作用
git log:显示commit日志
git log -p:不仅显示commit日志,而且同时显示每次commit的代码改变。
merge的用法及参数用法 git-merge主要用于将两个或两个以上的开发分支进行合并。 git merge branchname 用于将branchname分支合并到当前分支中。(如果合并发生冲突,需要自己解决冲突) 当merge命令自身无法解决冲突的时候,它会将工作树置于一种特殊的状态,并且给用户提供冲突信息,以期用户可 以自己解决这些问题。当然在这个时候,未发生冲突的代码已经被git merge登记在了index file里了。如果你这个时候使 用git diff,显示出来的只是发生冲突的代码信息。 在你解决了冲突之前,发生冲突的文件会一直在index file中被标记出来。这个时候,如果你使用git commit提交的话, git会提示:filename.txt needs merge 在发生冲突的时候,如果你使用git status命令,那么会显示出发生冲突的具体信息。 在你解决了冲突之后,你可以使用如下步骤来提交: 第一步:git add filename.txt 第二步:git commit 如果你希望撤销一个分支到merge前的状态,那么使用如下命令: $ git reset –hard HEAD //–hard表示将working tree和index file都撤销到以前状态 在这先偷偷的告诉你,–soft表示只撤销commit,而保留working tree和index file的信息,–mixed会撤销commit和 index file,只保留working tree的信息。OK,如果你能记住–hard、–mixed和–soft的区别,那最好,如果记不住,也不用 自责啦,以后还会讲到。
fetch的用法 git-fetch用于从另一个reposoitory下载objects和refs。 命令格式为:git fetch <options> <repository> <refspec>… 其中<repository>表示远端的仓库路径。 其中<refspec>的标准格式应该为<src>:<dst>,<src>表示源的分支,如果<dst>不为空,则表示本地的分支;如果 为空,则使用当前分支。 git fetch /home/bob/myrepo master:bobworks :用于从bob的工作目录的master分支下载objects和refs到本地的 bobworks分支中。 5 pull的用法 git-pull的作用就是从一个repository取出内容并合并到另一个repository中。 git pull是git fetch和git merge命令的一个组合。 git pull /home/bob/myrepo 这个命令的意思是从此目录中取出内容并合并到当前分支中。 git pull .就相当于git merge。