git常用命令

git常用命令

添加到暂存区

  • 全部场景

  • git add -A .

  • git add -A 😕

  • 特殊场景

  • git add filename

  • git rm filename

  • git mv filename

回退commit

  • git reset HEAD filename 从暂存区撤销
  • git reset --hard 3628164 直接把所有文件回滚版本
  • 回退某个文件到特定版本
git log Default@2x.png
git reset 9aa51d89799716aa68cff3f30c26f8815408e926 Default@2x.png   此时只是将本地版本库回滚到这个版本
git checkout Default@2x.png 此时才将文件回滚,并将文件处于修改状态   
git commit -m "revert old file"  此时可以将文件回滚提交   

从仓库还原

  • git checkout filename

从暂存区撤销

  • git reset HEAD ...
  • 撤销后再从仓库还原就能得到原状态的文件

查看文件

  • git ls-files

提交文件

  • git commit -m "commit message"

忽略版本控制

  • .gitignore 作用域在当前目录及子目录,而且未被trached, windows下不支持注释

  • 对于已经提交到版本库的,git rm filename && git commit -m "gitignore update"

版本差异比较

  • git diff 比较暂存区(有已经add的) 和 工作区(未add加入版本控制的不会比较), 在未add时等同于git diff HEAD
  • git diff --cached 比较暂存区和版本库
  • git diff HEAD 比较工作区和版本库
  • git diff 版本号 版本号 比较版本库的内容
  • git diff 版本号 比较当前版本和历史版本的内容
  • git diff HEAD^ 比较当前版本和上一版本
  • git diff HEAD^^ 比较当前版本和上上一版本
  • gitk& 查看版本记录及版本树

创建分支

  • git checkout -b work_branch

绑定远程分支,提交

从远程分支 pull

  • git fetch origin
  • git merge origin/master

git特殊场景

  • 如果一个项目下有几层目录,每层目录下均有一个 .git, 每个.git的范围都是.git 所在目录及子目录; 针对这种情况, 每个git 命令的作用域均为其最近的上层或同层目录中的 .git文件
  • .git不识别目录,只有当目录下存在非目录文件时,目录才会被git识别
  • 当有嵌套的.git文件时,只有 子目录的git add提交后,父目录的git 才能add提交
  • 针对这种情况以后的工作习惯是 先提交子,再提交父, down的时候先down副父,再down子。
  • 最好不采用该种目录结构

查看分支

  • git branch

常规问题

  • HEAD detached at bfb8e41
git checkout  的作用是让HEAD头指针指向对应的分支,有时侯也会指向对应的提交 ID ,比如 git commit bfb8e41 或者误操作后,这个时候如果想还原可以采取一下操作

git check -b detachedfix 意思是在当前的头指针指向的地方建立分支

git rebase master 将主分支的更改合并到detachedfix分支

git checkout master  切换到master分支

git merge detachedfix 将修补分支的更改合并到主分支

git config core.ignorecase false 忽略大小写关闭,默认是忽略大小写的

冲突

rebase 问题
http://www.cnblogs.com/sinojelly/archive/2011/08/07/2130172.html


修改冲突
git add -u 
git rebase --continue

不停的 合并并执行上面三步,解决所有问题,完结后不需要commit

merge问题


修改冲突
git add -u

不停的 合并并执行上面两步,解决所有问题,最后一定要 commit


关于rebase 后重复 rebase 冲突的问题

`

要慎用rebase, 当该版本的patch 已经rebase 过后, 即master 分支已经合并到本地时, 不要再 rebase, 否则会产生莫名奇妙的冲突.

rebase 前可以先看一下最新的 master 是否在 develop 内, 如果有就不用rebase了, 直接在 master merge 即可.

`
正确的顺序应该是

git merge origin/master //master
git rebase master //test 分支
git merge test //master 分支
git push -u origin master // master分支

免密码输入

 git config --global  credential.helper store

在仓库中去掉已经加进去的文件

git rm --cached file

gitignore策略

*dir* dir/

List all commits for a specific file

git log -p file
git log --follow file
posted @ 2016-03-06 14:21  骡子1号  阅读(465)  评论(0编辑  收藏  举报