git常用命令(自己总结)



1、撤销修改
(1)git checkout -- a.txt
修改了a.txt,但没有add,还没有添加到暂存区,状态为unstage,从版本区直接回复到工作区。
(2)git reset HEAD a.txt
修改了a.txt且add了,添加到了index区,状态为stage,必须先使用
git reset HEAD a.txt,使状态为unstage,然后使用git checkout -- a.txt ,改变工作区的a.txt文件。
(3)版本回退
   如果已经commit,则只能使用版本回退。
git log --pretty=oneline
git reset --hard HEAD^ (--hard :work,stage,head都回退。 --mixed(默认):stage,head --soft:head)
HEAD:当前版本,HEAD^,上一个,HEAD^^:上2个,HEAD~100:上100个。
单个文件浓缩说明:1.git add a.txt 保存修改到暂存区,2.git reset HEAD a.txt,单纯的Unstage作用,并不恢复work区的a.txt 3.暂存区为空,git checkout -- a.txt 从版本区回复a.txt
2.创建并切换分支
git checkout -b dev
3.合并分支
$ git checkout feature1 (切换到feature1,同时工作区文件也跟着变化)
$ git merge feature1 (fast forward方式,简单的移动 master 的head)
$ git merge --no-ff -m "merge with no-ff" dev   ( no fast forward方式,新建一个commit,并移动Head,保留dev的所有commit记录)
squash方式:(把dev的commit变为master的新的stage,需要使用输入commit建立新的commit,通不记录dev的commit记录)
(1)
git merge --squash dev

(2)git commit -m "master message here"
(3)git checkout dev; git merge master;切记把master与Dev合并一下,否则再次merge --squash时,会报conflict错误。
4.查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit
5.git commit -a 
add所有文件,然后commit
6.git diff --cached 对比stage和branch之间的差异
git diff 对比work 和stage的差异
7.从github下载项目,git clone
先用自己账号登录,选择项目,clone ordownload--》clone with https-->复制web Url-->在git bash 中运行:
git clone https://github.com/michaelliao/learn-javascript.git;然后显示下载进度。
8.从本地上传到github,git push
git push -u origin master(orgin是仓库名,master是分支名)
 

 

posted @ 2016-07-10 08:32  shanwater  阅读(181)  评论(0编辑  收藏  举报