git常用命令以及使用技巧整理

Posted hihtml5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git常用命令以及使用技巧整理相关的知识,希望对你有一定的参考价值。

git config --global <attr-name> <attr-value> 配置git信息,如果使用了 --global 选项,全局属性将默认被使用,除非此属性被局部属性覆盖。当你想针对特定项目使用不同的配置信息时,可以在那个项目目录下运行没有 --global 选项的命令来配置。
git config --list 列出所有 Git 当前能找到的配置
git config <key> 检查 Git 的某一项配置
//3种获取帮助方式
git help <verb>
git <verb> --help
man git-<verb>
git init 在现有目录中初始化仓库
git clone [url] 克隆现有的仓库,url后面可以自定义本地仓库的名字
git status 检查当前文件状态
git status -s/git status --short 状态简览
git add 添加内容到下一次提交中
git diff 查看修改之后还没有暂存起来的变化内容
git diff --staged 查看已暂存的将要添加到下次提交里的内容
git commit -m "本次提交的描述信息" 提交更新,提交时记录的是放在暂存区域的快照。 任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理(-m选项可选,不指定时使用git默认配置的编辑器进行输入描述信息,加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤,有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交)
git rm 移除文件,从已跟踪文件清单中移除,并连带从工作目录中删除指定的文件,如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),你想让文件保留在磁盘,但是并不想让 Git 继续跟踪,使用 --cached 选项
git mv file1 file2 移动文件
git log 查看提交历史,此命令有多个可选参数可用于控制输出结果
git reset HEAD file 取消暂存的文件,在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),不加选项地调用git reset 并不危险 — 它只会修改暂存区域
git checkout -- [file] 撤消对文件的修改,你需要知道 git checkout -- [file] 是一个危险的命令,这很重要。 你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它
git remote 查看你已经配置的远程仓库服务器,指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote add <shortname> <url> 添加一个新的远程 Git 仓库库,同时指定一个你可以轻松引用的简写
git fetch [remote-name] 从远程仓库中获得数据,这个命令会访问远程仓库,从中拉取所有你还没有的数据, 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。 必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作
git pull [remote-name] 自动的抓取然后合并远程分支到当前分支
git push [remote-name] [branchname] 推送到远程仓库
git remote show [remote-name] 查看远程仓库
git remote set-url <name> <newurl> 更改远程仓库的url
git remote rename [remote-name] [remote-name2] 远程仓库的重命名
git remote rm [remote-name] 移除一个远程仓库
git tag 列出标签, 如果只对 1.8.5系列感兴趣执行git tag -l ‘v1.8.5*‘进行筛选
git tag -a v1.4 -m ‘my version 1.4‘ 创建附注标签,-m 选项指定了一条将会存储在标签中的信息
git show [tag-name] 查看标签信息
git tag v1.4-lw 创建轻量标签
git tag -a v1.2 9fceb02 要在某个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)
git push origin [tagname] 推送标签到共享服务器上,如果想要一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里
git checkout -b [branchname] [tagname] 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用这个命令在特定的标签上创建一个新分支,这样就能检出这个特定的标签了(这其实是创建了一个分支)。

git团队协作流程:
clone远程仓库到本地->pull远程仓库数据时如果本地仓库与远程仓库修改了同一个文件,需要先commit再pull(pull只能自动合并已提交状态的文件)->pull拉取远程仓库数据并合并[->如果有冲突要解决冲突->冲突解决后commit->再次pull看看是否是最新数据]->最后push

手动解决冲突:
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
<<<<<<< HEAD:index.html
<div id="footer">contact : [email protected]</div>
=======
<div id="footer">
?please contact us at [email protected]
</div>
>>>>>>> iss53:index.html
这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 =======分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:
<div id="footer">
please contact us at [email protected]
</div>
上述的冲突解决方案仅保留了其中一个分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 这些行被完全删除了。 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。

文件.gitignore格式规范如下:
所有空行或者以 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号(*) 表示匹配任意中间目录,比如`a/**/z` 可以匹配 a/z, a/b/z 或 `a/b/c/z`等。
























































以上是关于git常用命令以及使用技巧整理的主要内容,如果未能解决你的问题,请参考以下文章

Git 以及 Vim 常见命令整理

Git常用命令整理

Git使用:安装,使用及常用命令整理

Git 常用命令整理

常用的Git命令整理

GIT系列——GIT常用命令整理