git总结

今天上午因为分支提交问题影响了工作,晚上进行总结学习:

=================================================

一、准备:

1.使用git help:

git help

git help -a 所有参数

git help -g 打开手册

查看某个命令 git help add

2.git的设置

git system 系统范围

git global  用户范围

git local 仓库范围

git config --global  user.name '胡浩'

git config --list

git config --unset --global user.name

git config  --global user.email '947416983@qq.com'

git config  --global color.ui true

cat ~/.gitconfig (波浪号表示当前用户主目录)

3.别名 alias

git config --global alias.co checkout

//设置checkout的别名为co

cat ~/.gitconfig

在系统上设置别名:

vim ~/.bash_profile

进入编辑器后在最上面加入:

alias gco='git checkout'

source ~/.bash_profile(或者关掉终端再打开终端)

4.忽略跟踪文件(全局范围)

在mac系统上有时候会出现.DS_Store这个文件,我们不希望它进入版本库,

git config --global core.excludesfile ~/.gitignore_global

告诉git全局忽略.gitignore_global这个文件中的东西

vim ~/,gitignore_global

写入.DS_Store 然后:wq保存文件

这样在global范围内不管哪个版本库都会忽略这个文件。

5.忽略跟踪文件(项目级别)

在项目下创建文件

vim .gitignore

写入*.log

注意:git 不会忽略掉已经被跟踪的 可以使用 git rm --cached

二、基础

1.初始化 git init

然后生产.git文件夹 通常不需要动

在unix系统上 默认.结尾是隐藏的

2.提交 git commit

3.对比 git diff

git status 发现有修改

git diff index.html

比较与working directory与staged中的区别

如果暂存了就是比较working directory与暂存区的区别

如果有修改在暂存区,同时源文件又有修改,

git diff

比较working directory与staged中区别

git diff --staged 

比较 reponsitory与 staged暂存区中的区别

4.重命名 git rm

如果是style.css

在操作系统中给他重命名了seam.css

这时候git status就会提示你删除了style.css并且有新增的untracked的seam.css

这时候要

git rm style.css

git add seam.css

5.移动(重命名)文件

git mv theme.css naa-theme.css

6.删除文件

git rm 目录 -r(表示递归)

git rm theme.css

7.恢复被删除的文件

git checkout HEAD --(这两个横线表示当前分支) index.html 恢复到当前的一次提交

git checkout HEAD^ -- index.html 恢复到上一次提交

8.恢复历史版本

git log --oneline

git revert 版本号

 然后进入编辑器,进行修改后输入:wq退出编辑器

9.重置提交 git reset

默认情况下 每次提交以后指针都会指向最后一次提交

使用git reset控制指针的位置

 --soft 软重置 不会改变暂存区和工作区的内容 只改变commit信息

--hard 硬重置 直接把暂存区和工作区的文件内容改变

--mixed (默认是mixed) 它会把暂存区的文件内容改变

git log --oneline  ,然后

git reset --soft .... ,然后

git log --onelone  ,然后查看一下

git status

10.工作进度 stash

先修改一下Human.txt

这时候我想修改其他的东西,但是不想和humans.txt一起提交,可以把humans.txt暂存起来,

git stash save '修改了 humans.txt'

这个时候查看humans.txt发现humans.txt又变成了之前的样子了(因为我们已经把它给暂存起来了)

git status //干净的

git stash list 查看暂存的内容

git stash show -p(表示用补丁的方式查看) stash@{0}

git stash apply stash@{0} //恢复工作进度

git stash drop stash@{0} //删除这个暂存

git stash pop stash@{0} //在恢复工作进度的时候直接删除工作进度

 11.查看提交日志 git log

git log //f向下翻页 b向上翻页 q退出

git log --oneline

git log --oneline -5

git log --oneline --author='huhao'

git log --oneline --grep = 'index.html' //显示包含index.html的提交

git log --oneline --before='2014-07-05' //2014年7月5日和之前的提交

git log --oneline --before='3 days' //三天前的提交

git log --oneline --before='3 weeks' //三周前的提交

git log --oneline --graph //带图形的

git log有很多选项,可以使用 git help log 去查看详情的使用手册

三、分支

 

git branch mobile-feature //创建移动分支

git checkout mobile-feature

git branch //查看所有分支

git log --oneline --decorate //加一些装饰,能显示在哪个分支上提交的 --decorate

git log --oneline --decorate --all//显示所有的

git checkout master 回到master分支,发现刚才在feature上做的修改都消失了,

git log --oneline --decorate //发现虽然是有装饰的,但是看不到在feature分支上提交的内容

git log --oneline --decorate --all  //可以查看到包含feature的所有提交

3.对比分支区别

git diff master..mobile-feature

a代表两个点左边的分支 b代表右边的分支

f向下翻页,q退出

 

git diff master..mobile-feature index.html //只对比index.html文件的区别

 4.合并分支 fast-forward

git branch  //发现当前是在master分支上

git merge mobile-feature

//发现上面写着fast-forward 因为我们在创建mobile-feature以后 还没有对master做新的提交,所以就是fast-forward

git diff master..mobile-feature

5.合并分支(非fast-forward)

git checkout mobile-feature

添加修改

git commit -am '为Index.html添加一些内容' //-a(意思就是add)加m(给一个message)这样就不用先add了,

然后在master上也做一些修改,然后查看一下,

//这个时候提交修改就不能fast-forward了

git branch //发现当前在master分支上

git merge mobile-feature

然后出现了一个描述,可以自己修改描述信息

:wq

然后查看一下

 6.解决合并冲突

如果feature和master中修改了同一个文件,merge时就会产生冲突

解决的办法是把<<<和===之间的内容(包含这两个)都给删掉,还有>>> master 也要删掉

然后再git add. 然后 git commit ,这时候可以不写message,git会自动提供一个描述

 7.重命名分支

git branch bugfix //创建了一个新分支

git branch

git branch -m bugfix bugfix-1 //重命名分支 -m代表move

git branch

git branch -d 删除分支

四、远程

1.远程 remote

2.github创建添加版本库

git remote add origin xxxx.git(默认我们给他起名叫origin)

git remote -v (v表示verbose 即:详细信息)

git remote rm xxx(远程名)

3.推送分支

git push -u origin master (u 代表set upstream

git branch -a 查看本地分支

git branch -r 查看远程分支

git push origin mobile-featulre( 没有加 -u 就不会跟踪upstream了)

4.其他人使用远程版本仓库 pull request

李四点击 pull requst 然后 new pull request

主人 merge pull request

5.克隆 

git clone  xxxx.git new_foloder(克隆到new_floder文件夹里)

6.提取

张三在本地git clone,

主人修改了代码,并且进行了提交

张三 git status 仍然提示 up to date with origin/master

想知道主人有没有更新, 输入 git fetch

然后再git status 就会发现是有更新了

然后可以 git merge origin/master

7.Fork

fork完了可以修改,然后 pull request!

8.协同开发人员

github中的 Collaborators 然后 Add collaborator

五、图形工具

1.OS X中的github图形软件

2.brackets中的git扩展

3.介绍一下打标签:

git tag v0.1 

git tag //会发现v0.1这个标签

git show v0.1 //看一下详细信息

git tag -a(意思是annotate注释) v0.2 -m 'hola'

git show v0.2

git checkout v0.2

git tag -a v0.0 573c312ea -m 'init'  //让tag指向某个特定的提交

git tag -d v0.0 //删除标签

git push origin v0.2 //推送远程

git push --tags //把本地所有标签推送给远程

原文地址:https://www.cnblogs.com/eret9616/p/9375083.html