git笔记

39
0
# 一 创建git 仓库

#创建目录
$ mkdir learngit
$ cd learngit
$ pwd
# /Users/michael/learngit

$ git init
Initialized empty Git repository in ~/learngit/.git/


# 新增文件 
$ vim readme.txt

#Git is a version control system.
#Git is free software.

#提交到暂存区
$ git add readme.txt
#提交到当前分支	
$ git commit -m "注释(必须)"

# 回退上一个版本
$ git reset --hard HEAD^
#回退指定版本
$ git reset --hard 1094a
#检查命令记录
$ git reflog

#丢弃工作区的文件
$ git checkout -- readme.txt

#把暂存区的修改撤销掉(unstage)
$ git reset HEAD readme.txt


# 删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"

#误删恢复
$ git checkout -- test.txt

#把本地仓库关联到远程库 //远程库的名字就是origin Username用户名为自己的用户名 且可以关联多个库
$ git remote add origin git@github.com:[Username]/learngit.git
$ git remote add origin2 git@github.com:[Username]/learngit.git
# 关联远程分支
$ git branch --set-upstream-to=origin/dev dev
# 取消关联
# git remote rm origin

#把本地库 (当前分支)推送到远程  -u关联本地和远程master ,可以简化命令
$ git push -u origin master
#提交 master 分支
$ git push origin master
#克隆远程库
$ git clone git@github.com:[Username]/learngit.git

#查看分支
$ git branch
#创建分支
$ git checkout -b dev
#或者以下两条命令创建分支
$ git branch dev
$ git checkout dev
#从远程 origin 创建分支  dev
$ git checkout -b dev origin/dev

#当输入$ git push后会提示远程没有这个分支 以下推送分支到远程
$ git push --set-upstream origin feature1
# 或者
$ git push origin feature1:feature1

$ git checkout master
#合并指定分支到当前分支
$ git merge dev
#如果出现分支冲突 中止合并 没有问题就重新commit 
$ git merge --abort
# 如果出现和他人的冲突 先pull 再解决冲突
$ git pull

#删除分支
$ git branch -d dev
$ git branch
#!!!强行删除分支
$ git branch -D feature
# 删除远程分支
$ git push origin --delete dev
$ git push origin :dev

#合并 dev到分支 且禁用Fast forward 相当于创建新的 commit 需要 -m   //--no-ff 普通模式合并,合并后的历史有分支,能看出来曾经做过合并
$ git merge --no-ff -m "merge with no-ff" dev

#注意 对于所有分支而言 工作区和暂存区是公共的


#临时切出工作区(例如修复bug)
$ git stash
$ git stash list
$ git stash apply
$ git stash drop
#切回原本工作区并删除stash 
$ git stash pop

#创建标签 (默认在 HEAD)
$ git tag v1.0
# 查看标签列表
$ git tag
# 查看某个标签信息
$ git show v1.0
# 对历史提交打标签 
$ git tag v0.9 f52c633
# 打标签并且创建说明文字
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
#推送标签到远程库
$ git push origin v1.0
# 一次推送标签推完 
$ git push origin --tags
# 删除标签
$ git tag -d v1.0
# 删除远程库标签(推送空标签 :前面为空)
$ git push origin :refs/tags/v1.0

#查看远程仓库信息
$ git remote
$ git remote -v
#查看状态
$ git status
#查看已经 add 的不同
$ git diff  #difference
#查看commit日志
$ git log
$ git log --pretty=oneline --abbrev-commit
# 变基 git rebase 提交历史变成直线
$ git rebase
# 显示不同颜色
$ git config --global color.ui true
# 简化命令 git st 代表 git status
#co表示checkout,ci表示commit,br表示branch
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
# 撤销暂存区自定义别名
$ git config --global alias.unstage 'reset HEAD'
# 显示最后一次操作
$ git config --global alias.last 'log -1'
# 丧心病狂的操作 
$ 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"

# --global 全局参数 否则只有当前库 配置位置 当前库:.git/config  全局: ~/.gitconfig

# gitignore
# https://github.com/github/gitignore 忽略文件

# 我去--help文档里面看,然后搜了一下,应该是这么理解 冒号在这里,前面为空,即将一个“空”的标签推送给对应的标签,即删除 也有类似的,就是删除分支 git push origin :to-del-branch 原型是 git push origin master:new-branch 将本地的master分支推送到远程的new-branch


GIthub 

…or create a new repository on the command line
echo "# d1-tech" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:justroylau/d1-tech.git
git push -u origin master
…or push an existing repository from the command line
git remote add origin git@github.com:justroylau/d1-tech.git
git push -u origin master
…or import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.

 

全部评论