您的位置:首页 > 其它

伟大的git 操作命令总结

qq_35801056 2017-09-07 14:10 16 查看
1 git init 初始化一个git仓库

2 添加文件到git仓库,分两步。

  第一步:git add <file> ,可多次使用,添加多个文件

  第二部:git commit 提交(实际上就是把暂存区的所有内容提交到当前分支)

3 git status 查看仓库当前状态

4 git diff <file> 查看修改内容

5 HEAD 指向的版本是当前版本

  git reset --hard commit_id  回到指定版本

  回退前,可用git log查看提交历史,以便确定会退到哪个版本

  回退后,想重返未来,可用 git reflog查看命令历史,以便确定回到未来哪个版本。

6 工作区和暂存区:

    需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git
commit就可以一次性把暂存区的所有修改提交到分支。

7 管理修改:

第一次修改 git add

第二次修改 git add

一起提交 git commit

git diff HEAD -- xxxxx.txt 查看工作区和版本库里面最新版本的区别

8 撤销修改:

git status 查看当前状态

git checkout -- file 丢弃工作区的修改

git checkout -- xxxxx.txt 意思就是把xxxxx.txt 文件在工作区的修改全部撤销,有2种情况:

第一种是xxxxx.txt 从修改后还没被放到暂存区,现在撤销修改就回到和版本库一模一样的状态。

第二种是xxxxx.txt
已经添加到暂存区,又作了修改,现在撤销修改就会回到添加到暂存区后的状态。

一句话解释就是,让xxxxx.txt
文件回到最近一次 git commit 或者git add 的状态。

git
reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新回到工作区。

git
reset 既可以回退版本,也可以把暂存区的修改回退到工作区。HEAD,表示最新的版本。

9
删除文件:

git
add text.txt 先添加一个新文件到git

git
rm text.txt 从版本库删除该文件

另一种情况是误删,如果版本库里面还有:

git
checkout -- test.txt git checkout 其实就是用版本库里面的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原。

10
创建与合并分支

      


     mater 分支是一条线,每次提交,分支都会向前移动一步,HEAD 不是指向提交,而是指向master(当前分支),master才指向提交。 



当创建一个新的分支,比如dev,git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev

从现在开始,对工作区的修改和提交只针对dev分支,比如新提交一次后,dev指针向前移动一步,而matser不变。



加入我们在dev上的工作完成了,就可以把dev合并到master上了。最简单的办法就是把matser指向当前dev提交。



合并后,可以删除dev分支,删除dev分支就是把dev指针给删掉。

完整流程:

git checkout -b dev 创建并进入新dev分支

git branch 查看当前分支

在dev分支开发完成,提交

git add xxxx.txt

git commit -m "branch dev"

git checkout master 切换回master分支

git merge dev 把dev分支的工作成果合并到master分支上。

git merge --no-ff -m "merge with no-ff" dev 表示禁用 fast forward,合并后的历史有分支,能看出来曾经做过合并

git merge命令用于合并指定分支到当前分支。

git branch -d dev 删除dev分支。

11 解决冲突:

如果master和dev分支各自都有了新的提交



这种情况下 git merge dev 无法快速合并,只是试图把各自的修改合并起来,但是这种合并可能会有冲突。

当无法合并时我们用git status 看到冲突文件,进入解决。

git 用<<<<<< ,=========,>>>>>>>标记出不同的分支,修改后再提交。



同时,git log -- graph 命令可以看到分支合并图。

12 bug 分支:

当你在dev开发进行一半时,还没法提交,却接到一个bug的紧急修复任务,很自然的你想创建一个bug分支来修复,但是当前修改还未提交。这时候,你可以使用 git stash 功能,把工作现场存贮起来,等以后恢复现场后继续工作。

git stash 存贮你的修改,恢复到仓库最后一个版本的内容。

当新建分支修复bug后,再回到dev分支,将存贮的内容恢复。

方式1: git stash apply 恢复后,stash内容并不删除,需要使用git stash drop来删除。

方式2: git stash pop 恢复的同时把stash内容也删了。

git stash list 查看存贮在stash里面的内容。(相当于一个堆栈,先进后出)。

git stash apply stash@{0} 恢复指定的stash

13 删除分支

git branch -d xxxx 删除xxxx分支

如果xxxx分支有未提交的内容,可以通过 git branch -D xxxx 强制删除。

14 多人协作

git remote -v 查看远程库信息(新建的分支如果不推送到远程,对其他人是不可见的)

git push origin branch-name 从本地推送分支

git checkout -b banch-name oringin/branch-name 从本地拉取分支,取名一样(本地和远程分支名字一样,但是意义不一样)

git pull 从远处抓取分支,如果有冲突,先解决冲突。
标签:  git