Android开发常用git命令
来源:互联网 发布:绘制程序流程图软件 编辑:程序博客网 时间:2024/06/07 23:11
代码仓库的管理是开发中非常重要的事情之一, 尤其是在一些大项目或者和第三方接触频繁(发版)的时候,版本的控制就越显得重要,工欲善其事,必先利其器.
下面这些是我平时自己工作中要用到的一些git命令,有的人喜欢用gui操作,有的人喜欢用命令行. 这仅仅是喜好习惯问题. 当然这些命令也不是我原创的,也都是在使用中学习和查找然后自己总结的一些常用命令. 基本上能够满足平时的工作需要.
0x01.创建本地分支
创建一个本地分支
git branch new_branch
0x02.创建远程分支
创建一个远程分支
把刚才创建的分支推到服务器,如果远程没有则直接创建分支,命令如下:
git push <远程主机名> <本地分支名>:<远程分支名>
git checkout new_branch #切换到新分支git push origin new_branch:new_branch #如果远程分支名和本地分支名同名则可以省略:和后面的分支名orgit push origin new_branch
0x02.切换分支
切换分支命令:
git checkout branch_name
创建和切换分支一起操作<可以不带commit_id>
git checkout -b new_branch #基于当前分支创建并切换到new_branch分支上.orgit fetch origin #追踪origin分支git checkout groups #切换到groups上orgit fetch origin #追踪origin分支git checkout --track origin/group 切换并建立追踪关系
基于tag checkout
git checkout -b new_branch tag_name
0x03.拉取远程分支
如果本地没有对应的分支,则先创建.
git fetch #获取分支信息git checkout -b local_branch origin/remote_branch 创建并切换到新分支上
拉取远程分支最新的更新.
git pull origin remote_branch
0x04.提交更新到远程分支
命令:
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin new_branch:new_branch #如果分支名相同则省略掉:和后面的分支名orgit push origin new_branch
强制push
git push -f origin new_branch
0x05.删除分支
- 0x01.删除本地分支
git branch -d new_branch
- 0x02.删除远程分支
先切换到其它分支,然后再删除new_branch的远程分支.注意:前的空格.
git push origin :new_branch
0x06.修改分支
- 0x01.查看当前没有提交的修改内容
git status
- 0x02.添加到缓存
git add . #添加当前分支的所有的修改orgit add *.java #添加当前分支的所有java文件
- 0x03.提交修改
git commit -m "注释信息"
0x04.merge
把A分支上的提交commit_id,合并到当前分支上.
git merge commit_id
- 0x05.cherry-pick
把A分支上的提交commit_id,合并到当前分支上.
git cherry-pick commit_id
- 0x04.推送到远程分支
git push origin new_branch
0x06.回滚
版本回退
- 0x01.根据commit_id来回退
如果错误提交了某个文件,想回退该文件,失误操作之前的一个commit_id,通过reset命令撤销,并重新提交,这样就从公共库中撤销了该文件的提交,但是本地又保留了修改;
git reset <tag/branch/commit id>git commit -m "revert change in filename"
- 0x02.取消merge
git reset --hard ORIG_HEAD //回退到merge前的代码
- 0x03.取消多次commit:
git reset HEAD~num <-soft/-hard> //取消前num次的commitorgit reset --hard HEAD~3 //把最近的三次提交都撤销,下次git提交时被删掉.
–soft: staged snapshot 和 working directory 都未被改变 (建议在命令行执行后,再输入 git status 查看状态)
–mixed: staged snapshot 被更新, working directory 未被更改。【这是默认选项】(建议同上)
–hard: staged snapshot 和 working directory 都将回退。
- 0x04.将文件从stage(追踪的库)中移除:
git reset HEADgit reset --hard HEAD>放弃工作区和index的改动,HEAD指针仍然指向当前的commit,因为没有commit的改动只存在于index和工作区.git reset --hard HEAD^ 等价于 git reset --hard HEAD~1>撤销前一次提交,同时HEAD指针指向前一个commit对象.
如果错误提交了某个文件,想回退该文件,同时本地不需保留修改彻底废弃,commit_id为错误提交的id
git revert -n commit_idorgit revert commit_id
这次撤销也会作为一次提交进行保存.
-n(–no-commit)参数,表示仅将revert的修改体现在当前的working tree,不自动进行提交.
重要
如果错误提交了某个文件,想回退该文件,同时本地不需保留修改彻底废弃,不带filename则所有的提交都撤销
git revert是创建一个commit来覆盖当前的commit,指针向后移动.
git revert HAED~2//通过新建一次commit的方式来撤销上一次的commit的修改.因为它不会修改commit history,所以是安全的.
git reset是指向原地或者向前移动指针.
0x07. 查看命令
- 0x01.查看当前所有的远程分支
查看所有的远程分支
git remote show origin
查看到拉到本地后的.
git branch -a
- 0x02.查看某个文件的修改记录
git log filename //可以看到fileName相关的commit记录git log -p filename //可以显示每次提交的diff,只看某次提交中的某个文件变化,可以直接加上fileNamegit show commit_id filename
- 0x03. 查看某个commit的修改内容
git show commit_id
- 0x04. 查看当前修改和版本库中的差异
git diff
- 0x05. 查看文件和上一个版本的修改差异<详细信息>
git blame
- 0x06. 查看提交记录并显示每次提交修改的文件
git log --stat
- 0x07. 查看已经add的文件和版本库中的差异
git diff --cached
- 0x08. 显示信息命令
git ls-files -u //显示冲突的文件, -s是显示标记为冲突已解决的文件
git diff //对比工作区和stage文件的差异
git diff --cached //对比stage和branch的差异
git ls-file --stage //检查保存在stage中的文件.
- 0x09. 显示提交日志
git log -p -2 //对比最近两次的commit对象
git log -1 HEAD
git log --stat commit_id //查看该对象记录.
0x08.更新
- 0x01.更新所有的branch:
git remote update //如果远程仓库的branch很多,那么必然拉取失败.
- 0x02.强制覆盖存在的分支
git branch --force exist_branch
git branch -d/-D new_branch //删除分支,大些标示强制git branch (-m | -M) <old_branch> <new_branch> //重命名分支
0x09.处理冲突
- 0x01. 使用stash
当前本地修改和远程代码冲突后,先把本地压栈,pull之后再弹栈<有冲突就单独处理冲突>
把当前修改压栈
git stash
从远程pull代码并且合并修改冲突,然后再把本地的修改pop出来.
把当前修改弹栈
git stash pop
- 0x02. 使用checkout
放弃当前的修改重新checkout所有的java文件覆盖当前的修改
git checkout *.java
0x10.删除命令
git rm --cached filepath //只从stage中删除,保留物理文件. 不跟踪某个文件 .gitignore
git rm //不但从stage中删除,同时删除物理文件.
git mv //把a名字改为b;
实际上git pull命令等价于:
git fetch origin //拉去远程分支到本地git merge origin/new_branch //合并本地分支和远程分支####拉取远程分支,并与本地分支合并
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
git fetch<远程主机名><分支名>比如,取回origin主机的master分支。
git fetch origin master
在本地分支上合并远程分支
git merge origin/master or git rebase origin/master
0x11 .标签
- 0x01.创建标签
1.git add . 2.git commit -m “fixed some bugs” 3.git tag -a 0.1.3 -m “Release version 0.1.3″
- 0x02.推送到远程
1.git push origin master 2.git push origin –tags >*–tags参数表示提交所有tag至服务器端,普通的git push origin master操作不会推送标签到服务器端
0x03. 删除那个同名的TAG
git tag -d V4.4.30x04. 删除远端服务器的标签
git push origin :refs/tags/V4.4.30x05. 根据tag checkout代码
先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。
git checkout tag_name
但是这时候 git 可能会提示你当前处于一个”detached HEAD” 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:
git checkout -b branch_name tag_name
这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了.
0x12 .处理.gitignore
git rm –cached FILENAME orgit rm -r –cached FOLDERNAME 然后commit,pushGit rm – 如何使文件脱离git的版本管理,但不是会删除它.
Git rm命令将允许你取消git对文件的版本控制. 这个 –cached选项允许你把文件保留在你的硬盘上.每隔一段时间都会有一些不应该被git管理的文件被误加入到git中. 常见的例子是配置文件, 由包含你的个人设置的IDE生成的工程文件,甚至有人决定要签入的临时文件. 这些文件是必要的, 所以往往不能完全删除它们。然而将它们复制到其他地方, 或者从git中删除然后替换它们,这一过程是非常痛苦的, 更别提容易出现的错误.通过添加 –git rm 命令的缓存的选项, 你是能到远程文件文件从 git 控制同时保持工作树中的文件. 他们命令的语法是:
git rm –cached file
Git 将不再跟踪此文件,尽管它仍然是在您的硬盘上.运行上述命令后, 一定要添加一个条目到您 .gitignore 文件以便 ’ 文件’ 没有显示在 ’ git 状态’ 和,它不小心以后将无法重新添加.
0x13. 修改之前提交的commit内容
- 0x1. 刚刚commit还没有push
git reset HEAD^git commit -m "New commit message"
git commit --amend -m "New commit message"
- 0x2. 已经push到远程的分支,但是别人还没有做提交
git push <remote> <branch> --force# Orgit push <remote> <branch> -f
- 0x3. 已经push而且已经产生别人的提交记录
git checkout -b tmp ^xxxgit cherry-pick xxxgit commit --amendgit cherry-pick <依次后面的提交id>
其它issue:
Switched to branch ‘V6.1.0’
Your branch is ahead of ‘origin/master’ by 1 commit.
(use “git push” to publish your local commits)
solution:
git push origin HEAD:master
issue:
Git 2.0 from ‘matching’ to ‘simple’. To squelch this message
and maintain the traditional behavior, use:
git config –global push.default matching
To squelch this message and adopt the new behavior now, use:
git config –global push.default simple
solution:
git config push.default simple
- Android开发常用git命令
- 【Android】常用 Git 命令清单
- Android之常用Git命令
- Git开发中常用的一些命令
- iOS开发-版本管理常用git命令
- git和mvn开发常用基本命令
- Android Studio 常用 Git 命令清单
- android 开发 常用 adb 命令
- Android开发中git命令使用
- android开发笔记之常用开发命令
- android开发笔记之常用开发命令
- 【git】常用的git命令
- Git常用操作命令
- 常用的git命令
- 常用git命令
- git常用的命令
- Git常用操作命令
- Git常用操作命令
- 接口测试基础-3-接口测试工具介绍
- ubuntu 用git
- 通过使用bandwagon虚拟主机+shadowsocks+sockscap实现通过socks代理访问网站
- 日志时间与系统时间不一致问题解决方法
- Lambda 的初步学习
- Android开发常用git命令
- mysql5.6配置慢查询 及安装pt-query-digest,检查重复索引pt-duplicate-key-checker
- EXCEL工作表保护密码破解
- before,after 和 content的一些用法
- 超星尔雅在线课程小技巧
- Android studio 空文件夹自动合并去掉
- xheditor的参数配置详解
- Spring+SpringMVC+Mybatis+maven整合
- http://www.cnblogs.com/chengyuanchun/p/5107978.html