通关GitHug之后我收获了什么
2016-07-26 11:57
344 查看
.gitignore
*.a
lib.a
能够过滤掉除了lib.a之外所有的.a结尾的文件
git rm —cache filename
remove the file from staging area
git blame filename [1,10]
去查看某文件每一行的最近更新的人 用于blame狗屎代码到底是谁干的
git mv oldfile.txt newfile.txt
rename a file
git add . git commit —amend -m “some message you committed last time”
如果我做了一次提交,然后发现又要改一个文件,和上次的提交想要合并,这里的 commit —amend 就很好用了,
先 add 然后 git commit —amend -m “some message you committed last time”
当然,我们也可以用git reset —soft 到倒数第二次提交,然后重新 git commit -m 也行,不过上面那样就不用 reset了,也就不用重新生成这次提交的hash
git commit -m “add README file” –date “Wen July 26 12:00:00 +0800”
可以在未来的某个时间段提交代码
git reset filename
当我们 git add . 把好多文件都加载到暂存区,然后想让某个文件从暂存区恢复,那么 git reset filename 就可以解决问题
git diff & grep
在做 githug 的第29关点时候,问一个文件被修改了,然后告诉我哪一行被修改了。用 git diff 加各种参数不管用,然后 发现 git grep 这个指令 加上被修改的信息就大概能找出来, git diff 发现那一行被改后是 server.json ,那我就 git grep -n “server.json” 然后就拿到了 26 这个行号. 然后就bingo了
git branch -m oldname newname
35关,问如果 branch 的名字和 tag 的名字相同的话,如果切换到 tag 上。以为 git branch 加上参数比如 -tag 就能切换到 tag 呢,然后发现只能乖乖的把 branch rename 掉,然后再 checkout
git rebase
合并本地特性分支到 master 分支,主分支在前,feature 分支在后
但是每次合并拉取的远程分支时,都是 git rebase upstream/master master ,位置和本地分支的合并法是相反的啊
容我再研究研究
git cherry-pick
在新的分支上写了一堆,好几个commit,然后发现只有其中一个有用,我们想把那次提交合并到当前分支的话,只要切换到当前分支,然后 git cherry-pick 当次提交的hash 如果有冲突的话,解决一下冲突。
git grep “some code”
想查找某个具体的代码,如我想知道项目里有多少个 TODO ,那用 grep 就很简单了
git grep “TODO”
加 -c 会直接指出哪个文件里面有多少个
git rebase -i
如果有一堆 commit ,然后我想修改其中一条的commit message,那这个时候就要用到,git rebase -i
git rebase -i + commit hash(要修改的commit的前一条),然后在 vim 里面,里面有提示,可以把 pick 改为 reword
同理,如果想合并多个commit到一个上,那在 vim 里面,pick –> squash
*.a
lib.a
能够过滤掉除了lib.a之外所有的.a结尾的文件
git rm —cache filename
remove the file from staging area
git blame filename [1,10]
去查看某文件每一行的最近更新的人 用于blame狗屎代码到底是谁干的
git mv oldfile.txt newfile.txt
rename a file
git add . git commit —amend -m “some message you committed last time”
如果我做了一次提交,然后发现又要改一个文件,和上次的提交想要合并,这里的 commit —amend 就很好用了,
先 add 然后 git commit —amend -m “some message you committed last time”
当然,我们也可以用git reset —soft 到倒数第二次提交,然后重新 git commit -m 也行,不过上面那样就不用 reset了,也就不用重新生成这次提交的hash
git commit -m “add README file” –date “Wen July 26 12:00:00 +0800”
可以在未来的某个时间段提交代码
git reset filename
当我们 git add . 把好多文件都加载到暂存区,然后想让某个文件从暂存区恢复,那么 git reset filename 就可以解决问题
git diff & grep
在做 githug 的第29关点时候,问一个文件被修改了,然后告诉我哪一行被修改了。用 git diff 加各种参数不管用,然后 发现 git grep 这个指令 加上被修改的信息就大概能找出来, git diff 发现那一行被改后是 server.json ,那我就 git grep -n “server.json” 然后就拿到了 26 这个行号. 然后就bingo了
git branch -m oldname newname
35关,问如果 branch 的名字和 tag 的名字相同的话,如果切换到 tag 上。以为 git branch 加上参数比如 -tag 就能切换到 tag 呢,然后发现只能乖乖的把 branch rename 掉,然后再 checkout
git rebase
合并本地特性分支到 master 分支,主分支在前,feature 分支在后
但是每次合并拉取的远程分支时,都是 git rebase upstream/master master ,位置和本地分支的合并法是相反的啊
容我再研究研究
git cherry-pick
在新的分支上写了一堆,好几个commit,然后发现只有其中一个有用,我们想把那次提交合并到当前分支的话,只要切换到当前分支,然后 git cherry-pick 当次提交的hash 如果有冲突的话,解决一下冲突。
git grep “some code”
想查找某个具体的代码,如我想知道项目里有多少个 TODO ,那用 grep 就很简单了
git grep “TODO”
加 -c 会直接指出哪个文件里面有多少个
git rebase -i
如果有一堆 commit ,然后我想修改其中一条的commit message,那这个时候就要用到,git rebase -i
git rebase -i + commit hash(要修改的commit的前一条),然后在 vim 里面,里面有提示,可以把 pick 改为 reword
同理,如果想合并多个commit到一个上,那在 vim 里面,pick –> squash
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- 6 个托管 git 仓库的地方
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- git多账号登录问题解析
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git 使用及常用命令
- Git 常用命令整理
- git eclipse 插件的安装
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle