Git 的一些常用命令和参考学习资料
常用命令参考 1常用命令参考 2学习 Git 阮一峰学习 Git Bootstrap远程操作参考
rebase 
shell
git checkout -b [feature-branch-rebase]  #current in feature-branch.
git checkout master
git pull
git checkout [feature-branch-rebase]
git rebase -i [commit-id-这个分支的多次提交的前一个]#将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
git rebase master -i  #current in feature-branch-rebase.
# 2.resolve conflict
# 3. commit file to stage
git add .
# 4. continue
git rebase --continue
git checkout master
git merge feature-branch-rebase查看远程仓库信息 
git remote -v本地库关联远程库 
git remote add origin git@github.com:nanfei9330/learngit.git查看所有分支(本地加远程) 
git branch -a查看远程分支 
git branch -r拉取远程分支到本地分支 
git checkout -b 本地分支名 origin/远程分支名推送本地分支到远程分支 
git push origin 本地分支名:远程分支名删除远程分支 
git push origin --delete [name]版本 
git checkout 234ab5
git reset --hard 534iu4分支 
创建 
git chekout -b dev   // -b 创建并进入切换分支 
git chekout dev合并分支 
- 正常合并
git merge dev    //当前分支合并 dev 分支- --no-ff 合并 --no-ff 禁用 Fast forward 模式在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev删除分支 
git branch -d dev   // -D 强制删除push 本地分支到远程 
git push origin dev查看记录 log 
git log --graph --pretty=oneline --abbrev-commit将当前分支的修改状态存储起来,存储后使得工作区是干净的,就可以 pull 最新代码。
存储 
git stash查看 
git stash list取出 
- 取出列表某个:
git stash drop  statsh@{2}- 取出最后一个: 取出后会删除最后一个状态
git stash pop标签 tag 
创建 
git tag <tagname> [ commit id ]  //默认为HEAD,也可以指定一个commit id- -m 指定标签信息
git tag -a <tagname> -m "blablabla..."- 推送某个标签到远程
git push origin <tagname>- 推送全部标签到远程
git push origin --tags查看 
- 全部
git tag -l- tag 名称
git show <tagname>删除 
- 本地
git tag -d v0.1- 远程
git tag -d v0.1
git push origin :refs/tags/v0.9tag other 
git tag -l | xargs git tag -d #删除所有本地分支
git fetch origin --prune #从远程拉取所有信息
#查询远程tags的命令如下:
git ls-remote --tags origin
tag常用git命令:
git tag #列出所有tag
git tag -l v1.* #列出符合条件的tag(筛选作用)
git tag [tag名] #创建轻量tag(无-m标注信息)
git tag -a [tag名] #创建含注解的tag
git push origin --tags #推送所有本地tag到远程
git push origin [本地tag名] #推送指定本地tag到远程
git tag -d [本地tag名] #删除本地指定tag
git push origin :refs/tags/[远程tag名] #删除远程指定tag
git fetch origin [远程tag名] #拉取远程指定tag
git show [tag名] #显示指定tag详细信息别名 
git config —global alias.lg “log —color —graph —pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ —abbrev-commit”pull push 配置项 
要把当前分支 push 和 pull 的默认分支设置为 dev
git branch --set-upstream-to=origin/dev dev未分类 
丢弃工作区文件修改 
git checkout -- b.txt暂存区修改放回工作区 
git reset HEAD b.txt将文件从缓存中删除(非物理) 
git rm --cached  "文件路径"版本回退 
shell
# 显示最近300条提交记录
git log -300
git reset --hard [commitID]
#强制提交
git push -f origin master
#更简单的做法(回复上一个版本)
git reset --hard HEAD~1
git add .
git commit "xxx"
git push -f origin mastergit 如何忽略本地文件 , 但这个文件要保存在远端库 
git 在远端库有一个 web.config 的配置文件, 把这个库克隆到本地以后, 需要忽略这个配置文件的 push 和 pull . 应该怎样做?
通常,远端库应该保存的是 web.config.example 这样的文件,然后开发者 clone 仓库下来,cp web.config.example web.config,再对 web.config 进行修改。而 web.config 是 git ignore 的。或者,你在本地执行 git update-index --assume-unchanged web.config,然后你就可以随意更改了。但当远端库的 web.config 更改时,你本地 pull 时会提示需要手动处理 web.config 文件(因为有 uncommitted 的内容),你可以先执行 git update-index --no-assume-unchanged web.config 把 changes 放出来,然后 stash 下... 然后 pull,然后解决冲突。
别名 
shell
#示例
git config --global alias.mlog 'log --oneline --graph'Rebase Global Config 
shell
# cat ~/.gitconfig
git config --global pull.ff true
git config --global pull.rebase true
git config --global rebase.autoStash truegit set push same name 
shell
git config --global push.default currentgit http clone set username and password to .git/config 
[remote "origin"]
    url = https://username:password@github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*