Learn Git
更新一下我工作中比较常用到的 git 技巧。
- 为公司的项目 repo 单独设置 git 的用户信息,这样就不会影响到其它的项目了。
git config user.name "zxy"git config user.email "zxy@zhihu.com"
- 想要把当前修改的东西都删掉,也就是还原到上一次 commit 的样子。
# git clean -df# git checkout -- .
发现一种更好用的方法
git stashgit stash drop
- 如果上一次的 commit 不想要了,下面这条命令会取消你的 commit,并回到 * 的状态。
git reset HEAD^
- 如果你干脆不想要上一次的 commit 了。
git reset --hard HEAD^
- 如果你想把在某个分支的 commit 转移到其它的分支。 可以使用
git cherrypick
功能(不知道为什么要起个这样的名字
本文所有内容筛选自Git ,我只是总结了一些我觉得有用的。
其实我学习编程不长时间就了解到了开源和GitHub。那时觉得(现在也是),大家齐心协力地开发一个程序是一件提高技术而且有趣的事儿。苦于技术不够,一直没有机会研究这些。最近有一些空闲时间,决定系统地研究一下git,学习一下开源代码。
起步
配置
git config
- /etc/gitconfig 系统中所有用户都适用的配置
- ~/.gitconfig 只适用于该用户的配置
- .git/config 当前项目中的配置
用户信息
$ git config --global user.name "X140Yu"
$ git config --global user.email xxx@xx.com
如果更改当前项目的配置,去掉 global 选项
查看配置信息
git config -l
获取帮助
$ git help config
获取有关于config的帮助Git 基础
取得项目的 Git 仓库
- 在本地初始化新仓库
git init
对某个现有项目进行 git 管理git add
指定跟踪的文件git commit -m 'something'
提交
- 从现有仓库克隆
git clone [url] name
从[url]处保存每一个文件每一个版本(分布式的优点) 此操作会在当前目录创建一个 name 的目录,name 参数可以忽略。
记录每次更新
文件的两种状态:
* 已跟踪 * 未跟踪
已跟踪的文件修改完毕后放入暂存区,最后一次性提交所有暂存的文件。
检查当前文件状态
git status
跟踪新文件
git add filename
把目标文件快照放入暂存区,如果为未跟踪文件会被标记为需要跟踪。忽略某些文件
某些文件不需要被纳入 git 管理,可以在项目内创建
.gitignore
文件,列出忽略文件模式。 例如:# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件`
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
查看已暂存和未暂存的更新
git diff
尚未暂存的文件和暂存快照之间的差异。git diff --staged
暂存起来的文件和提交时的差异提交更新
git commit
打开编辑器输入提交说明git commit -m "xxxxx"
在一行命令中提交更新git commit -a
跳过add步骤直接提交移除文件
git rm
从暂存区移除,连带从工作目录删除 git rm --cached
移除跟踪但不删除文件移动文件
git mv file_from file_to
查看提交历史
git log
列出所有更新git log -p
列出每次提交的内容差异撤销操作
git commit --amend
修改最后一次的提交 git reset HEAD filename
取消已经暂存的文件,变为未暂存 git checkout -- filename
取消对文件的修改,仅限于还没放入暂存区的文件远程仓库的使用
git remote
查看当前远程库git remote -v
显示对应的克隆地址git remote add [shortname] [url]
添加一个新的远程仓库git fetch pb
抓取 pb 这个仓库的git push origin master
推送数据到远程仓库git remote show origin
查看某个远程仓库的详细信息git remote rename pb paul
renamegit remote rm paul
delete打标签
git tag
列出现有标签 git tag -a
添加标签 git show v0.1
显示v0.1标签的信息技巧和窍门
git config --global alias.xxx yyyyy
把 yyyy 起别名为 xxx