Git常用命令
1. git 查看log
| 命令 | 含义 |
|---|---|
git log --online |
查看线上操作记录 |
2. git回滚操作
git cherry-pick 回滚操作(恢复记录)git cherry-pick [<options>] <commit-ish> 挑拣提交
| 命令 | 含义 |
|---|---|
--quit |
退出当前的chery-pick序列 |
--continue |
继续当前的chery-pick序列 |
--abort |
取消当前的chery-pick序列,恢复当前分支 |
-n, --no-commit |
不自动提交 |
-e, --edit |
编辑提交信息 |
当使用git cherry-pick发生冲突后,将会出现如下信息: |
1 | $ git cherry-pick 23d9422 |
这时如果要继续cherry-pick,则首先需要解决冲突,通过git add .将文件标记为已解决,然后可以使用git cherry-pick --continue命令,继续进行cherry-pick操作。
如果要中断这次
cherry-pick,则使用git cherry-pick --quit,这种情况下当前分支中未冲突的内容状态将为modified,如果要取消这次
cherry-pick,则使用git cherry-pick --abort,这种情况下当前分支恢复到cherry-pick前的状态,没有改变reset
| 命令 | 含义 |
|---|---|
git fetch |
拉取最新线上分支情况 |
git reset --hard |
硬切回当前分支提交的某次记录 |
git reset --hard HASH |
返回到某个节点,不保留修改。 |
git reset --soft HASH |
返回到某个节点。保留修改 |
git reset b |
这里恢复你对于b的修改(恢复文件b) |
假如git commit 链是A -> B -> C -> D, 如果想把B,C,D都给revert,除了一个个revert之外,还可以使用range revert
git revert oldCommit^..newerCommit(本例中为git revert B^..D,这样子就把B,C,D都给revert了,变成了A-> B ->C -> D -> D’-> C’ -> B’)git revert -n oldCommit^..newerCommit//三个revert不自动生成三个新的commit,然后可以利用git commit -m "revert oldCommit to newerCommit完成range revert
3. git tag相关操作
| 命令 | 含义 |
|---|---|
git tag |
查看tag |
git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233 |
在某个commit 上打tag |
git push origin test_tag |
本地tag推送到线上 |
git tag -d test_tag |
本地删除tag |
git push origin :refs/tags/test_tag |
本地tag删除了,再执行该句,删除线上tag |
git tag -a v1.4 -m 'my version 1.4' |
创建含附注的tag |
git push origin --tags |
推送tag至远程 |
git checkout v1.5.6 |
检出tag |
4. git工作目录stash
git stash保存当前的工作目录git stash恢复当前的工作目录
5. git checkout相关操作
git checkout .本地所有修改的。没有的提交的,都返回到原来的状态git checkout 5ff787cc8 b将文件b检出到本分支(替换当前工作区的b文件)
6. git修改本地和远程分支名
- 修改本地分支名称
git branch -m oldName newName - 修改远程分支名称
1
2
31. git push --delete origin oldName //删除远程分支
2. git push origin newName //上传新命名的分支
3. git branch --set-upstream-to origin/newName //关联本地分支与远程分支
7. git建立远程分支别名
git remote add origin git@XX.XX.XX.12:gyjia/hotcodeserver.git
在本地仓库中建立一个与远程仓库的别名,以便之后提交代码而不是每次都要输入远程仓库地址
把本地的代码提交的远程仓库步骤
建立本地分支,并切换到该分支
git branch devgit checkout dev
或者合并指令git checkout -b devpush到远程仓库
git push origin dev远程分支合并到本地
git pull origin dev:master将远程分支master代码合并到本地dev(merge)git pull master将远程仓库的master分支合并下来。如果本地没有master分支,那么本地就新建一个master分支
8. git pull和git rebase区别
git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase
9. git修改远程分支的commit
- 修改已提交到远程分支的
commit信息
1 | git commit --amend -m "注释" |
10. git疑难杂症
git config --system --unset credential.helper//解决clone http项目时,总是要求输入用户名和密码的问题git config --global credential.helper store//解决每次push、pull时都要输入用户名密码- 解决
AndroidStudio terminal中执行git log命令时,出现的乱码问题
1 | git config --global core.quotepath false |