level 6
rebase
git fetch只获取,并不合并
本地与远端使用git rebase
git rebase进行了三步操作
把所有master的改变放到一个临时区域里面
运行所有origin/master的提交
运行在临时区域的commits
本地两个分支间的rebase,master和 develop均有提交
在develop分支下,
git rebase master
然后再git checkout master
把develp合并过来
git merge develop
conflicts本地master和远端origin/master都修改了同一个文件,并在本地提交
解决冲突
在master上git fetch
然后git rebase,这样保证在master上有最新的代码
这里会提示有冲突
当解决了问题,则用git rebase –continue
level 7
git log
sha hash
git config –global color.ui true
git log –pretty=oneline
git log –oneline –stat
当前分支与 master 的区别
git log --oneline ...master
git log -p 查看具体的改变
git diff == git diff HEAD
git diff HEAD^
git diff HEAD~5
git diff HEAD^..HEAD
git diff sha..sha
git diff master develop
对于单个文件一直以来的变化
git blame index.html –date short
git status 看到有不想提交的,则在 .git/info/exclude 把文件过滤掉
.gitignore
git 删除文件
git rm README.txt
在 system 中不会被删除,但在 git 中会删除
git rm –cached development.log
mac 指定 merge 工具
git config --global merge.tool opendiff git config --global alias.st status 来设置 status 的别名
level 4
git push rejected
首先git pull
pull的动做细分
git fetch到origin/master
将origin/master合并到本地 master
git merge origin/master
现在再push
conflict
必须手动解决
level 1
查看staged文件做了哪些改动
git diff –staged
在提交的同时进行添加
git commit -a -m “add index”
将修改的文件恢复
git checkout — cats.html index.html
undo上一次提交,并将改变放到 staging 中
git reset --soft HEAD^
只修改上一次的提交
git commit --amend -m "New Message"
undo 上一次的提交和修改,你的修改会丢失
git reset --hard HEAD^
undo 上两次的提交和修改
git reset --hard HEAD^^
git reset HEAD ostrich.html
查看远端的 fetch 及 push地址
git remote -v
git remote add <name> <address>
删除远端 repo
git remote rm <name>
git push -u origin master
origin是远端 repo 的名字, master 是本地分支的名字
设置 git config user
git config --global --edit #全局配置在 ~/.gitconfig [user] name = myusername email = [email protected] 当前项目配置在 .git/config
想要保存一个空目录时,一般添加一个空文件.gitkeep,比如
secrets/.gitkeep
macOS 自动保存到 keychain
git config --global credential.helper osxkeychain
Leave a Reply