[TOC]
1. 如何使用Git导出项目
Git没有SVN的导出功能,不能像 svn export url 那样,将某个版本的代码导出为不带版本控制文件的文件夹。
Git提供了archive命令,可以把版本的文件流导出。
可以将Git的特征值加入到导出的文件名中,例如:
git archive –format zip -o site-$(git log –pretty=format:”%h” -1).zip HEAD
对于打过tag的历史版本,我们可以使用tag导出,例如:
git archive v1.0 | gzip > xxxx.tgz
2. 提交时忽略某些更改
对于没有入库的文件
命令:touch .gitignore
创建.gitignore文件
在文件中写入需要忽略的文件(如:*.diff ……具体见链接),或者不遵循忽略原则的特例(文件前加“!”)(注:只对untracked files有效)
对于已入库的文件
命令:Git update-index –assume-unchanged FILENAME 路径+文件名
若以后不想忽略该文件的修改,则输入命令:git update-index –no-assume-unchanged FILENAME
查看那些文件被设置了忽略 git ls-files -v | grep ‘^h’
3. 同步从Github上Fork的项目
1、首先克隆项目到本地
1 | git clone https://github.com/project |
2、添加原作者项目的remote地址,将代码获取到本地
1 | git remote add source https://github.com/project |
source 相当于一个别名
3、合并代码
1 | git checkout master |
这时如果没有冲突,本地代码已经和远程原作者项目一样了,可以把代码提交到自己的Github库。
4. 如何修改Git配置文件
1、增加配置
1 | git config --global --add configName configValue |
2、删除配置
1 | git config --global --unset configName |
3、修改配置
1 | git config --global configName configValue |
4、查看配置
1 | git config --global --list |
5. Git卡死的情况
有的时候提交或者拉取的时候,出现长时间没有响应的情况。
1 | $ git gc |
6. 如何解决conflict冲突
Git做任何修改之前,最好先 git pull。
如果提交的时候遇到Automatic merge failed; fix conflicts and then commit the result.
则表示有无法自动合并的冲突,需要手工处理。
其中<<<<<<< HEAD 到 ======= 中间的内容是local提交的。
======= 到 >>>>>>> commit-id 是远程仓库中的内容。
手工解决文件中的冲突后,重新git add 并且 git commit
。
最后再进行git push
这时远程仓库的内容就已经更新了。
如果在执行 git pull
的时候,本地也已经做过修改,可能会出现下面的提示
1 | $ git pull |
此时可通过下面的步骤即实现内容的更新,又保留自己本地的修改。
1 | $ git stash |
7. 如何从版本库中移除文件但不删除
1 | $ git rm -r node_modules --cached |
8. 查看某次提交的内容
1 | git show 6edc4bdcc1c966dc07cb5649f3be6a125ff01d4a [file] |
9. 回退本地修改内容,使用服务器端版本
未使用git add缓存代码的情况
1 | $ git checkout -- filename |
放弃所有文件的修改
1 | $ git checkout . |
此命令会将整个内容修改删除,但是不会删除新建的文件,因为新建的文件还没有加入到git管理体系中。
已使用git add但是未git commit的情况
1 | $ git reset HEAD filename |
放弃所有文件修改
1 | $ git reset HEAD |
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了第一步1. 未使用git add 缓存代码,继续使用用git checkout – filename,就可以放弃本地修改
已经git commit提交的情况
回退到上一次commit的状态
1 | $ git reset --hard HEAD^ |
回退到任意版本
1 | $ git reset --hard commit id |
10. 创建分支
1 | # 查看当前本地分支 |