zoukankan      html  css  js  c++  java
  • git常用命令

    一、取得项目的 Git 仓库

    有两种取得 Git 项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

    1、在工作目录中初始化新仓库

    要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

    git init

    初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git需要的数据和资源都存放在这个目录中。

    2、从现有仓库克隆

    如果想对某个开源项目出一份力,可以先把该项目的 Git 仓库复制一份出来,这就需要用到 git clone 命令。命令格式为 git clone [url]。比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:

    git clone git://github.com/schacon/grit.git

    这会在当前目录下创建一个名为“grit”的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。

    以上命令

    git clone git://github.com/schacon/grit.git mygrit

    同样能达到效果,只是重命名了目录名而已

    二、记录每次更新到仓库

    1、检查当前文件状态

    git status

    2、跟踪新文件、暂存已修改文件

    使用命令git add fileName(支持正则)开始跟踪一个新文件。实际上只是add file into staged area,并没有提交文件

    3、忽略某些文件

    一般我们总会有些文件无需纳入 Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式。来看一个实际的例子:

    $ cat .gitignore

    *.[oa]

    *~

    第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件。要养成一开始就设置好.gitignore文件的习惯,以免将来误提交这类无用的文件。

    文件.gitignore 的格式规范如下:

    所有空行或者以注释符号 # 开头的行都会被 Git 忽略。

    可以使用标准的 glob 模式匹配。 * 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 * 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

    所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

    我们再看一个 .gitignore 文件的例子:

    # 此为注释 – 将被 Git 忽略

    *.a       # 忽略所有 .a 结尾的文件

    !lib.a    # 但 lib.a 除外

    /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

    build/    # 忽略 build/ 目录下的所有文件

    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    更多规则:http://hi.baidu.com/orangejackylee/blog/item/dd1bc005afd66995e950cd3b.html

    4、查看已暂存和未暂存的更新

    实际上 git status 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令。

    git diff 查看尚未暂存的文件更新了哪些部分

    git diff --cached看已经暂存起来的文件和上次提交时的快照之间的差异

    5、提交更新

    每次准备提交前,先用git status看下,是不是都已暂存起来了,然后再运行提交命令git commit提交更新

    git commit提交会提示输入本次提交说明

    git commit -m "commentMark"直接附带提交说明

     
    6、跳过使用暂存区域
    可能很多人会觉得git这种add再commit的方式很繁琐,可以用git commit -a跳过git add步骤直接commit
     
    7、移除文件
    要从 Git 中移除某个文件(包括暂存区域和工作目录),就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。
    可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
    git rm a.txt
    最后提交的时候,该文件就不再纳入版本管理了。
    如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。
     
    另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:
    git rm --cached readme.txt
    后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
    git rm log/\*.log
    注意到星号 * 之前的反斜杠 \,因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开(译注:实际上不加反斜杠也可以运行,只不过按照 shell扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。此命令删除所有 log/ 目录下扩展名为 .log 的文件。类似的比如:
    git rm \*~
    会递归删除当前目录及其子目录中所有 ~ 结尾的文件。
     
    8、移动文件
    要在 Git 中对文件改名,可以运行如下命令
    git mv file_from file_to
    其实,运行 git mv 就相当于运行了下面三条命令:
    $ mv README.txt README
    $ git rm README.txt
    $ git add README
     
    三、远程仓库的使用
    程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。
     
    1、查看当前的远程库
    要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,
    也可以加上 -v 选项git remote -v(译注:此为 --verbose 的简写,取首字母),显示对应的克隆地址
     
    2、添加远程仓库
    要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]
     
    3、推送数据到远程仓库
    项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name]
    如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:
    git push origin master
    只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新
     
    4、查看远程仓库信息
    我们可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:
     
    5、远程仓库的删除和重命名
    在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简短名称,比如想把 pb 改成 paul,可以这么运行:
     
    其他的以后用在补充吧
     
  • 相关阅读:
    2011年 CIO简历该怎么写?
    OC内存管理
    【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记!
    【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
    ORA16014: 日志 1 的序列号 83 未归档, 没有可用的目的
    【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
    2011来临 IT人员应该具备哪些技能?
    垃圾控件DatePicker
    【Android游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SurfaceView中用重力传感器控制圆球的各方向移动)
    【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
  • 原文地址:https://www.cnblogs.com/buxianghe/p/2744981.html
Copyright © 2011-2022 走看看