首页 > 代码库 > git常用

git常用

git恢复文件

git checkout — filename

git reset HEAD — filename

git config –global alias.unstage ‘reset HEAD –’

git config –global alias.restore ‘checkout –’

git log filename

git reset <hash> filename

这个时候回退的文件是在缓冲区

需要git commit -m ‘revert filename’

git checkout <hash> filename 这里是直接恢复了,不安全

 

git reset 的时候把缓冲区的文件都移动出来

设置别名

git config –global alias.ci commit

git config –global alias.co checkout

git config –global alias.unstage ‘reset HEAD’

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"

忽略文件

.gitignore

# 这行是注释*.a                   # 忽略所有 .a 伟扩展名的文件!lib.a                # 但是 lib.a 不忽略,即时之前设置了忽略所有的 .a/TODO            # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略 build/               # 忽略所有的 build/ 目录下文件doc/*.txt           # 忽略如 doc/notes.txt, 但是不忽略如 doc/server/arch.txt

增加颜色

git config –global color.ui true

打标签

git tag v1.1

git tag -a v1.1 -m ‘stable version 1.1

git tag

git show v1.1

git tag v1.2 <hashcode>

git push origin v1.1 推送一个标签

git push origin –tags

git tag -d v1.1

git push origin :refs/tags/v1.1 删除远程标签

多人协作

git remote

git remote -v

git push origin master

git push origin dev

并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
  • 总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

抓取分支

git clone git@git.oschina.net:human/data.git

默认是在master分支

git branch

git checkout -b dev origin/dev 创建分支,到远程

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接

$ git branch –set-upstream dev origin/dev

git工作现场的保护和恢复

git stash

查看暂存列表

git stash  list

应用 git stash apply stash@{0}

删除git stash drop stash@{0}

应用+删除 git stash pop

git stash clear

注意 stash@{0}是最近一次压入的

git 日志

显示分支:

git log –graph –pretty=oneline –abbrev-commit

git log –graph命令可以看到分支合并图。

查看所有提交的Hash值

git reflog

回滚到指定的版本

git reset –hard <hash>

恢复文件

如果只是在工作区对文件进行修改,直接从本地仓库从新读取。

git checkout — filename

如果文件已经提交到缓存区,先把文件从缓存区移动出来,然后同上

git reset — filename

增加缓冲区,提交到本地仓库

git add -A 在工作目录,提交未跟踪的文件和已经跟踪的修改的文件到缓存区

git add -u 在工作目录,提交已经跟踪的文件且修改的文件到缓存区

git commit

git commit -m ‘message add here’

git commit -a 在工作目录,提交已经跟踪的文件且修改的文件到本地仓库

文件比较

git diff HEAD~2 HEAD~1 README.md

git diff README.md

git diff HEAD~1 README.md

git diff HEAD~2 README.md

如果文件已经提交到缓冲区:

git diff –cached

分支:

git branch 显示所有分支

git branch -a 查看远程分支

git remote add origin git@github.com:huangjunhua/bugfreejs.git

git remote rm origin

git push origin dev 把分支dev推送到远程

git checkout branchName 切换到指定分支

git checkout -b branchName 新建分支
相当于: git branch branchName; git checkout branchName

git branch -d dev 删除分支dev

git branch -D dev 强行删除分支

在master分支上执行:

git merge dev 合并dev到master分支上

git merge --no-ff -m "merged bug fix 101" issue-101

 

git常用