May you return with a young heart after years of fighting.
愿你出走半生,归来仍是少年。
1.git下载与配置
Windows上Git安装访问网址https://git-for-windows.github.io/,下载完成后找到安装路径下的git-bash并打开。
配置身份:
git config --global user.name “Tom”
git config --global user.email “XXX@qq.com”
配置完成后用同样思维命令查看是否配置成功,只需要将名字和邮箱去掉即可。
2.创建代码仓库与命令操作
新建项目MyApp,进入到MyApp路径下,输入命令:
git init
这样就完成了代码仓库的创建。这时候在MyApp下生成一个隐藏的.git文件夹,该文件夹用来记录本地所有git操作。可通过ls-al命令查看,若要删除本地仓库,删除该文件夹即可。
添加本地文件到仓库:
git add 文件/文件夹(添加指定的文件或整个文件夹)
git add . (添加整个项目)
将添加的文件提交:
git commit -m "First commit."
注意:-m要添加描述信息(一定)
忽略文件
在项目的app下有个app/.gitignore文件,可以忽略添加的文件,如
/build
/src/test
/src/androidTest
查看add后修改的文件,不能查看commit后的状态
git status
查看修改的内容
git diff (查看所有修改的内容),若只看某个文件修改情况:git diff 文件路径。
撤销未添加的修改,恢复到原来代码,修改了代码还没有add的时候:
git checkout 文件(app/…/MainActivity.java)
**git checkout .**撤销所有修改
放弃本地所有修改、新增、删除文件和目录:
git checkout . && git clean -df
撤销添加后的修改,执行了add的时候:
git reset HEAD 文件路径(app/…/MainActivity.java)回到未添加的状态
再执行git check 文件路径 对修改撤销
查看提交记录
git log
撤销commit(执行了add和commit后)
git reset --soft HEAD^(恢复到add的状态)
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果进行了2次commit,想都撤回,可以使用HEAD~2
其他参数:
–mixed
意思是:不删除工作空间改动代码,撤销commit并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
完成这个操作后,就恢复到了上一次的commit状态
撤销已经push的提交
- git log
- git reset --soft 43dc0de914173axxxxxx(撤销最近一次,要reset第二次的log id)
- git push origin master --force(master为远端分支)
- git checkout . && git clean -df 删除本地修改
- git push 修改远端
对当前版本打Tag
1.git stash 缓存当前修改
2.git status 看一下是否没有改动(可省略)
3.git tag -a sss1.2.0-2021-04-13 -m “定版x.x.x” 打tag
4.git push origin sss1.2.0-2021-04-13 提交
5.git stash pop 恢复缓存
拉取远程代码时本地已经有改动,导致拉取失败
解决方法1:放弃本地修改
git reset --hard
git pull XXX
解决方法2:
1.git stash // 保存本地代码
2.git pull XXX //拉取别人代码
3.git stash pop // 恢复本地修改代码
如果本地代码和拉取新代码出现冲突,会出现如下标记:
其中<<<<<<< Updated upstream到=======之间的代码是你拉取的别人的代码,
=======到>>>>>>> Stashed changes是自己本次修改的代码。
做适当的删除即可。
另:
如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
3.git创建新分支操作
查看当前版本有哪些分支
git branch -a
创建新的分支
git branch v1.0(分支名)
代码切换到指定分支
git checkout v1.0(或master主分支)
代码合并:v1.0修复的bug合并到master上
git checkout master(先切到master)
git merge v1.0(将v1.0分支代码合并到master)
(合并冲突相关问题待补充)
删除指定分支
git branch -D v1.0
创建远程新分支
查看所有分支
git branch -a
创建本地test分支并把本地test分支推送到远程
git checkout -b test
git push --set-upstream origin test
4.与远程版本库协作
将远程版本库的代码下载到本地:
git clone https://github.com/sunshineboy/MyApp.git
在下载的本地的代码上修改,提交。再推送到远程:
git push origin master (将本地修改的代码同步到远程版本库的master分支上)
其中,origin是远程版本库的Git地址,master是远程版本库的分支。
从远程拉取最新代码:
git fetch origin master (同步到本地,没合到任何分支,而是存在一个origin/master分支)
git diff origin/master (查看修改了哪些内容)
git merge origin/master (将修改合到主分支上)
以上可以用一条指令执行:
git pull origin master(直接拉取新代码并合并到本地分支上)
4.代码托管到Github上
首先注册Github账号,这里不再详述。
进入Github个人主页,点击Start a project创建版本库
输入版本库名字,选择Android项目,使用Apache License 2.0作为开源协议,点击Create repository创建。
接下来创建项目01addviewtest,开打git-base进入项目目录,将远程版本克隆到本地,地址可在Github找到,如下图:
执行 git clone https://github.com/sunshineboy1/MyApp.git下载仓库代码到本地。
进入MyApp查看目录有一个隐藏的.git,记录了git的所有操作。将MyApp下的文件复制到01addviewtest下(一定不要漏掉.git文件夹)。回退到上一层,git执行代码的add、commit操作。
commit提交代码还没同步到仓库,这时候再把代码推送到仓库:
git push origin master(注:这时候需要输入Github的账号和密码)
这时候刷新仓库代码,可以看到本地代码已经推送到仓库了。
5.克隆远程代码
1.进入要下载的目标路径
2.执行命令
git clone 远程代码地址 (默认当前本地路径)
或者指定下载路径:git clone 远程代码地址 本地路径
附:
Mac终端显示git分支