git命令行的使用
0. 工作中常使用的命令行(小结)
- 假设我们工作共同使用的开发分支为dev,我自己的开发分支为dev_cx。安装git,在工作文件夹下打开git bash。
- $ git checkout dev_cx 确定在自己分支上
- $ git add . 暂存修改
- $ git commit -m "修改了xx模块的xxbug" 提交自己暂存的这些修改并写上说明文字
- $ git checkout dev 切换到大家共同使用的开发分支dev上
- $ git merge dev_cx 将自己修改的内容合并到dev分支上
- $ git pull origin dev 拉取dev上别人提交的代码,可能会使用 :q退出当前页面
- $ git push origin dev 将本地dev内容推送到远程
- $ git checkout dev_cx 切换回自己的分支继续开发
- $ git push origin dev_cx 有必要的话将自己的分支推送到远程
【注】详细内容查看1-10,来源:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1. 设置用户名和邮箱
- $ git config --global user.name "Your Name"
- $ git config --global user.email "email@example.com"
2. 创建版本库
- $ mkdir chenxue 创建一个名称为chenxue的文件夹
- $ cd chenxue
- $ pwd 显示当前目录
- $ git init 将这个目录变成git可以管理的仓库,当前目录下会出现一个.git目录,用来跟踪管理版本库,这个目录是默认隐藏的,不能随意更改。
- 创建一个readme.txt文件
- $ git add readme.txt 添加文件到仓库
- $ git commit -m "本次提交说明" 将文件提交到仓库
- $ git status 时刻掌握仓库当前的状态
- $ git diff readme.txt 查看如何修改的readme.txt文件
3. 版本回退
- $ git log 提交历史
- $ git log --pretty=oneline 同上。相对显示信息少
- $ git reset --hard HEAD^ 回退到上一个版本,在git中,使用HEAD表示当前版本,上一个版本就是HEAD,上上个版本就是HEAD^,往上100个版本写成HEAD~100
- $ git reset --hard 2456546 命令行不关闭的话,找到未来版本号(前几位),即可指定回到未来的某个版本
- $ git reflog 命令历史,可以找回之前的版本号
- $ git diff HEAD -- readme.txt 查看工作区和版本库里面最新版本的区别
4. 撤销修改
- $ git checkout -- reade.text 丢弃工作区的更改,回到最近一次git commit 或git add 的状态(注:两种情况,文件是否在暂存区)
- $ cat readme.txt 读取文件内容
- $ git reset HEAD readme.txt 将暂存区的文件换到工作区
5. 删除文件
- $ rm readme.txt 删除文件 (1)确定删除的话:$ git rm file , $ git commit -m "" (2)不想删除的话:$ git check out -- file
6. 远程仓库
- $ git push -u origin master 第一次提交,添加-u参数,之后就可以去掉-u参数
- $ git clone "远程地址"
- $ git checkout -b dev 创建并切换到dev分支,相当于$ git branch dev,$ git checkout dev
- $ git branch 查看当前分支
- $ git merge dev 合并指定分支到当前分支
- $ git branch -d dev 删除dev分支
- $ git log --graph 查看分支合并图
7. 分支管理策略
- $ git merge --no-ff -m "说明" dev 禁用fast forward 模式提交。【注】合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
- 实际开发中原则:①master分支是非常稳定的,仅用来发布新版本。②工作一般在dev分支上
- $ git stash 将修改的文件添加到暂存区。
- $ git stash list 查看暂存区的内容
- $ git stash pop 恢复暂存区的内容至工作区,相当于$ git stash apply ,$ git stash drop
- $ git stash apply stash@{0} 工作去有多条暂存内容的时候,恢复指定的内容。
- $ git branch -d dev_cx 删除
- $ git branch -D dev_cx 强制删除(用于丢弃一个没有被合并过的分支)
- $ git remote 查看远程库的信息 ,$ git remote -v 显示更详细的信息
- $ git push origin dev 推送分支 【注】:若推送失败,因为远程分支比本地新,先用 $ git pull 试图合并。
- $ git checkout -b dev_cx origin/dev 创建远程的dev分支到本地
- $ git pull 抓取分支
- $ git branch --set-upstream dev origin/dev 设置dev和origin/dev的链接。【注】:如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令$ git branch --set-upstream branch-name origin/branch-name。
8. 标签管理(tag)
- 发布一个版本时,通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
- $ git tag v1.0 切换到需要打标签的分支上,使用此命令创建标签
- $ git tag 查看所有标签
- $ git log --pretty=oneline --abbrev-commit 查找历史提交的版本号
- $ git tag v1.2 "版本号"
- $ git show v1.2 查看标签信息
- $ git tag -a v1.2 -m "1.2版本" "版本号" //创建带有说明的标签
- $ git tag -d v1.2 删除未推送到远程的标签
- $ git push origin v1.2 推送某个标签到远程
- $ git push origin --tags 推送所有没有推送到远程的标签到远程
- 【注】:若已推送到远程,先从本地删除,然后从远程删除,$ git tag -d v1.2, $ git push origin :refs/tags/v1.2
9. git配置项
- $ git config --global color.ui true 让git显示颜色
- .gitignore文件 检验.gitignore的标准是git status命令是不是说working directory clean
- $ git check-ignore -v App.class 检查ignore规则是否写的有问题或者我们应该修改哪个规则
- $ git config --global alias.st status 以后st就表示status