Android 常用git指令记录总结

Posted 红日666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 常用git指令记录总结相关的知识,希望对你有一定的参考价值。

git常用指令汇总(持续更新...):

git add指令:

git add '*txt':提交某种格式的文档到暂存区(Stage)
git add .:提交所有修改到暂存区

git commit指令:

git commit -m + "your comment":将暂存区的所有修改提交到远程分支
git commit <file> -m + "your comment":将暂存区某一文件修改提交到远程分支

git push指令:

git push <远程主机名> <本地分支名>:<远程分支名>:用于将本地分支的更新,推送到远程主机
git push origin master(等价于“git push origin master:master)
git push origin HEAD(HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)
git push origin dev:推送其他分支(如果当前分支只有一个追踪分支,那么主机名等都可以省略)
git push origin --delete dev:删除远程分支dev

将本地内容推送到github仓库步骤

(项目首次需git init初始化)
git remote add origin git@server-name:path/repo-name.git:关联远程库:
git add .
git commit -m 注释
git push -u origin master:(第一次用,之后可以直接git push)(用了参数-u之后,以后就可以直接用不带参数的git pull从之前push到的分支来pull。)

git checkout指令:

git checkout -- 文件名:回撤-丢弃工作区的修改
git checkout HEAD file:把暂存区的修改撤销掉
git checkout 分支名:切换到某一个分支
git checkout -b dev:创建并切换dev分支
git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支(本地分支名称一般需要跟远程分支名称相同)。

git branch指令:

git branch <分支名>:创建分支
git branch:查看(local)所有的分支
git branch -r:查看(remote)所有分支
git branch -a: 查看所有的分支(包括local/remote)
git branch -d dev:(-d是--delete缩写)删除本地dev分支【该分支必须完全和它的上游分支merge完成,如果没有上游分支,必须要和HEAD完全merge】
git branch -D dev:(-D是--delete --force的缩写)强行删除dev分支【这样写可以在不检查merge状态的情况下删除分支】
git branch --set-upstream branch-name origin/branch-name:
将本地分支和远程分支的建立关联。

git merge指令:

git merge dev:将dev分支合并到master
git merge --no-ff -m "---" dev:将分支dev合并到当前分支(合并后不会丢掉分支dev信息)

git reset(回滚)指令:

git reset -—hard commit-id:彻底回滚到该id的版本,本地的源码也变为上一个版本的内容
git reset –-soft commit-id:只回滚了该id的commit信息
git reset —-mixed commit-id:默认方式,回滚了commit和add提交信息,只保留源码

git reset <文件名>:unstage file(将add到暂存区的文件提交)

git reset HEAD^ :回退所有内容到上一个版本 
git reset HEAD^ MainActivity.java:回退MainActivity.java这个文件的版本到上一个版本

本地回滚:

1、git reflog:找到要回退的版本的commit id
2、git reset --hard commit-id号:回退版本

远程回滚:

1、git reflog
2、git reset --hard commit-id号
3、git push -f:强制推送到远程分支(注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支)

SourceTree回滚

方法一:
1、将(该分支如develop)重置到这次提交(强制模式)
2、git push -f 强制推送到远程分支
3、刷新远程分支页面(便不会有pull提示)

方法二(推荐):
1、选中SourceTree分支上的某一次错误的提交
2、提交回滚
3、可以看到本地的代码已经回滚,此时直接push到远程即可
4、可以看到远程已revert到之前提交错误代码之前的代码了

查看指令:

git status:查看当前修改状态
cat <文件名>:查看文件内容
pwd:显示当前目录
git diff:顾名思义就是查看difference
git diff HEAD:查看最近一次differ
git log(--pretty=oneline):显示从最近到最远的提交日志 
git reflog:用来记录你的每一次命令
git remote -v:列出对应的远程库
git log --graph:展示分支合并图

Bugfix指令集:

