初始化仓库:

git init --此命令会在当前目录下新建一个Git仓库。新建了一个 .git的隐藏目录,仓库的所有数据都放在这个目录里。目前还是空的。

直接建仓

git clone master....git 把分支代码直接在下载当前路径下并生成仓库

跟踪,暂存文件:

git add --执行git add 命令将源文件的修改加入git仓库的暂存区,待执行git commit时,正式将修改存入仓库。或新建一个文件后 git add 文件名 跟踪这个文件 -a参数是添加所有

提交:

git commit 用于将暂存的修改提交入仓库
  git commit --amend 覆盖最后一次提交,将这次提交的内容和上次的提交合并,并使用新的commit message。这个命令似乎于这种情况:提交了一条commit以后,发现代码修改得不完整,另外再提交一条会显得很乱,使用这条命令可以将之前的提交取消,替换为新的提交。

查看日志:

    git status 查看当前分支代码状态(改动的,暂存区的会显示)

git log --查看修改历史   执行结果如下:

  commit 85b6d9de45e4efe8220508f845a2a3d11ca609b2
  Author:local <local>
  Date: Mon May 22 14:51:13 2016 +0800
  add include
  commit 5226503c985dd593ef9edb68e77981321ce7c265
  Author: local <local>
  Date: Mon May 22 14:50:18 2016 +0800
  inital commit.

其中commit后面的64个字符16进制的字符串,称为commit hash, 是这条的commit的唯一标识,全球唯一。很多git命令的后面可以带个hash。比如git show 可以显示出这条commit修改的内容。   使用git show 命令查看某条提交的修改内容

分支操作

  • 分支创建分支:              git branch mybranch
  • 切换分支:               git checkout mybranch
  • 创建并切换分支:            git checkout -b mybranch
  • 更新master主线上的东西到该分支上:   git rebase master
  • 切换到master分支:           git checkout master
  • 更新mybranch分支上的东西到master上: git rebase mybranch
  • 更新远程库到本地:           git fetch origin
  • 推送分支:               git push origin master
  • 取远程分支合并到本地:         git merge origin/master
  • 取远程分支并分化一个新分支:       git checkout -b mybranch origin/master
  • 删除本地分支:             git branch -D mybranch

fetch,pull,push

git fetch
  所有在远程仓库里的分支,都会出现在origin/这个命名空间之下。注意:origin/ 下的分支,实际上也是存在本地的.git目录中的,就算断网也是可以查看和使用的。   抓取远程服务器上的分支的更新数据,并同步到origin/ 下,但不会修改本地分支的内容。比如服务器上的master分支在上一次clone之后发生了变化,git fetch命令可以用于抓取这部分变化的内容,同步在origin/master分支上。
git pull
  这个命令是git fetch 和git merge 的结合。先git fetch,然后将本地分支所关联的远程分支做merge。假设当前分支是master, 相当于执行: git merge origin/master 加上-b branch可以pull指定分支
git push
  命令将本地分支的修改推送到远程服务器上。如果远程服务器上没有同名的分支,则会在远程服务器上创建新的分支,并将本地分支与远程分支做关联。
  eg:
  git push -u origin local_branch_name   推送分支到远程服务器
  git push origin :master 删除远程分支

重置:

git reset --hard  撤消一切本地的修改,将本地目录恢复为最后一次提交时的状态。包括被修改的文件,删除的文件都会被恢复原样。我们称之为hard reset。
git reset --hard HEAD~1(git reset --hard HEAD^等效) 撤回最近一次的commit(撤销commit,撤销git add,还原改动的代码)
git revert commit_id
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit

文件的删除和移动

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作
删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ... 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm -f <file> 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]
git mv 命令用于移动或重命名一个文件、目录、软连接。

改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]

Git修改和配置用户名和邮箱

查看user.name/user.email

git config user.name
git config user.email

查看所有配置信息

git config --list
配置user.name/user.email

git config user.name "newName"
git config user.email "newEmail"

加上--global可以全局修改,否则仅在本git-repo生效。
配置全局user.name/user.email

git config --global user.name "your user name"
git config --global user.email "your user email"

这里需要注意的是,该命令只能用于初次配置user.name/email,如果不小心配置错误,或者重复配置,不可以通过重复执行以上命令来修改user.name/email,否则可能或报错说无法重复配置,或者导致一个key配置了多个value。

修改user.name/user.email 如果想要修改已经配置过的user.name或email,有两种方式,一种是通过git bash来修改;一种是直接修改.gitconfig文件。
1.git bash

git config --global --replace-all user.name "your user name"
git config --global --replace-all user.email"your user email"

2.修改.gitconfig文件
该文件是隐藏文件,位于C:\Users{user}.gitconfig,直接修改里边的name或者email,如果有重复的name或email,可以将其删掉,只剩下一个就好。 修改完,通过git bash输入git config –list可以查看是否修改成功了

修改编辑器

git默认的编辑器为nano,要修改为vim有两种方法:

  • 打开.git/config文件,在core中添加 editor=vim

  • 运行命令 git config –global core.editor vim

本文链接:http://nix.pub/article/git/