Git 常用记录
常用命令
添加相关
git add . 当前目录添加所有文件(. )
git add README.md Hello.java 添加指定文件(README.md Hello.java )
git add *.txt 当前目录添加所有 txt 文件(*.txt )
git add -f a.log 可以添加被忽略的文件(a.log )
提交相关
git commit -m "注释" 将暂存区文件提交到存储库
git commit -am "注释" 将工作数中文件提交到存储库,减少git add
git commit --amend 修改上一条提交信息
日志相关
git log 显示提交日志信息
git log --pretty=short 只显示提交信息的第一行
git log README.md 显示指定目录/文件的日志(README.md )
git log -p 显示文件的改动
git log -p README.md 指定文件(README.md )的改动
git log --graph 以图表形式查看分支
git reflog 查看当前仓库所有的操作日志
比较相关
git diff 查看工作树和暂存区之间的差别
git diff HEAD 查看工作树和最新提交的差别
git diff README.md 指定文件(README.md )的差别
git diff master test 在两个分支之间(master test )最新的提交比较
git diff test 查看当前目录和另外一个分支(test )的差别
git diff SHA1 SHA2 比较两个历史版本之间的差异
分支相关
git branch 只列出本地现有的分支
git branch -r 只列出远程分支
git branch -a 列出远程和本地所有分支
git branch test 创建新分支(test )
git branch -d test 删除(test )分支
git branch -m test test1 修改分支名称(test -> test1 )
git branch --set-upstream-to=origin/test test 远程分支关联,在执行git pull, git push操作时就不需要指定对应的远程分支(本地test -> 远程origin/test)
git checkout <分支名称> 切换到已存在分支
git checkout -b <分支名称> 切换并创建分支
git checkout -b test
等价于
git branch test
git checkout test
git checkout <tag> 在当前分支上取出 tag的版本
git checkout master file 放弃当前对文件file的修改
git checkout -b test origin/test 从一个分支(origin/test )迁出另一个分支(test )
名称相同时,等价于 git checkout origin/test
合并相关
git merge test 快进式合并,将 test 分支合并到当前分支(只是指针移动,不推荐)
git merge --no-ff test 合并分支(例如:在master新建个历史进行合并,推荐)
标签相关
git tag 列出所有标签
git tag -l 'v1.0.*' 列出1.0相关的标签
git tag -a v1.0.0 给当前仓库增加标签(v1.0.0 ),弹出编辑器增加说明
git tag -a v1.0.0 -m '注释' 给当前仓库增加标签(v1.0.0 ),并指定注释
git show v1.0.0 查看相应标签信息(v1.0.0 )
git tag -d v1.0.0 删除标签(v1.0.0 )
标签需要额外推送
git push origin v1.0.0 推送一个标签
git push origin --tags 推送所有标签
git push origin :<tag> 删除远程标签
下载相关
git pull origin test1:test 将origin 主机的test1 分支和本地test 分支合并
git pull origin test 将origin 主机的test 分支和当前分支合并
推送相关
git push origin master 将本地的master 分支推送到origin 主机的master 分支,不存在就会新建分支
删除origin 主机的master 分支
git push origin :master
等同于
git push origin --delete master
git push -u origin master 与多个主机存在追踪关系时,-u 来指定默认主机,后面就可以不加任何参数使用git push 了
管理仓库
git remote 列出已存在的远程仓库
git remote -v 列出仓库详细信息
git remote add <仓库名> <仓库地址> 添加一个远程仓库
储藏相关
git stash 储藏所有未提交的修改(包括暂存的和非暂存的),不推荐
git stash save "注释" 储藏所有未提交的修改(包括暂存的和非暂存的),推荐
git stash pop 从堆栈中删除第一个stash放置到当前工作目录中
git stash apply [n] 默认从堆栈中将第一个stash放置到当前工作目录中,不删除;n代表第几个(0,1)
git stash drop [n] 移除stash;n代表第几个(0,1)
git stash list 查看现有stash
git stash clear 删除所有缓存的stash
git stash show [-p n] 查看指定stash的diff;n代表第几个(0,1)
其他常用命令
git clone <url>
git init
git status
git reset --hard <hash值>
git rm <file>
git rm -r <folder>
git mv <source> <target>
git fetch upstream <原仓库地址>
git rebase -i HEAD~2
常见情景
切换分支操作,又不能放弃现有操作 / 本地更改与上游更改相冲突,拒绝覆盖
git status
git stash save "注释"
git stash list
git stash list
git stash pop/apply
git status
Github Flow 开发流程
-
从开发版的分支(develop)创建工作分支(feature branches),进行功能的实现或修正 -
工作分支(feature branches)的修改结束后,与开发版的分支(develop)进行合并 -
重复上述1和2,不断实现功能直至可以发布 -
创建用于发布的分支(release branches),处理发布的各项工作 -
发布工作完成后与master分支合并,打上版本标签(Tag)进行发布 -
如果发布的软件出现BUG,以打了标签的版本为基础进行修正(hotfixes)
|