学习目标
- git的使用(解决冲突,合并分支,rebase等等)
- git的定制配置
git常用操作:
reset命令有3种方式:
1. git reset –mixed
:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
2. git reset –soft
:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
3. git reset –hard
:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
4. git reset HEAD CONTRIBUTING.md
:对某个文件回退
更新操作
git pull --rebase origin master
- 如果你忘加了rebase,pull 操作仍然可以完成,但每次 pull 操作要同步中央仓库中别人修改时,提交历史会以一个多余的『合并提交』结尾。 对于集中式工作流,最好是使用 rebase 而不是生成一个合并提交
比较文件
git diffdiff里面a表示前面那个变量,b表示第二个变量
HEAD commit版本
Index staged版本
查看尚未暂存的文件更新了哪些部分,不加参数直接输入
git diff
此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
也就是修改之后还没有暂存起来的变化内容。查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
git diff --cached git diff --staged
显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)
显示工作版本(Working tree)和HEAD的差别
git diff HEAD
直接将两个分支上最新的提交做diff
git diff topic master
或git diff topic..master
输出自topic和master分别开发以来,master分支上的changed。
git diff topic…master查看简单的diff结果,可以加上–stat参数
git diff –stat查看当前目录和另外一个分支的差别
git diff test
显示当前目录和另一个叫’test’分支的差别
git diff HEAD – ./lib
显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下)比较上次提交commit和上上次提交
git diff HEAD^ HEAD比较两个历史版本之间的差异
git diff SHA1 SHA2
查看文件修改历史
git blame filename
git log -p filename
标签
git tag
显示所有标签
git tag v2.0/tagName
打标签
git push origin v2.0.0
提交标签
git tag -l 'v1.8.5*'
显示特定的标签
分支管理
git branch name
git checkout -b name
git branch -d name
暂存
当你正在做一项复杂的工作时, 发现了一个和当前工作不相关但是又很讨厌的bug. 你这时想先修复bug再做手头的工作, 那么就可以用 git stash 来保存当前的工作状态, 等你修复完bug后,执行’反储藏’(unstash)操作就可以回到之前的工作里.
$ git stash save "work in progress for foo feature"
当你修复完bug后, 你可以用git stash apply来回复到以前的工作状态.
$ git stash apply
储藏队列
你也可多次使用’git stash’命令, 每执行一次就会把针对当前修改的‘储藏’(stash)添加到储藏队列中.
用’git stash list’命令可以查看你保存的’储藏’(stashes):
$>git stash list
stash@{0}: WIP on book: 51bea1d… fixed images
stash@{1}: WIP on master: 9705ae6… changed the browse code to the official repo
可以用类似’git stash apply stash@{1}’的命令来使用在队列中的任意一个’储藏’(stashes).
‘git stash clear‘则是用来清空这个队列.
git stash
git stash list
git stash apply
git stash apply stash@{1}
git配置
git config --global user.name [username]
git config --global user.email [email]
ssh-keygen -t rsa -C “maochg@yonyou.com”
使用git config –list查看已设配置
git自定义
windows的可以在用户文件夹修改.gitconfig文件我的配置如下:
[alias] #别名配置
co = checkout
cm = commit
p = push origin
st = status -sb
tags = tag -l
remotes = remote -v
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch -a
remotes = remote -v
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --
[diff] #比较工具配置,我在本地配置成了bcompare
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = "\"C:/Beyond Compare/BComp.exe\" \"$LOCAL\" \"$REMOTE\""
[merge]
tool = bc4
[mergetool] #比较工具配置
prompt = false [mergetool "bc4"] cmd = "\"C:/Beyond Compare/BComp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
[core]
autocrlf = true
如果喜欢这篇文章请到 我的博客 逛一下