Git
Git是什么?
Git是开源分布式版本控制工具,方便团队对代码进行管理。
安装
在git网站上下载自己电脑的安装程序,一直下一步
配置身份
打开Git Bash,这个身份用于git log后的信息显示
git config --global user.name "xxx"
git config --global user.email "xxx@gmail.com"
创建本地仓库
进入项目目录下,通过git init即可创建本地仓库,此时项目会出现一个隐藏.git文件用来记录本地所有的Git操作
git init
配置提交省略文件
Git通过.gitignore文件将指定的文件或目录排除在版本控制之外,在Android Studio生成项目时,会自动生成两个.gitignore文件,一个是全局文件,另一个是模块文件,可对其进行修改。
查看修改内容
使用git status +文件名可以查看自上次提交后被修改的文件,如下查看当前目录被修改的文件
git status .
使用git diff +文件名查看具体变更内容,如下查看当前目录的具体修改
git diff .
撤销未提交的修改
在文件未被add时,可以通过使用git checkout +文件名恢复对文件的一切修改,如下还原当前目录的修改
git checkout .
当文件已被add时,需使用git reset HEAD +fileName对其取消添加,然后才能撤销修改,如下取消添加当前目录
git reset HEAD .
回退版本
当文件已被commit时,会生成一个id,通过git reset --soft/hard id可以将代码复原到之前的版本
git reset --hard id
git reset --soft id
hard回退到指定id的commit并还原所有修改,soft回退指定id的commit但不还原修改,非必要不使用hard,使用时最好对修改做好备份
hard只能回退修改的文件,若要删除新增的文件,可使用
git clean -xdf .
查看提交记录
通过git log可查看历史提交信息,其包括commit id、git config配置的用户名和邮箱、提交日期、git commit的备注
git log
通过git show可查看具体提交内容,参数–name-status只查看提交的文件
git show id
分支
分支的作用是在现有代码的基础上开辟一个分岔口,使得代码可以再主分支和分支线同时进行开发,再最后将分支线合并回主分支
查看分支
通过git branch可以查看当前本地分支(带有*标识),master为主分支,-a查看所有分支(包括本地和远程分支)
git branch
拉取分支
把远程分支拉到本地
git checkout -b branchName origin/branchName
切换分支
切换本地分支也是使用git checkout,如果不先拉取远程到本地,直接运行下面指令会导致HEAD指向远程分支,而不是指向本地分支
git checkout branchName
创建分支
创建分支需要加上分支名
git branch branchName
推送新分支到仓库
git push origin branchName
删除分支
删除本地分支加入-D参数,删除前需要切换到其他分支
git branch -D branchName
删除远程分支
git push origin --delete remoteBranchName
远程版本库
远程版本库是最原始的代码,团队成员从中获取代码各自开发,并将代码提交到版本库进行更新,而成员需经常从版本库中获取最新代码
下载远程版本库代码
可通过git clone下载远程版本库代码到本地,下载后默认为master分支,其中origin代表http或者ssh链接
git clone ssh/http
推送本地代码到远程版本库
需要先add、commit提交到本地,再git push推送到远程分支
git add .
git commit -m "xxx"
git push origin branchName
拉取远程版本库代码到本地
fetch+merge(手动合并)
获取远程代码库并同步到本地,使用fetch需要指定远程分支
git fetch origin master
同步下来的代码块会存到origin/master分支下,可通过diff查看区别
git diff origin/master
然后通过merge将origin/master分支合并到本地分支
git merge origin/master
pull(自动合并)
而pull命令等于fetch+merge,自动获取最新代码并直接合并到本地
git pull origin master
分支操作
拉取最新的主分支代码到当前分支
meger
将主分支的最新代码同步到branchName本地分支
git checkout master
git pull
git checkout branchName
git meger origin master
pull
将主分支的最新代码同步到branchName本地分支并提交,如果有冲突,需要解决冲突后再进行合并
git checkout master
git pull
git checkout branchName
git pull origin master
合并主分支上的某个特定提交到当前分支
将主分支的某commit-id同步到branchName分支
git checkout branchName
git cherry-pick master-commit-id
基于主分支重新创建当前分支
将branchName分支的第一条提交放到最新master分支的最后一条提交后面,如branchName分支为A-C,master分支为A-B,下面运行完之后branchName分支为A-B-C,这里需要强制推送,因为本地分支和远程分支的commit不一样了
git checkout master
git pull
git checkout branchName
git pull
git rebase master
git push -f origin branchName
将master分支的新提交内容导入branchName分支
- 如branchName分支为A-C,master分支为A-B,下面运行完之后branchName分支为A-B-C
git checkout master
git pull
git checkout branchName
git pull
git rebase master
git pull --rebase