TABLE OF CONTENTS
- 工作原理
- 配置文件
- 常用命令
- 远程仓库
- 分支管理
- 标签管理
工作原理
.git
文件夹:版本库,创建.git
版本库时,git自动给我们创建了暂存区。
git add
是把文件添加进去,实际上就是把文件修改添加到暂存区。
git commit
提交更改,把暂存区的所有内容提交到当前分支。
每次修改,需要git add
添加到暂存区后,git commit
才能把修改提交到分支。
配置文件
- 局部配置文件(当前项目):项目路径下的
/.git/config
配置命令git config --local user.name="xxx"
- 全局配置文件(当前用户):用户目录%HOMEPATH%下的
.gitconfig
配置命令git config --global user.name="xxx"
- 系统配置文件:Git安装目录下的
/etc/gitconfig
配置命令git config --system user.name="xxx"
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| git init // 初始化仓库 git add file.txt // 添加文件 git commit -m "comment" // 提交改变到缓存 git log // 查看改动信息 git diff file1 file2 // 文件差异查看
/* 版本回退 */ git log --pretty=oneline // 查看简要信息,版本号 git reset --hard HEAD^ // 当前版本 git reset --hard <版本号> // 重置版本 git reflog // 查看历史命令 git status // 查看状态
/* 撤销修改 */ git checkout -- file // 丢弃工作区的修改
/* 删除文件 */ rm file // 本地直接删除 git rm file // a.版本库中删除 git commit -m "remove file" // b.提交更新
/* 配置别名 */ git config --global alias.st status // 为全局status配置别名 git config --global alias.last "log -l" // 为全局配置git last显示最近一次提交
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" // 贼好用
|
远程仓库
1 2 3 4
| ssh-keygen -t rsa -C "youremail@example.com" git remote add origin git@github.com:solano-yume/yourrepository.git // 关联远程仓库 git push -u origin master // 推送master分支所有内容到远程仓库 git clone git@github.com:solano-yume/yourrepository.git // 克隆仓库,ssh协议,也可以用https协议
|
分支管理
- HEAD指向当前分支,master分支是主分支。
- git分支合并只需改改指针,工作内容不变。
团队开发分支策略
- master分支仅用于发布新版本,极其稳定,平时不能在上面干活
- 团队在dev分支上,每个人都有自己的分支,时不时往dev分支合并即可。
合并方式
- 普通模式合并:合并后的历史有分支,能看出曾经做过哪些合并。
- fast forward:合并后看不出曾经做过合并。
推送分支:将该分支上的所有本地提交推送到远程库
- master主分支、dev开发分支时刻同步远程,bug分支一般用于本地修复bug无需同步,feature分支是否推送到远程,取决你是否和小伙伴合作在上面开发
- 抓取失败:推送冲突时,先抓取最新提交到本地,然后本地合并,解决冲突,再推送即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| /* 基本 */ git checkout -b dev // 创建并且切换到分支,等价下面两行 git branch dev git checkout dev
git branch // 查看当前分支 git merge dev // 合并dev分支到当前分支 git branch -d dev // 删除分支 git branch -D dev // 丢弃一个没有被合并的分支 git log --graph --pretty=oneline --bbrev-commit // 查看分支合并图(简单) git log --graph // 查看分支合并图(详细) git merge --no-ff -m "merge with no-ff" dev // 不使用fast forward模式
/* Bug分支 */ git stash // 存储工作现场 ... // 创建分支issue-xxx改bug git stash list // 查看工作现场保存在哪 git stash apply // 恢复现场,不删除保存的stash内容,要删除用git stash drop git stash pop // 恢复现场,删除保存的stash内容 git stash apply stash@{0} // 多次stash,选择需要恢复的现场
/* 多人协作 */ git remote // 查看远程库信息 git remote -v // 查看远程库信息(详细) git push origin dev // 推送dev分支 git checkout -b dev origin/dev // 创建origin的dev分支到本地 git pull // 把最新的提交同步到本地(抓下来)
git branch --set-upstream branch-name origin/branch-name // 建立本地分支和远程分支的关联
|
标签管理
1 2 3 4 5 6 7 8 9 10 11 12
| git tag v1.0 // 给当前分支打上标签 git log --pretty=oneline --abbrev-commit // a.查找历史提交comment id git tag v0.9 7825a50 // b.给comment id打上标签
git tag // 查看所有标签 git show v0.9 // 查看标签信息 git tag -a v0.1 -m "version 0.1 released" 7825a33 // 创建带说明的标签 git tag -s v0.2 -m "signed versioin 0.2 released" fe1233a // PGP私钥签名标签 git tag -d v1.0 // 删除标签 git push origin v1.0 // 远程推送标签 git push origin --tags // 一次性推送全部未推送到远程的本地标签 git push origin :refs/tags/v0.9 // 远程删除标签
|
声明:本站所有文章均为原创或翻译,遵循署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,如需转载请确保您对该协议有足够了解,并附上作者名 (Tsukasa) 及原文地址