git

来源:互联网 发布:修改手机机型软件 编辑:程序博客网 时间:2024/06/14 05:39

基本概念:

~、工作目录(working diretory)

  对文件进行编辑目录

~、暂存区域(staging area)

”所谓的暂存区域只不过是个简单的文件,一般都放在git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。“-- 《pro git》

~、Git 的本地数据目录(git  directory - repository)

”Git 用来保存元数据和对象数据库的地方,该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据“  -- 《pro git》

~、文件状态(file  state)

”我们可以从文件所处的位置来判断状态:如果是git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次
取出后,作了修改但还没有放到暂存区域,就是已修改状态。"  --《pro git》


命令介绍:

clone  url  将服务器端的仓库克隆到本地,并使用git对起进行版本控制,(clone = init + remote add url)


init 将当前目录进行版本控制


add

    add  <filenam>   将文件加到缓存区(Index / stage);

    add .  将工作区所有文件加到缓存区(.gitignore文件起效)


commit  就是提交修改到本地版本库中;

      -a

      --all

            自动保存被改动和被删除的文件(已经被保存在缓存区),但是新创建的、还没有告诉git的文件不会受影响



push  就是将本地修改的代码提交到远程服务器中;

    git push origin master:gh-pages  将本地master分支体提交到远端gh-pages分支

    git push origin :gh-pages删除远端分支

    git push origin gh-pages 将当前分支提交到gh-pages分支参考


pull  是将远程版本库的新变更下载合并到本地;(pull = fetch + merge)


checkout 切换分支;

    checkout  -b 选项可以创建并切换 到新分支

   checkout --orphan xxx 创建一个独立的xxx分支

    chechout -b release develop  从develp分支上创建一个release分支,如果当前分支就是develop分支,那develop可以不写。

checkout  签出一个分支或进入一个将要工作的目录checkeout讲的比较细



branch:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记

    branch branchName 以此名字创建一个分支。只创建不切换分支。

    branch -r列出远程分支

    branch -a列出本地分支和远程分支

    branch  -d  |  -D删除分支

    branch  -m  | -M oldBranch   newBranch  重命名分支。-M 强制重命名


remote  列出所有设置的远程源,eg:

git remote//it will be show:origineotherName
    remote add  remoteName url 添加一个远程源,(相当于给服务器端某仓库地址起了个别名,以后提交代码的时候只需要使用 origin别名即可)eg:

git remote add origin git://github.com/someone/another_project.git


status  查看文件状态


rm

    rm  --cached <file> .   清空缓存区,文件变成 unstage状态

    rm、git rm、git commit -am "..." 联系:http://yang3wei.github.io/blog/2013/02/03/git-rm-he-rm-de-qu-bie/


log  显示更为全面的commit 日志信息。显示结果eg:

commit fba638f1270683c45477b3e68480c60bbe4aec93Author: yongpeng yang <bugknightyyp@gmail.com>Date:   Thu Jul 11 20:28:35 2013 -0700    Initial commit


reflog  查看commitid 以及HEAD编号。显示结果eg:

fba638f HEAD@{0}: reset: moving to fba63cfc216d HEAD@{1}: revert: Revert "Initial commit"fba638f HEAD@{2}: initial pull

这个知识点来自:技术之旅 - GIT恢复删除的提交


 revert 还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值


reset

    reset  -q | --quiet  只返回错误信息

    reset  --mixed  重设HEAD 和 index(缓存区)

    reset  --soft  只重设HEAD

    reset  --hard  重设HEAD、index、源代码

    reset  HEAD <path> git index中path内容删除,重新放回working directory中   

tag:

      git tag v0.1  创建tag

      $ git push --tags  push (所有) tag 到 github(push tag 后github 就会出现该tag 的下载包)

配置/设置:

~、在windows下的文件的权限因为无法和linux上完全一致,所以用Git检出的文件权限可能显示为被更改。 另外因为windows下的换行和linux上也不一样,协作开发时也容易出问题。所以在windows上使用Git的同学需要加上以下2行配置参数:

git config --global core.filemode falsegit config --global core.autocrlf true第一句是忽略文件权限的改动。第二句是将文件checkout时自动把LF转成CRLF,check in 时自动把CRLF转成LF
这个知识点是来自:唐巧的技术博客-git使用感受

~、设置常用命令的别名

[alias]    st = status -s    ci = commit    l = log --oneline --decorate -13    ll = log --oneline --decorate    co = checkout    br = branch    rb = rebase    dci = dcommit
这个知识点是来自:唐巧的技术博客-git使用感受

小技巧:

~、stash应用场景技巧

     >、本地工作区还有未提交的内容时,不能pull?

可以先用 git stash 将内容暂存,然后再pull,成功后再git stash pop将修改恢复。

这个知识点是来自:唐巧的技术博客-git使用感受

      >、git stash:保存当前工作状态,这个命令可以保存当前本地工作区和暂存区中没有提交到本地仓库的改动,当你需要紧急切到其它分支但又不想提交改动的时候就用到它了。

这个知识点来自:窦圣伟 - git总结

~、如何用Git将一个文件的历史提交恢复?

上次遇到一个问题,我某次提交改动了很多文件,但是其中有一个是不应该改的。所以我需要把这次提交中关于那个文件的改动撤销。直接用git checkout命令可以检出某一个文件的历史版本,然后就可以将对这个文件的改动取消了。如下:

git checkout CommitId fileName git ci -m "revert a file modification"
这个知识点是来自:唐巧的技术博客-git使用感受

~搭建自己的远程仓库

搭建一个Git远程仓库相当简单,直接在一台带SSH的服务器上用git init –bare dirname即可。本地可以用git remote命令来设置多个远程分支。另外,第一次提交的时候,因为远程仓库中没有任何分支,需要用如下指令建立master分支:

git remote add origin yourname@yourhost.com:~/path/repository_namegit remote add add2 yourname@yourhost.com:~/path/repository_namegit push origin mastergit push add2 master// 如果git remote add设置地址写错了,可以用git remote set-url更改:git remote set-url origin yourname@yourhost.com:~/path/repository_name
这个知识点是来自:唐巧的技术博客-git使用感受

~、删除不在git管理下的文件
如果你需要删除Git下没有加入到版本库中的文件,可以使用:

git clean -nd 测试删除git clean -fd 真实删除
这个知识点是来自:唐巧的技术博客-git使用感受

注意点:

~、一个分支就是独立的一条版本库演化路径,版本库默认只有一个 master 分支,我们可以基于一个已存在的分支创建新的分支。

~、已经commit的文件即使在.gitignore中也会被跟踪,因为被缓存了,所以清除缓存,再commit一次就有效了,使用如下命令清楚缓存的文件:

git rm --cached  xxx文件

~、cvs和svn的版本控制原理是:每次的更改文件只保存变化量,git是会吧有变动的文件内容全部保存下来,2者相同的是:不变的文件,只保存指向前一版本里相应文件的应用。

相关资料:


直接拿来用!10段超有用的Git命令行代码

参考:

Git 常用命令详解(二)

阳志平的博客
挑战书-git快速入门

.gitignore文件语法

原创粉丝点击