开发环境
dev repo
MASTER开发分支
TEST测试分支(测试部门)
PRO产品分支(生产分支)
gitollte(git仓库服务)
remote repo
生产环境
1.git clone
2.git fetch/git merge
3.mvn war:war
个人开发环境
git checkout .
git co dev
参考文档:www.kernel.org/pub/software/scm/git/docs/git-log.html
git branch
git branch test
git branch
git checkout test
git branch
每写完一个小节,都提交一次
git add -u #如果创建了新文件,执行git add -i
git commit
下班后,执行一次推送
git push
回家之后,继续work,将mirror版本库中的数据同步到本地
git pull mirror master
完成一天的工作后
git push home #将家中的提交推送到标记为home的版本库中
第二天到公司,先从home版本库中将家中的提交同步到公司的电脑中
git pull home master
现场版本控制
git init
添加文件并提交
git add -A
git commit -m"initialized"
为初始提交建立一个里程碑:v1
git tag v1
开始在工作区中工作-修改文件并提交
git commit -a
当对修改结果满意并想将工作成果保存带走时,可以通过下面的命令将V1
开始的历次提交逐一导出为补丁文件。转换的补丁文件都包含一个数字前
缀,并提取提交日志信息为文件名,而且补丁文件还提供对二进制文件的
支持。举例:
git format-path v1…HEAD
0001-Fix-typo-help-to-help.patch
0002-Add-I18N-support.patch
0003-Translate-for-Chinese.patch
通过邮件将补丁文件发出。
git send-email *.patch
修改提交说明
git commit --amend
如果要修改某个历史提交的提交说明,使用变基命令
git rebase -i ^
删除误加入的大文件winxp.img
git rm --cached winxp.img
git commit --amend
如果是历史版本,使用变基操作
git rebase -i ^
一次提交只干一件事,或者完成了一个新功能,或者是修改了一个bug,或
者写完了一节的内容,或是添加了一幅图片,就执行一次提交
git add 将 #修改的内容加入提交暂存区
git add -u #将所有修改过的文件加入暂存区,
git add -A #将本地删除文件和新增文件都登记到提交暂存区
git add -p #对一个文件内的修改进行有选择性的添加
git diff
git diff --cached
git stash 保存工作进度
git checkout <new_branch> 切换到新的分支中
git checkout <orignal_branch> 切换回当前分支
git stash pop 回复之前保存的工作进度
git fetch #工作区更新,获得最新版本的git
##执行清理,避免前一次编译的遗留文件对编译造成的影响。丢弃本地对
git代码的改动
git clean --fdx #
git reset – hard #
git tag #git的里程碑
git checkout v1.7.4.1 #检出该版本的代码
工作区中建立目录a/b/c,进入该目录
cd …工作区
mkdir -p a/b/c
cd 工作区/a/b/c
显示版本库.git所在位置
git rev-parse --git-dir
全局配置文件进行编辑
git config -e --global
git reset HEAD 暂存区的目录树会被重写,会被master分支指向的目录
树所替换,但是工作区不受影响
git rm --cached 直接从暂存区删除文件,工作区则不做出改变
git checkout.或git checkout – 会用暂存区全部的文件或指定
的文件替换工作区的文件。
git checkout HEAD .或git checkout HEAD 会用HEAD指向的
master分支中的全部或部分文件替换暂存区和工作区中的文件。
git ls-tree -l HEAD 底层命令 ls-tree查看暂存区及HEAD中的目录树
git cat-file -t xxx查看ID的类型
git cat-file -p xxx查看对象的内容
问题:fatal: Unable to create ‘F:/git-file/.git/index.lock’:
File exists.
解决办法:rm -f ./.Git/index.lock
暂存区的文件对象,可以用:path/to/file来访问
cat .git/refs/heads/master 一个游标,在有新的提交发生的时候指向
了新的提交。
git reset,可以将“游标”指向任意一个存在的提交ID
git reset --hard HEAD^
cat .git/refs/heads/master
ls
CHAPTER 7 重置
git log --graph --oneline
git reset --hard xxx #重置到之前版本的一次提交
git reflog show master | head -5
git reflog show master #查看master分支的日志文件
git reset --hard master@{1}
git clean -nd #测试运行
git clean -fd #强制删除
git stash list
git stash drop #删除一个存储的进度。默认删除最新的进度
git stash clear #删除所有存储的进度
git stash apply #不使用git stash pop,因为这个保存的进度要被多次
用到
git checkout HEAD^ – src/hello.h #此时hello.h被重新添加到暂存区
git commit --amend -m"…" #修改说明
git reset --soft HEAD^^ #回到最近两次提交之前