前提条件:
1、确保您的电脑已经安装了git工具;
2、您已经创建一个GitHub/gitlab远程仓库,并配置好ssh key。
3、创建一个GitHub远程仓库,如:git@github.com:yann02/HelloKotlin.git
参考:点击打开链接
git初始化
git init
配置用户名和邮箱
配置局域用户名和邮箱
配置用户名:git config user.name "任意名字abc"
配置邮箱名:git config user.email "任意邮箱117@qq.com"
配置全局用户名和邮箱
配置用户名:git config --global user.name "任意名字abc"
配置邮箱名:git config --global user.email "任意邮箱117@qq.com"
绑定远程仓库
git remote add origin git@github.com:yann02/HelloKotlin.git
origin为仓库的默认名称,您也可以起任意的仓库名称,仓库名称常用于拉取仓库代码和提交代码到仓库
提示: 推荐默认 origin 为开发环境,因为测试环境的拉取推送操作会比较频繁,正式环境可以将origin 改为 prod,名字可以任意取。
绑定origin master后先拉取GitHub上的仓库数据
git pull origin master
master:对应GitHub上的master分支
查看状态
git status
红色代表未缓存,绿色表示已缓存
查看不同
git diff
查看某个文件的不同
git diff 文件路径
如:git diff app/123.txt
查看缓存后的不同
git diff HEAD
退出查看不同
q
添加修改到本地仓库
git add .
提交到本地仓库
git commit -m "update some file"
update some file:本次提交的描述信息
提交到远程master仓库
git push origin master
分支
创建分支(默认是master)
git branch "dev"
dev:分支名称
通过远程分支创建本地分支,并将远程分支的内容同步到本地分支
git fetch origin dev:dev
注:该指令并不会在创建完成后直接跳转到dev分支
查看已经存在的分支
git branch
查看所有分支(本地和远程)
git branch -a
注:远程分支用红色字体标注。该指令使用还有疑问,有待研究。
切换到本地dev分支
git checkout dev
切换到远程分支(未经验证,待尝试)
git checkout -b 本地分支名称 远程分支完整名称
合并master分支
假设我们当前在新创建的dev分支
git merge master
合并master分支的内容到dev分支
stash撤销修改的内容
stash操作常用于分支切换时快速删除未被缓存的修改,并能随时恢复删除的内容。
1、快速使用
git stash 将当前的修改删除,并保存到stash
git stash pop 恢复上次删除的内容
2、带备注的撤销,方便指定恢复的内容
git stash save "message"
git stash pop stash@{num}
num:当num=0时,代表恢复最近的一次保存,1、2、3等依次类推
3、其它stash常用命令及详细说明
1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
2)git stash list :查看stash了哪些存储
3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
8)git stash clear :删除所有缓存的stash
退出vim窗口
1、按下键盘的ESC键
2、连按两次大写字母Z
对比两个分支的差异
TAG
创建本地tag
git tag <版本名称>
如:git tag 1.0.1
创建本地含提交信息的tag
git tag <版本名称> -m "TAG说明信息"
提交本地tag版本到远程仓库
git push origin <tag版本名称>
删除本地某个版本tag
git tag -d <版本名称>
通过指定的tag创建分支
git checkout -b branch_name tag_name
版本回退
版本回退
1、回退到指定(commit_id)版本
git reset --hard commit_id 退到/进到 指定commit提交版本
2、回退到上一版本
git reset --hard HEAD^
强制提交
当你回退到某个版本并改动以后,如果你想覆盖之前代码并提交当前修改的代码,则可以使用下面的指令强制提交到某个分支。
git push origin dev --force
dev:分支名称
绑定远程仓库和直接clone远程项目的区别
1、clone会直接克隆整个项目,包括项目名称的文件夹
2、绑定远程仓库需要提前创建好项目名称的文件夹,在这个文件夹里面初始化git
clone的使用
1、克隆主干项目
git clone 远程仓库地址(如:git@github.com:yann02/HelloKotlin.git)
2、克隆分支项目
git clone -b 分支名称(如:dev) 远程仓库地址(如:git@github.com:yann02/HelloKotlin.git)
完整用例:
git clone -b start_kotlin https://github.com/googlecodelabs/android-workmanager