Git常用命令

获取 Git 仓库

假如你只能阅读一章来学习 Git,本章就是你的不二选择。 本章内容涵盖你在使用 Git 完成各种工作中将要使用的各种基本命令。 在学习完本章之后,你应该能够配置并初始化一个仓库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改。 本章也将向你演示如何配置 Git 来忽略指定的文件和文件模式、如何迅速而简单地撤销错误操作、如何浏览你的项目的历史版本以及不同提交(commits)间的差异、如何向你的远程仓库推送(push)以及如何从你的远程仓库拉取(pull)文件。

获取 Git 仓库

有两种取得 Git 项目仓库的方法。 第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。

在现有目录中初始化仓库

如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:

$ git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。 (参见 Git 内部原理 来了解更多关于到底 .git 文件夹中包含了哪些文件的信息。)

如果你是在一个已经存在文件的文件夹(而不是空文件夹)中初始化 Git 仓库来进行版本控制的话,你应该开始跟踪这些文件并提交。 你可通过 git add 命令来实现对指定文件的跟踪,然后执行 git commit 提交:

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

稍后我们再逐一解释每一条指令的意思。 现在,你已经得到了一个实际维护(或者说是跟踪)着若干个文件的 Git 仓库。

克隆现有的仓库

如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。 如果你对其它的 VCS 系统(比如说 Subversion)很熟悉,请留心一下你所使用的命令是"clone"而不是"checkout"。 这是 Git 区别于其它版本控制系统的一个重要特性,Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。 事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库(虽然可能会丢失某些服务器端的挂钩设置,但是所有版本的数据仍在,详见 在服务器上搭建 Git )。

克隆仓库的命令格式是 git clone [url] 。 比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令:

$ git clone https://github.com/libgit2/libgit2

这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。 如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:

$ git clone https://github.com/libgit2/libgit2 mylibgit

这将执行与上一个命令相同的操作,不过在本地创建的仓库名字变为 mylibgit

Git 支持多种数据传输协议。 上面的例子使用的是 https:// 协议,不过你也可以使用 git:// 协议或者使用 SSH 传输协议,比如 user@server:path/to/repo.git 。 在服务器上搭建 Git 将会介绍所有这些协议在服务器端如何配置使用,以及各种方式之间的利弊。

___________________________________________________________________________________

git   status

查看本地仓库的文件状态,红色表示工作目录的文件被修改但还没有提交到暂存区,绿色表示已经提交到暂存区。

  1. 以极简的方式显示文件状态:git status -s
    • A:本地新增的文件(服务器上不存在)
    • C:文件的一个新拷贝
    • D:本地删除的文件(服务器上存在)
    • M:红色为修改过未被添加进暂存区,绿色为已经添加进暂存区
    • R:文件名被修改
    • T:文件类型被修改
    • U:文件没有被合并(完成合并后才能进行提交)
    • X:未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
    • ?:未被git进行管理,可以使用git add fileName把文件添加进来进行管理
----------------------------------------------------------------------------------------------------------------------------------------------------------

git add  

将文件从工作目录添加至暂存区

  1. 把所有修改的信息添加到暂存区:git add .
  2. 把所有跟踪文件中被修改过或已删除的文件信息添加至暂存区:git add -u,它不会处理那些没有被跟踪的文件
  3. 把所有跟踪文件中被修改过或已删除文件和所有未跟踪的文件信息添加到暂存区:git add -A
----------------------------------------------------------------------------------------------------------------------------------------------------------------

git commit

  将暂存区的修改提交到本地仓库,同时会生成一个commmit-id。

  1. 将暂存区的修改提交到本地仓库:git commit -m "在这里写本次提交的描述"

  2. 将本地工作区中修改后还未添加到暂存区中的文件也提交到本地仓库:git commit –a –m "message",该命令相当于连续执行以下两条命令:
    • git add .
    • git add -m "message"
  3. 修改最后一次提交(可用于漏掉某个文件的提交或重新编辑信息):git commit --amend
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

git pull

  获取远程主机某个分支的更新,再与本地指定分支合并。git pull <远程主机名><远程分支名>:<本地分支名>

  1. 取回远程主机上的dev分支与本地的master分支合并:git pull origin dev:master
  2. 取回远程主机上的dev分支与当前分支合并:git pull origin dev,该命令相当于以下两条命令:
    • git fetch origin:获取远程主机上所有分支的更新,也可以用git fetch origin dev表示获取远程主机上dev分支的更新
    • git merge origin/dev:当前分支合并dev分支
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

git feach

  将远程主机上所有分支的更新取回本地,并记录在.git/FETCH_HEAD

  1. 获取远程主机上master分支的代码:git fetch origin
  2. 在本地新建test分支,并将远程主机上master分支代码下载到本地test分支:git fetch origin master:test
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

git push

  将本地分支的更新推送到远程主机上。

  1. 将本地master分支的更新推送到远程主机上:git push origin master
  2. 删除远程dev分支:git push origin --delete dev

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GIT升级

windows升级

git update-git-for-windows
原文地址:https://www.cnblogs.com/snake1118/p/11857288.html