git指令操作

一.安装Git

Git 官方网站下载: 打开 http://git-scm.com/download/win,下载会自动开始。

二.初次运行 Git 前的配置

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。

用户信息:

$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。

三.获去Git仓库项目

克隆仓库的命令格式是 git clone [url] :

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

完成后,会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。

现在可以开发项目了。

四.记录每次更新到仓库

请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。我们逐步对将这些文件进行修改,再把修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。

检查当前文件状态:

要查看哪些文件处于什么状态,可以用 git status 命令。如修改了README文件:

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    README

nothing added to commit but untracked files present (use "git add" to track)

此时,READMD文件处于已修改,未跟踪状态。

跟踪新文件:

使用命令 git add 开始跟踪一个文件。但凡被修改过的文件都要重新跟踪暂存:

$ git add README

此时,README 文件已被跟踪,并处于暂存状态。

查看已暂存和未暂存的具体修改

使用git diff指令查看未暂存的文件修改:

$ git diff

请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。

若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令:

$git diff --cached

五.提交更新

 现在的暂存区域已经准备妥当可以提交了。每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit:

$ git commit

这种方式会启动文本编辑器以便输入本次提交的说明。

另外,你也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行:

$ git commit -m "Story 182: Fix benchmarks for speed"

六.移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作:

$ git rm PROJECTS.md

七.查看提交历史

在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的工具是 git log 命令:

$ git log

八.撤销操作

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 git commit --amend 选项的提交命令尝试重新提交:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。

取消暂存文件:

暂存后,会提示使用 git reset HEAD <file>... 来取消暂存:

$ git reset HEAD CONTRIBUTING.md

撤销对文件的修改:

如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办? 你该如何方便地撤消修改 - 将它还原成上次提交时的样子:

$ git checkout -- CONTRIBUTING.md

注意:如果是路径形式的文件,去掉 --。

九.远程仓库的操作

未完待续。。。

查看远程仓库:

添加远程仓库:

从仓库中抓取和拉取:

推送到远程仓库:

远程仓库的移除和重命名:

十.打标签

在 Git 中列出已有的标签是非常简单直观的。 只需要输入 git tag:

$ git tag
v0.1
v1.3

十一.Git分支

新建分支:

想要新建一个分支并同时切换到那个分支上:

$ git branch iss53
$ git checkout iss53

合并分支:

需要合并 iss53 分支到 master 分支,只需要检出到你想合并入的分支,然后运行 git merge 命令:

$ git checkout master
Switched to branch 'master'
$ git merge iss53

遇到冲突时的分支合并:

在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件:

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      index.html

no changes added to commit (use "git add" and/or "git commit -a")

 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。

在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。

如果你想使用图形化工具来解决冲突,你可以运行 git mergetool,该命令会为你启动一个合适的可视化合并工具,并带领你一步一步解决这些冲突:

$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emerge
Merging:
index.html
...

等你退出合并工具之后,Git 会询问刚才的合并是否成功。 如果你回答是,Git 会暂存那些文件以表明冲突已解决: 你可以再次运行 git status 来确认所有的合并冲突都已被解决:

$ git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

    modified:   index.html

如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。 默认情况下提交信息看起来像下面这个样子:

Merge branch 'iss53'

Conflicts:
    index.html
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#    .git/MERGE_HEAD
# and try again.


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# All conflicts fixed but you are still merging.
#
# Changes to be committed:
#    modified:   index.html
#

分支管理:

git branch 命令不只是可以创建与删除分支。 如果不加任何参数运行它,会得到当前所有分支的一个列表:

$ git branch
  iss53
* master
  testing

猜你喜欢

转载自www.cnblogs.com/qianmo007/p/10730894.html