1) 远程仓库相关命令
检出仓库: git clone git://github.com/jquery/jquery.git
查看远程仓库: git remote -v
添加远程仓库: git remote add [name] [url]
删除远程仓库: git remote rm [name]
修改远程仓库: git remote set-url --push[name][newUrl]
拉取远程仓库: git pull [remoteName] [localBranchName]
推送远程仓库: git push [remoteName] [localBranchName]
2) 分支(branch)操作相关命令
查看本地分支: git branch
查看远程分支: git branch -r
创建本地分支: git branch branchName ----注意新分支创建后不会自动切换为当前分支
切换分支: git checkout branchName
创建新分支并立即切换到新分支: git checkout -b branchName
删除分支: git branch -d branchName -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支: git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程): git push origin branchName
删除远程分支: git push origin :heads/branchName
我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
git push origin test:test // 提交本地test分支作为远程的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
3) 标签版本(tag)操作相关命令
查看所有版本: git tag
创建本地版本: git tag tagName
删除本地版本: git tag -d tagName
查看远程版本: git tag -r
获取远程版本: git fetch origin tag tagName
创建远程版本(本地版本push到远程): git push origin tagName
删除远程版本(就是推送空数据合并到远程): git push origin :refs/tags/tagName
显示选择的tag附注信息: git show tagName
推送所有tag同步到远程代码库: git push origin --tags
创建轻量标签:git tag tagName -light ( 解释:创建轻量标签不需要传递参数,直接指定标签名称即可。)
创建附注标签:git tag -a tagName -m "release tagName version"
解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
切换标签与切换分支命令相同:git checkout tagName
创建并切换到branch_new_name分支上,并且此分支是基于当前工作分支的提交点上,会自动切换到新分支上:
git checkout -b new_branch_name
* push失败的原因( 参考 ):
比如:
remote: GitLab: You are not allowed to change existing tags on this project.
To ssh://gitlab.spriteapp.com.cn:2208/android/bdj_mvp.git! [remote rejected] v8.0.5 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@gitlab.spriteapp.com.cn:2208/android/bdj_mvp.git'
解释:git合并分支成功,但是push失败(remote: GitLab: You are not allowed to push code to protected branches on this project.)
原因:自己没有合并代码的权限导致的,所以接下来就是修改权限就可以了。
一般我们作为developer,是没有master权限的,只有master才有合并代码权限。
修改方法,联系管理员,打开gitlab ===> setting ===>修改成员角色。
就是说分支设了保护,才推送不上去,记得在保护分支上把开发者推送勾上。
4) git stash暂存相关命令
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
5) git rebase 使用
当前分支问题develop,从master拉取最新代码
git pull --rebase origin master 或者 git rebase develop
先将develop分支的代码checkout出来,作为工作目录
然后将master分支从develop分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了
如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成
如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)。
6) git branch 分支
假设分支名称为oldName
想要修改为 newName
1. 本地分支重命名(还没有推送到远程)
git branch -m oldName newName
2. 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同,注:远程分支名称 只能 先删除,后修改,最后关联 )
a. 重命名远程分支对应的本地分支
git branch -m oldName newName
b. 删除远程分支
git push --delete origin oldName
c. 上传新命名的本地分支
git push origin newName
d. 把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
3. 回滚到上一版本
git reset --hard HEAD~1
7) Android Studio Git 修改用户名、密码、URL
在AndroidStudio的 Terminal :
git config --global user.name "用户名"
git config --global user.email “邮件地址”
git config --list获取所有信息
8)ssh命令参考:
https://www.cnblogs.com/godfeer/p/12214301.html
9)Android Studio 防止编译乱码,在 安装目录下的 bin目录找到 studio64.exe.vmoptions 文件,添加内容:
-Dfile.encoding=UTF-8