git 常用命令

来源:互联网 发布:linux oracle重建库 编辑:程序博客网 时间:2024/05/18 03:58

内容摘自:http://www.nowcoder.com/courses/2

初始化

git init 在当前目录下初始化一个git仓库
git init path 当当前目录下创建一个名为path的目录,并在path下创建一个git仓库

提交

git commit  -m "..." 提交暂存区的修改,双引号中的内容为你对本次提交的说明。
git commit  如果不跟参数的话,这个命令将会打开一个你系统默认的编辑器,编辑你对这次提交的说明。如果提交说明为空,那么这次提交将会被终止。

冲突

git diff 显示工作区和暂存区中的文件的区别。
git diff --staged 显示暂存区和最近一次提交的文件的区别。
git diff HEAD 显示工作区和最近一次提交中的文件的区别。
上面的命令每次都会按行显示被修改的地方,当我们只修改了一行中的某一部分,并且想要突出显示这些被修改的地方,就要加上--color-words或者--word-diff
两者显示的内容是一样的,只是显示的方式有点不一样。
使用--stat这个参数就可以阻止diff输出所有的代码块,而是仅仅输出更改了的文件。也就是说,这个参数会让diff不输出代码部分,而是告诉我们什么文件被修改了。

日志

git log    显示提交日志,按时间排序,最上面的是最近提交的。
commit是由git生成的一串长度为40的随机16进制字符串,它是本次提交的唯一标志符;
Author是你的用户名和email;
Date是提交时间;
Date下面的内容是你的提交提交说明。

参数:
--oneline 提供一个提交日志的概要。内容只有唯一标识符的前一部分和提交说明。
--stat  查看每次提交都提交了哪些文件,并对这些文件的改变加上标识,后面可以跟 -- 文件名(例如: git --stat -- file),指定只显示某一个文件。只查看某一个文件的时候,你的log可能不会滚动,那么你就要加上-M --follow参数来让输出可以滚动。
--patch 显示在相邻两次提交中哪些内容被修改了。
--graph 以图形化的形式显示提交结构。这个参数通常和其他参数一起使用,可以获得更加清晰明了的输出。例如:
git log --graph --all --decorate --oneline。
git reflog 不仅会显示现在存在的提交,还会把丢弃的提交、被删除的分支等也显示出来(比如通过git reset丢弃的修改),这些信息会被缓存30天。这个命令可以和git reset --hard联合使用,将当前分支强制回滚到指定的提交。

删除

git rm 从你的文件系统中删除一个文件,并且将这个删除的动作添加暂存区中。但是这个被删除的文件还是会存在你之前的提交中,只是它不会在这次之后的提交中出现。
如果你使用了没有使用git的命令去删除这个文件,那么这个文件确实是从你的文件系统删除了,但是你的删除的动画没有被提交到暂存区中。你需要使用git add命令来提交这个动作。
git rm --cache 取消跟踪一个文件,但是不从文件系统中删除这个文件(也就是工作区中这个文件还是存在的,但是不会被跟踪)

添加到暂存区

git add filename 将一个文件添加到暂存区,也可以是一个目录
git add -u . (注意这里有个点) 这个命令会遍历当前目录,寻找git之前已经跟踪的文件,但是现在要被撤销跟踪的文件,并将这些删除的更改提交到暂存区中。
git add -A . (注意这里有个点)这个命令会遍历当前目录,找到所有的已经被移动过的文件,删除旧文件,将新的文件添加到暂存区。

移动

在git中,文件的移动和重命名是同一件事。
git mv oldpath newpath 将oldpath所指的文件移动为到另一个文件,这个跟linux下的mv命令是差不多的。
如果你使用了linux的mv命令来移动或者重命名文件,那么就使用git rm命令先删除之前的文件,然后使用git add命令将新的文件添加到暂存区。

分支

git branch 显示所有分支,带星号标志的是当前分支。
git branch newbranch 创建一个名为newbranch的新的分支。
git branch -d dname 删除一个名为dname的分支,如果被删除的分支没有被完全合并,那么就会出现警告。
git branch -D dname 强制删除一个名为dname的分支,不管这个分支有没被完全合并。
git branch -a 显示出所有的分支信息。

git checkout abranch 切换到一个名为abranch分支
git checkout newbranch 创建一个新的分支,并切换到这个新创建的分支。
git checkout -- filename 用最近一次提交的文件覆盖工作区的文件。

合并

合并之后所有的历史和提交记录都可以从当前分支中查询出来。
git merge branchname 将branchname合并到当前分支
git merge --abort 如果你不想解决冲突,可以使用这个命令,这个命令会从当前分支的最近一次提交从恢复修改,你的工作区和暂存区会被清空。
git merge --squash

撤销更改

git reset 有三种模式:
mixed 模式:默认的工作模式,这个模式会修改历史和工作区,将暂存区的修改撤回;
soft 模式:选取一条或者多条commit把他们全部的改变放回暂存区;
hard 模式:这是一个具有破坏性的操作,这将会擦除你不想要的东西。
示例:
git reset HEAD 将暂存区的修改撤回
git reset --soft HEAD~3 将最新的3条提交当成一次提交压缩进暂存区。
git reset --soft HEAD~3 将最近的3条提交完全删除


--------------------------------------------- 远程操作----------------------------------------------------

远程库

git remote add name address  添加一个名为name的远程库,这个远程库的URL为address。
git remote set-url name URL 修改名为name的远程库的URL
git remote rm name 移除一个名为name的远程库。
git remote -v  输出所有远程库的名字,URL

三个远程库命令

git fetch origin 从名为origin的远程库中抓取内容。
git pull origin 从远程库下载当前分支的内容,并且与当前分支的内容合并。
git push origin 将本地修改的推送到远程库,这个操作会更新远程库的内容。
0 0