赞
踩
git init
# 可在提交到版本库前多次使用
git add <file>
git status
git diff <file> #比较工作区和暂存库的文件
git diff HEAD --<file> #比较工作区和版本库的文件
# 一次性提交所有暂存区文件
git commit -m "your commentary"
优化配置在“其它”的“别名”里点这
git log #输出从最近到最远的提交日志,版本变化时也会变化
git log -1 #最近一次
git log --pretty=oneline #更加简洁地输出
git reflog #查看命令历史,可以用来回到未来的版本
git reset --hard <cmmit id>
#除了commit id,HEAD也可用,HEAD指向当前版本,HEAD^指向前一个版本
#同理HEAD^^指向上上个版本
#HEAD~100指向往上的第100个版本
# 如果暂存区有内容就回到暂存区,否则回到版本库
# 文件删除了也可以用这条命令从版本库里恢复
git checkout -- <file>
# 将暂存区中的内容删除
git reset HEAD <file>
git rm <file>
git commit -m "text"
git tag <name> # 创见一个标签
git tag #查看所有标签
git tag <name> <commit_id> # 可给以前的id打标签
git show <name> # 查看标签信息
git tag -a <name> -m "text" <commit_id> # 创建有说明文字的标签
git tag -d <name> # 删除标签
# 远程操作相关(下面)
git push origin <name> # 推送某个标签到远程
git push origin --tags #一次性推送所有尚未推送到远程的本地标签
# 若要删除远程的标签
git tag -d <name> # 先删除本地标签
git push origin :refs/tags/<name> #再用该命令
提交
注意用tag提交在上面几行("标签"中)
# 生成密匙对
ssh--keygen -t rsa -C "youremail@example.com"
# 查看公匙
cat ~/.ssh/id_rsa.pub
# 仓库放了公匙后添加到远程仓库
git remote add origin git@github.com:xxx/xxxx.git
# 第一次上传文件(其实-u起到了关联分支的作用)
git remote # 查看链接的远程仓库
git remote -v # 也可以查看
git push -u origin master
# 之后上传文件
git push origin master
# 此时就不能按原来那样命名origin了,要命不同的名字
git remote add github git@github.com:xxx/xxxx.git
git remote add gitee git@gitee.com:xxx/xxxx.git
git remote rm origin # 如删除原有的github仓库
git clone git@github.com:xxx/xxxx.git
# 创建远程仓库的dev到本地(原因是上面的命令默认拉去master分支)
git checkout -b dev origin/dev
# 拉去dev分支
git pull
# 若出现错误提示(no tracking information),把提示命令复制下来,如下
# 指定两branch的链接(一次就行)
git branch --set-upstream-to=origin/<branch name> <branch name>
# 再pull
# 之后再手动解决冲突
#再提交
git commit -m "text"
git push origin dev
git branch # 查看分支 git branch <branch name> # 创建分支 #切换分支 git checkout <name> git switch <name> # 同样可以 # ------ # 创建+切换分支 git checkout -b <name> git switch -c <name> # 同样可以 # ------ # 合并某分支到当前分支,启用[Fast forward](即完成后删除那个分支) git merge <naem> # ------ git branch -d <name> # 删除分支(已合并) git branch -D <naem> # 强行丢弃一个没被合并的分支 git log --graph # 查看分支合并图 git log --graph --pretty=oneline --abbrev-commit # 简洁一点 # 合并某分支到当前分支,不启用[Fast forward](即不删除那个分支,利于团队合作) # --no-ff表示 不删除 # -m 即要新建一个commit git merge --no-ff -m "text" <branch name>
======master====>
^ ^
====|=dev======|========>
^ ^
======|==Mike===> |
=================Bob=|==>
# 假设现在为dev分支,要到master分支上修bug git stash # 把当前工作现场暂时储存起来 # 现在用'git switch'可以看到工作区是干净的 git checkout master git checkout -b issue-101 #如果已有,则不用'-b' # 然后修复文档,如index.php git add index.php git commit -m "fix bug 101" git switch master git merge --no-ff -m "merged bug fix 101" git switch dev git stash list #列出储存的工作现场 git stash pop #恢复并删除stash # 刚才的命令等价于'git stash apply'加上'git stash drop' # 'git stash pop stash@{0}'等可以指定,apply、drop也可以这样。 # 若dev分支也有master上的bug git cherry-pick <commit_id> # 把刚才在master上的特定提交复制到dev上
git rebase # 作用是把提交历史变成一条直线
# 可以用git log --graph --pretty=oneline --abbrev-commit 查看提交历史
#不建议随便用,因为别人开发也会受到影响
只需要在工作区下添加".gitignore"文件即可
有现成的配置文件
git config --global alias.st status # st就表示status了, git st
# 使git log更加好用 git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# 由于我的yellow显示为white,就改了一下:
git config --global alias.lg "log --color --graph --pretty=format:'%C(bold red)%h%Creset -%C(bold cyan)%d%Creset %s %Cgreen(%cr) %Cred<%an>%Creset' --abbrev-commit"
# 其它如git reset HEAD file 改为 git unstage
git config --global alias.unstage 'reset HEAD'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。