git的基本使用(1)

来源:互联网 发布:少女前线 mac 10 旋风 编辑:程序博客网 时间:2024/05/19 03:26

       参考地址:点击打开链接

       安装完成后,需要对git进行配置。git配置分三个层次,分别是所有用户,当前用户和项目。命令是gitconfig。三个层次的配置文件分别放在:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 gitconfig 时用 --system选项,读写的就是这个文件。

  • ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 gitconfig 时用 global选项,读写的就是这个文件。

  • 当前项目的git目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖/etc/gitconfig 中的同名变量。

    一,取得项目的git仓库 
git取得项目仓库有两种方式,一种是在现存的目录下,通过导入所有文件来创建git仓库;另一种是克隆已有的仓库。
要使现有的项目使用git管理,需要在该项目目录执行:" git init" 命令生成git框架文件,然后将已有的文件通过:"git add 文件名" 这个命令,对这个文件进行追踪,最后通过"git commit -m 'commit message'" 方法提交,将这些文件纳入版本控制.
另一种方式是克隆已经存在的项目,命令是"git clone url".例如:
$ git clone git://github.com/schacon/grit.git
那么在当前目录下就会产生一个grit目录,所有的项目文件都已经在这个目录里了。如果想要自己定义项目目录名称,可以使用下面的方式:
$ git clone git://github.com/schacon/grit.git mygrit
这样新生成的目录就是mygrit。
    二,跟踪新文件和暂存已修改文件
跟踪新文件和暂存已修改文件都是通过命令:"git add"。直接运行git add 命令,就开始跟踪当前目录下的文件。在'git add'后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件。这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。查看文件状态可以通过"git status" 命令。
    三,忽略某些文件
如果你想要忽略某些文件,例如java编译后的class文件,这些文件并不需要存在于git项目仓库。那么如何忽略呢?
做法是在项目目录下创建.gitignore文件,文件格式为:
  (1)所有空行或者以注释符号'#'开头的行都会被 Git 忽略。
  (2)可以使用标准的 glob 模式匹配。
(3)匹配模式最后跟反斜杠(`/`)说明要忽略的是目录。
(4)要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(`!`)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(`*`)匹配零个或多个任意字符;`[abc]'匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,
要么匹配一个 b,要么匹配一个 c);问号(`?`)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如'[0-9]'表示匹配所有 0 到 9 的数字)。
一个 '.gitignore' 文件的例子:
  # 此为注释 – 将被 Git 忽略
      # 忽略所有 .a 结尾的文件
         *.a
         # 但 lib.a 除外
         !lib.a
        # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
         /TODO
        # 忽略 build/ 目录下的所有文件
         build/
         # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
         doc/*.txt
     四,查看已暂存和未暂存的更新
如果比较的是工作目录中当前文件和暂存区域快照之间的差异,直接输入命令:"git diff",它会显示出当前目录的文件修改后还没暂存起来的变化。
如果要比较这次工作和上次提交之间的差异,可以使用命令:"git diff --cached"。这个命令显示的是这次已经暂存的修改和上次提交之间的差异,所有如果没有暂存,还是使用"git diff".
     五,提交更新
如果已经暂存了所有需要提交的文件,那么就可以开始提交了,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。提交前可以通过"git status"命令查看当前文件状态。提交的命令是"git commit",如果直接输入命令:
$ git commit
这种方式会启动编辑器用来输入本次提交的说明.默认的提交消息包含最后一次运行'git status'的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。在编辑界面,下方是操作的指令,需要配合ctrl键使用,这是我的一点使用心得。
另外也可以用 -m 参数后跟提交说明的方式。例如:git commit - m '提交说明'。
     六,跳过使用暂存区域
尽管使用暂存区域的方式可以达到目地,但略显繁琐。git 有一种跳过使用暂存区域的方式,在提交时,加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交。
     七,移除文件
要从git中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 'git rm'命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中删除这个文件,那么运行 git status 命令,被删除的文件会在 “Changes not staged for commit” 部分(也就是_未暂存_清单)看到。需要再次运行"git rm 文件名"记录此次移除文件的操作。最后提交的时候,该文件就不再纳入到版本控制了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 '-f',以防误删除文件后丢失修改的内容。
另外一种情况,我们想把文件从git仓库删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。那么使用'--cached'选项即可。例如:$ git rm --cached readme.txt
在删除的时候后面可以列出文件或者目录的名字,也可以使用 glob 模式。例如:"$ git rm log/\*.log",此命令删除所有'log/'目录下扩展名为'.log'的文件。类似的有:
        "$ git rm \*~",这个命令会递归删除当前目录及其子目录中所有'~'结尾的文件。
     八,移动文件
git移动文件操作的命令是:"git mv "。如果想要重命名一个文件,可以这样做:
$ git mv file_from file_to
这条命令其实相当于三条命令:
$ mv file_from file_to
         $ git rm file_from
         $ git add file_to
git重命名操作用mv非常方便,和linux的重命名操作是一样的。
      九,查看提交历史
如果想要查看提交的历史记录,可以使用命令:"git log"。默认不用任何参数的话,'git log'会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。
git log有很多选项可以帮助搜寻感兴趣的提交,可以通过 git log --help查看。
-p 选项显示每次提交内容的差异,用'-2'则仅显示最近的两次更新,用'--pretty'选项,可以指定使用完全不同于默认格式的方式展示提交历史。比如用'oneline'将每个提交放在一行显示,这在提交数很大时非常有用。最有意思的是'format`,可以定制要显示的记录格式,这样的输出便于后期编程提取分析。例如:
$ git log --pretty=format:"%h - %an, %ar : %s
列出了常用的格式占位符写法及其代表的意义。
选项     说明
%H      提交对象(commit)的完整哈希字串
%h      提交对象的简短哈希字串
%T      树对象(tree)的完整哈希字串
%t      树对象的简短哈希字串
%P      父对象(parent)的完整哈希字串
%p      父对象的简短哈希字串
%an     作者(author)的名字
%ae     作者的电子邮件地址
%ad     作者修订日期(可以用 -date= 选项定制格式)
%ar     作者修订日期,按多久以前的方式显示
%cn     提交者(committer)的名字
%ce     提交者的电子邮件地址
%cd     提交日期
%cr     提交日期,按多久以前的方式显示
%s      提交说明
这里还有一些其他的选项的用法:
  选项    说明 
