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.3

  • 0x04. 删除远端服务器的标签
    git push origin :refs/tags/V4.4.3

  • 0x05. 根据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

原创粉丝点击