如果dev分支正在开发,此时有个bug需要修复;而dev的内容还没开发完,不能提交,所以此时需要先把dev分支的内容贮藏一下;
然后新建一个issue-001分支,修复bug后,与master merge;然后在切换到dev分支,把刚才贮藏的内容恢复一下。指令集如下:

git stash 
git checkout master
git checkout -b issue-001
git add .
git commit -m “fix bug”
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101
git checkout dev
git stash pop( 等同于> git stash apply恢复,用git stash drop来删除贮藏区内容)

git show命令:

git log: 查看最近提交记录
git show: 查看最近commit修改
git show commitId:查看指定commitId的所有修改
git show commitId fileName:查看指定commitId中fileName文件的修改

git tag指令:

git tag <name>:新建一个标签,默认为HEAD,也可以指定一个commit id。
git tag -a <tagname> -m "...”:可以指定标签信息
git tag:查看所有标签
git tag -d <name>:删除标签
git push origin <tagname>:推送标签到远程 
git push origin --tags:一次性推送全部尚未推送到远程的本地标签

#如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d <name>
git push origin :refs/tags/<name>

查看git命令所在的安装路径:

witch git 

将github项目地址从HTTPS变更为SSH:

以MotionEvent举例:

1、cd到该项目目录下

2、git remote set-url origin git@github.com:zhongyao/MotionEvent.git

git修改(查看)用户名/邮箱指令:

局部修改(当前project)命令:
git config user.name 你的目标用户名;
git config user.email 你的目标邮箱名;

查看命令分别为:
git config user.name
git config user.email

或者打开当前项目目录.git文件夹下config文件进行修改即可,一般修改后格式如下(没有修改过的话不会展示如下内容):
[user]
    name = 你的目标用户名
    email = 你的目标邮箱名

全局修改命令为:
git config  --global user.name 你的目标用户名;
git config  --global user.email 你的目标邮箱名;

全局查看命令为:
git config --global user.name 
git config --global user.email
或指令直接打开全局的.gitconfig文件修改/查看:

open ~/.gitconfig
亦或者通过如下指令直接修改:

vi ~/.gitconfig

git pull提示Not possible to fast-forward的解决方法:

一般在本地修改文件后push到远程,此时发现之前没有先pull最新的代码时会出现的情况

出现这种原因是因为本地版本比较老,而且commit了新内容,那么如何解决呢?加上--rebase即可,例如:

git pull origin <branch> --rebase

一般情况下这样做就可以正常pull了,但如果本地依然有修改的内容没有commit,那么会报下面的错误:

error: cannot pull with rebase: You have unstaged changes.
error: please commit or stash them.

出现这种错误的原因就是本地有修改的内容没有commit,只需要commit下即可(如果是不需要的改动就还原被改动的文件),commit后重新执行 git pull origin xxx --rebase即可。

git rebase问题:First, rewinding head to replay your work on top of it...:

git fetch origin
git reset --hard origin/<branch>

github无法push问题: Support for password authentication was removed on August 13, 2021. Please use a personal access to ...:

1、Github个人主页:Setting ---> Developer setting ---> Personal access tokens ---> Generate new token ---> 选择期限 + 选中repo + admin + gist ---> 点击Generate token ---> 复制下来的token。

2、android Studio:Preferences ---> Version Control ---> Github ---> + ---> Use Token ---> server输入github.com[或https://github.com] token输入上一步生成的token。

3、重新push,密码输入上一步的token即可。

github分支无法合并问题:fatal: refusing to merge unrelated histories:

//此处master是要合并的分支【如master合并到main分支】
git pull origin master --allow-unrelated-histories

github无法push问题:Failed to connect to github.com port 443: Connection refused

点此查看解决方案

参考:

Git常用命令及方法大全

git rebase简介

rebase用法小结

以上是关于Android 常用git指令记录总结的主要内容,如果未能解决你的问题,请参考以下文章

SourceTree常用功能记录(updating...)

SourceTree常用功能记录(updating...)

SourceTree常用功能记录(updating...)

Android 常用adb指令记录总结

Git 常用指令

总结思考git常用指令总结