git pull 暴力覆盖本地文件 1 2 3 git fetch --all git reset --hard origin/master git pull
Git界面工具菜单项对应的Git命令
Fetch…1 git fetch -v --progress "origin"
Reset…
自定义log输出格式
显示提交信息,作者,提交时间:
1 git log --pretty=format:'-%Creset %s %C<bold blue><%an> %Cgreen <%ai>' --abbrev-commit
显示提交信息,作者:
1 git log --pretty=format:'-%Creset %s %C<bold blue><%an>' --abbrev-commit
筛选某个日期后的log:
1 git log --after=2017-05-26-22
筛选某一秒后的log:
1 git log --after=2017-05-26-22-12-30-00
Git提交到多个远程仓库 http://blog.csdn.net/isea533/article/details/41382699
先再仓库A关联仓库B,再用push 加选项–all,将本地所有分支都推送到已关联的所有仓库。
git的用户配置 git的全局配置,存储于$HOME/.gitconfig 里,这里的配置影响当前用户的所有git repo。
1 2 1. $ git config --global user.name 2. $ git config --global user.email handsomerocco@gmail.com
git的局部配置,存储于$HOME/.gitconfig 里,这里的配置影响当前用户的所有git repo。
1 2 3. $ git config user.name “username” 4. $ git config user.email handsomerocco@gmail.com
版本回退
未push的回退 :
已push的回退 :
1 revert to this version :
1 revert to parent version : ???
打标签tag 查看当前已有标签:
创建一个标签:
创建一个标签:
1 git tag v1.7.8.0 -m "这是一个标签的message"
已上命令是在本地创建标签,然后我们需求将标签提交到远程仓库
提交(发布)一个标签:
1 git push origin v1.7.8.0
删除本地tag
用push, 删除远程tag
1 git push origin :refs/tags/v1.7.8.0
分支管理 创建一个分支:
切换到指定分支:
将本地创建的一个分支提交到远程仓库,作为远程仓库的一个分支:
1 git push origin 1.8.0.0:1.8.0.0
克隆仓库
如何clone git 项目到一个非空目录 如果我们往一个非空的目录下 clone git 项目,就会提示错误信息:
1 fatal: destination path '.' already exists and is not an empty directory.
解决的办法是:
1 2 3 4 5 1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://git.oschina.net/NextApp/platform.git tmp 3. mv tmp/.git . 4. rmdir tmp 5. git reset --hard HEAD
然后就可以进行各种正常操作了。
git pull 失败,提示无法创建index.lock文件 UNABLE TO CREATE ‘…GIT/INDEX.LOCK’ FILE EXISTS
解决办法:
问题: 在对git库执行一些操作命令时(比如git am ,git pull,git push等操作)的时候,会出现类似如下提示(我是在用git am打patch时出现的,其他情况也是一回事):
1 2 3 4 5 ronny@ronny:~/tmpgitrepol$ git am ~/03patch/kernel/0001-add-kernel-version.patch --keep-cr Applying: add kernel version for compile Auto packing the repository for optimum performance. You may also run "git gc" manually. See "git help gc" for more information. Counting objects: 84286, done .
而且git am 后不退出,必须要ctrl+c退出。(其实是git 在将松散对象打包,这个需要时间,没有执行完打包,所以没退出) 里面主要关心如下两句:
1 2 Auto packing the repository for optimum performance. You may also run "git gc" manually. See "git help gc" for more information.
即表示: 自动包装最佳性能的存储库。 你也可以手动运行 ‘get gc’ 。查看更多信息请执行“git help gc”。
当有这个提示的时候,直接运行 ’ git gc ‘,就可以了。
原因: Git 往磁盘保存对象时默认使用的格式叫松散对象 (loose object) 格式。Git 时不时地将这些对象打包至一个叫 packfile 的二进制文件以节省空间并提高效率。当仓库中有太多的松散对象则就会提示你运行 ’ git gc ‘。 解决办法: 我们可以运行 ’ find .git/objects -type f ’ 命令,查看一下 objects 目录里有多少对象,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 1. ronny@ronny:~/tmpgitrepol$ find .git/objects -type f 2. .git/objects/e4/00a9bf597d6956e6cfc5a4ba57e0f8d78a3025 3. .git/objects/70/8d7c923cb5954bfe1944e7cf7d7de93298f42f 4. .git/objects/70/86ddbb3226ad236d3d806cd530006e07392048 5. .git/objects/bd/b9f69f1b169e6f364455636ef3fb9037f345c5 6. .git/objects/c4/49782586498f0669271dbb5b2ae92abae7b7cd 7. .git/objects/4a/4c07ddbe727381f1ee9aab6faa194827419f1b 8. .git/objects/17/df87cafd85c400b71c7e56ffc2eaa78d2a55d8 9. .git/objects/ad/f130fd58cd2a0831a47f17e7f14d7ed4d86f9c 10. .git/objects/97/9c677acf5eb4e45ebe299e8c4b947d899b01af 11. .git/objects/79/56a405a7bc6e412685a967b3e798445c31bb36 12. .git/objects/79/12f0ebebb70a675e6ffa57703ddb78bf99d221 13. .git/objects/4b/ee144e033edd74677a14c311b1eb32b6ef8d6d 14. .git/objects/4b/1c9b2ce657a6677143b3c08b05379c6b62af05 15. .git/objects/info/packs 16. .git/objects/da/3de9a5f2e2d43a9bd53f74368f7e3623d1c1f6 17. .git/objects/47/b15e4bb0313b9255252c6815bbeb6cf56f9f2c 18. .git/objects/72/3be48015613503f9c315781b6c7bc60de76c0b 19. .......................... 20. .git/objects/d6/6bc0f7bd27bf0fc0383792871854c497a01e3d 21. .git/objects/d6/9a6b3dcb61590a63ca464d69b3613be857936b 22. .git/objects/pack/pack-862a0b39f354a7fde317459d6dcb8162c865d172.pack 23. .git/objects/pack/pack-862a0b39f354a7fde317459d6dcb8162c865d172.idx 24. .git/objects/7f/d654bfdd3255e07154ff3ef8388e295d79e3b0 25. .git/objects/32/cef5fe936a99b2875942dbbefb93242df454fd 26. .git/objects/c3/0e9e1875925d71757ffda53b103f99c56d5bda 27. .git/objects/3f/87d962119364899e0ad111d869f4fb289bad3b 28. .git/objects/9c/d6bd685d29237f2b82425019dcc549781932a2 29. .git/objects/95/557cadc1df7bcc8657a842fbf35fb0566d84e9 30. .git/objects/ee/abfadeea2c0c6467e279d0c8907141e0a27d1c 31. 32. .......................... 33. 34. .git/objects/d7/f7edb7d654eccd6b7acd0d2e501793bf14e42f 35. .git/objects/bc/b69da6f5b1294e32deb97046a80dac8b473ddd 36. .git/objects/73/51b70ef6db6adc61da2c766eb13397b6506152 37. .git/objects/e2/4d68e5288cfbc200b863c16178f0c32ef5d672 38. .git/objects/cb/588c96be139adaaaafed4225b16452fc3b69b3 39. .git/objects/0b/babb1c4e28109bb3cf8e5b9ece5aaeec90d417 40. .git/objects/28/043911626d5f683938f47477e8680b7d654710 41. .git/objects/a6/5151506d5821f160bf03e19ec362ba1929a79a 42. .git/objects/b3/8f35933655073128e9b2a5ebdd6c72d8090811 43. .git/objects/98/1b94a3bf5ab22f868452d7a1eb5128278ae3d7
然后我们执行git gc试试
1 2 3 4 5 6 1. git gc 2. Counting objects: 84389, done . 3. Delta compression using up to 8 threads. 4. Compressing objects: 100% (52015/52015), done . 5. Writing objects: 100% (84389/84389), done . 6. Total 84389 (delta 31577), reused 84317 (delta 31531)
然后在运行 ’ git gc ’ 命令后,再执行刚才的命令,看下 object 目录里面还剩下多少对象,如下:
1 2 3 4 5 1. ronny@ronny:~/tmpgitrepol$ find .git/objects -type f 2. 3. .git/objects/info/packs 4. .git/objects/pack/pack-ad6385919cc8c0e4ba2ec4cf7c8e8119a337f625.idx 5. .git/objects/pack/pack-ad6385919cc8c0e4ba2ec4cf7c8e8119a337f625.pac
接下来再执行git 命令的时候就没有这种情况了,patch直接应用,且不再有上面的提示。
解决办法2:静静等待几分钟自动完成。哈哈哈哈哈哈哈哈哈哈….
合并来自其他分支的指定的n个commit
功能: git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。 选择将N个commit合并到当前本地分支。
示例: 当前本地分支dev,远程分支dev2,需要将dev2的某个commit合并过来。
首先,本地分支目录下,点击show logs,切换到查看dev2的logs。 然后,选中指定commit,右键选择cherry pick,再点continue,解决冲突,再点done。完成将dev2的commit提交到本地dev分支。 最后,本地测试一下,没有问题的话,直接push。就可以了。