-p      按补丁格式显示每个更新之间的差异。 
--stat  显示每次更新的文件修改统计信息。 
--shortstat     只显示 --stat 中最后的行数修改添加移除统计。 
--name-only     仅在提交信息后显示已修改的文件清单。 
--name-status   显示新增、修改、删除的文件清单。 
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。 
--pretty        使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 
       十,限制输出长度
上一条中显示最近两次更新,使用的选项是'-2'。这是'-<n>'选项的写法,其中的'n'可以是任何自然数,表示仅显示最近的若干条提交。另外还有按照时间作限制的选项,比如'--since'和'--until'。下面的命令列出所有最近两周内的提交:
        $ git log --since=2.weeks
还可以给出若干搜索条件,列出符合的提交。用'--author'选项显示指定作者的提交,用'--grep'选项搜索提交说明中的关键字。(请注意,如果要得到同时满足这两个选项搜>索条件的提交,就必须用'--all-match'选项。否则,满足任意一个条件的提交都会被匹配出来)。
另一个真正实用的`git log`选项是路径(path),如果只关心某些文件或者目录的历史提交,可以在 'git log` 选项的最后指定它们的路径。因为是放在最后位置上的选项,所以用>两个短划线(`--`)隔开之前的选项和后面限定的路径名。
其他常用的类似选项。
        选项    说明
        -(n)    仅显示最近的 n 条提交
        --since, --after        仅显示指定时间之后的提交。
        --until, --before       仅显示指定时间之前的提交。
        --author        仅显示指定作者相关的提交。
        --committer     仅显示指定提交者相关的提交。
十一,修改最后一次提交
如果想要撤销刚才的提交操作,可以使用 '--amend` 选项重新提交。
$ git commit --amend
此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。如果刚才提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 '--amend` 提交。
十二,取消已经暂存的文件
取消已暂存的文件可以通过命令:"git reset HEAD <file>" 。运行'git status'命令,查看出现的提示消息,你会看到关于这个命令的内容。
十三,取消对文件的修改
如果感觉刚才的修改没有必要,想要取消修改,可以使用命令:"git checkout -- <file>"。注意这个命令中间有"--",不要忘记。这个命令仅用于取消没有暂存的修改,对于已经暂存的修改,需要先使用"git reset HEAD <file>"取消暂存。
十四,查看当前的远程库
要查看当前配置有哪些远程仓库,可以用 'git remote` 命令,它会列出每个远程库的简短名字。也可以加上 '-v` 选项,显示对应的克隆地址。
十五,添加远程仓库
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 'git remote add [shortname] [url],例如:
$ git remote add pb git://github.com/paulboone/ticgit.git
现在可以用字符串 'pb' 指代对应的仓库地址了。比如说,要抓取所有远程仓库有的,但本地仓库没有的信息,可以运行 'git fetch pb'。

0 0
原创粉丝点击