Msysgit 笔记

msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。

1. Git全局配置:

$ git config --global user.name "Your Name"            //  用户名
$ git config --global user.email "email@example.com"   //  用户邮箱
$ git config --global core.autocrlf true               //  中文编码
$ git config http.proxy http://proxy:port              //  设置代理d
$ git config git config http.postBuffer 524288000      //  Post大小

2. 初始化仓库: git_init 命令把目录变成Git可以管理的仓库

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

3. 文件的添加与提交

//  可以添加多个文件
$ git add readme1.txt
$ git add readme2.txt
// 一次性提交到仓库
// 如果注释有中文时可以先执行这个命令
$ git config --global core.autocrlf true
$ git commit -m "这里添加注释必需有"
// 运行git status命令查看仓库的状态
$ git status

4.文件对比与历史记录

// 查看文件的修改
$ git diff readme.txt
// 工作区和版本库里面最新版本的区别
$ git diff HEAD -- readme.tx
// 查看仓库日志
$ git log
// 简洁的输出日志
$ git log --pretty=oneline
// 查询当前的状态
$ git status

// 重排之前的所有版本
$ git rebase –i[commit号]

master0(初始化后的版本)
||
v
master1===test0==>test1===>test2
||
v
master2===>master3
1. 这个时候,通过第一种git reset的方式,可以将master分支的当前状态(master3)
回溯到master分支的master0、master1、master2状态。 也可已将test分支当前状态(test2)
回溯到test分支的test0、test1状态,以及test分支的父分支master的master0、 master1状态。
2. 那么。如果我要让test分支从test0到test2之间所有的改变都添加到master分支来,
使得master分支包含test分支的所有修改。这个时候就要用到git rebase了。
这个时候,git做了些什么呢?
先将test分支的代码checkout出来,作为工作目录
然后将master分支从test分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,
rebase就搞定了.如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,
可以运行git rebase –continue继续直到完成
如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),
另一个是直接用test分支的取代当前分支的(git rebase –skip)

5. 版本回滚

// HEAD^上个版本 HEAD^^上上个版 HEAD~100上100个版本
$ git reset --hard HEAD^
// 回到指定的版本
$ git reset --hard 3628164
// 查看命令记录
$ git reflog

6.工作区和暂存区

$ git add: 文件添加进去,文件的修改添加到暂存区
$ git commit: 实际上就是把暂存区的所有内容提交到当前分支

7. 文件的修改

// 可以丢弃工作区的修改
// 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时
$ git checkout -- readme.txt
// 把暂存区的修改撤销掉(unstage),重新放回工作区
// 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改
$ git reset HEAD readme.txt
// 删除文件
$ git rm test.txt
$ git commit -m "remove test.txt"

8. 分支管理

// 新建分支并切换
$ git checkout -b dev
$ git branch dev
$ git checkout dev
// 用git branch命令查看当前分支
$ git branch
// 分支合并
$ git checkout master
$ git merge dev
// 全并禁用“Fast forward”模式
$ git merge --no-ff -m "merge with no-ff" dev
// 删除分支
$ git branch -d name
// 强制删除分支
git branch -D feature-vulcan
// 查看合并历史
$ git log --graph --pretty=oneline --abbrev-commit
【分支策略】
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,
再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样

image

9.stash功能: 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

// 保存当前状态
$ git stash
// 所有状态
$ git stash list
// 恢复1,会删除stash内容
$ git stash pop
// 恢复2,不会删除stash内容
$ git stash apply
$ git stash drop
$ git stash apply stash@{0}

10. 远程仓库

// 远程空白仓库本地push
$ git remote add origin git@github.com:michaelliao/learngit.git
// 克隆远程仓库
$ git clone git@github.com:michaelliao/gitskills.git [目录]
// 修改远程仓库地址
git remote set-url origin git@github.com:michaelliao/learngit.git

11. 本地库与远程库

// 本地库推送远程库
$ git push origin master
// 新建DEV库并推送
$ gia checkoub -b dev
$ git push origin dev
// 更新远程库到本地库
$ git pull
// 删除远程库
$ git push origin --delete dev
$ git push origin :dev

12. 本地标签与远程标签

// 创建标签
$ git tag v1.0
// 指定版本创建历史
$ git tag v0.9 6224937
// 加注释指定版本创建标签
$ git tag -a v0.1 -m "version 0.1 released" 3628164
// 查看标签记录
$ git tag
// 查看标签详细
$ git show v0.9
// 删除标签
$ git tag -d v0.9
// 推送标签到远程库
$ git push origin v1.0
// 推送所有到远程库
$ git push origin --tags
// 删除远程标签库
$ git push origin --delete v0.9
$ git push origin :refs/tags/v0.9

13. 忽略特殊文件

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
【.gitignore文件】
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa

发表评论

邮箱地址不会被公开。 必填项已用*标注