Git 常用命令(说明)

第一部分 :提交修改

$git add .  /*将当前目录中所有改动的代码添加到暂存区*/

$git commit -m "xxxxxx"    /*将代码提交到本地仓库*/

$git push [remote-name] [branch-name]
# 推送数据到远程仓库
# PS:如果使用checkout --track 命令跟踪了远程分支,则可省略成git push

$git reset HEAD [filename]
#将不需要commit的文件移除缓存区

$git checkout --[file name]
# 将暂存区的特定文件替换成未更新的版本(即替换本地的修改)
# 使用git checkout . 可以恢复当前目录下所有的文件到未修改版本

$git commit -am "xxxxx"
# 直接将所有本地修改提交到本地代码仓库(省略了git add 命令)

$git log
#查看当前的所有commit的版本信息
PS:git log --stat 可以查看详细信息

$git pull [server-name] [branch-name]
#从服务器抓取代码到本地分支

$git push [server-name] [branch-name]
#将本地分支的更改上传到远程分支

 

第二部分: 分支操作

查看branch情况:
$ git branch   /*查看本地branch*/
$ git branch -a  /*查看所有(本地和remote)branch*/
$ git branch -v  /*查看本地branch的最后一次提交信息*/

新建branch:
$ git checkout --track <remote-name/branch-name> /*基于remote branch创建*/
$ git branch <branch-name> /*基于当前代码创建*/

push branch到服务器:
$ git push remote-name branch-name /*新建的branch push以后才会存在于server上*/

切换/检出branch:
$ git checkout <branch-name>

删除branch:
$ git branch –d <branch-name>  /*删除本地分支,不能删除当前分支*/

 

分支的查看:

$git reflog /* 查看分支提交的所有历史信息*/

 

分支的合并:
$ git merge <branch-name> /*合并branch 上的代码到当前分支,也可以合并分支中的某个特定版本,(commit的状态也会合并)*/

合并commit(非线性的好处):
$ git cherry-pick <commit-id > /*合并其他branch上的commit,但是只合并其他分支上的修改,但是不合并commit的状态*/

清除对tracked文件的修改:
$ git stash  /*或者 $ git reset --hard */

清除un-tracked文件:
$ git clean –fdx

回退冲突的Merge(留到以后整合):
$ git pull                        
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard

查看分支的合并情况
$git branch  --merged /* 查看已经合并到当前分支情况*/
$git branch  --no-merged /*查看尚未合并到当前分支的分支有哪些*/
             
回退某个版本的commit(针对已经push的commit):
$ git revert <commit-id>  /*回退commit-id版本的提交,会commit回退*/
$ git revert -n <commit-id>  /*为了验证版本,回退修改后不commit*/

回退刚刚的commit(没有push的commit,已经push的会有冲突,慎用! )
$ git reset --soft HEAD^ /*回退一个版本,只修改HEAD标记,不修改文件*/
$ git reset --soft HEAD~5 /*回退最近5次commit,修改HEAD标记,不修改文件*/
$ git reset --hard HEAD^/*回退一个版本,将文件和git object都修改到前一版*/

特殊的分支合并方式(Git rebase)
$git rebase [主分支][特性分支] /*将主干分支的修改合并到特性分支中,而不保留特性分支的历史版本*/

 

第三部分:其他命令

git diff:
$ git diff /*比较目录文件和HEAD版本的差异(即查看修改内容)*/
$ git diff commit-id1..commit-id2 /*比较两个版本*/

git tag:
$ git tag <tag-name>  /*基于当前代码创建名为tag-name的tag*/
$ git tag      /*显示tag list*/

git mv:
$ git mv <src-path> <dst-path> /*重命名(移动)文件或目录*/

git fetch:
$ git fetch <remote-name> /*从服务器remote-name下载,但不merge进当前branch,也不影响当前文件内容*/
$ git fetch –all /*从所有remote服务器下载文件*/

查看对android源代码的修改:
$ repo status
更新android源代码:
$ repo sync

Android代码最近的修改:
$ repo forall -c git log --stat --after=‘date +%F --date=“-3 day”’ --all /*最近3天谁修改过android代码*/

查看android代码中包含的git project
$ repo list

 

第四部分:Git log 查看版本日志

 -p 按补丁格式显示每个更新之间的差异。
 --stat 显示每次更新的文件修改统计信息。
 --shortstat 只显示 --stat 中最后的行数修改添加移除统计。
 --name-only 仅在提交信息后显示已修改的文件清单。
 --name-status 显示新增、修改、删除的文件清单。
 --abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
 --relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
 --graph 显示 ASCII 图形表示的分支合并历史。
 --pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
 
 -(n) 仅显示最近的 n 条提交
 --since, --after 仅显示指定时间之后的提交。
 --until, --before 仅显示指定时间之前的提交。
 --author 仅显示指定作者相关的提交。
 --committer 仅显示指定提交者相关的提交。
 
$ git log –p -2
 -p 选项展开显示每次提交的内容差异,用-2 则仅显示最近的两次更新
$ git log --stat
 --stat,仅显示简要的增改行数统计
$ git log --pretty=oneline
 --pretty 选项,可以指定使用完全不同于默认格式的方式展示提交历史
 oneline 将每个提交放在一行显示,这在提交数很大时非常有用
$ git log --pretty=format:"%h - %an, %ar : %s"
 选项 说明
 %H 提交对象(commit)的完整哈希字串
 %h 提交对象的简短哈希字串
 %T 树对象(tree)的完整哈希字串
 %t 树对象的简短哈希字串
 %P 父对象(parent)的完整哈希字串
 %p 父对象的简短哈希字串
 %an 作者(author)的名字
 %ae 作者的电子邮件地址
 %ad 作者修订日期(可以用 -date= 选项定制格式)
 %ar 作者修订日期,按多久以前的方式显示
 %cn 提交者(committer)的名字
 %ce 提交者的电子邮件地址
 %cd 提交日期
 %cr 提交日期,按多久以前的方式显示
 %s 提交说明
$git log --author="chen.jian" --after="2013-10-01" --before="2013-10-10" --shortstat
  查看"chen.jian"在2013-10-01 到 2013-10-10 时间段内的修改,并显示摘要 

 

第五部分:Git 与Svn 命令对比

Checkout
$ svn checkout <url>
$ git clone <url>

Update
$ svn update
$ git pull [remote-name] [branch-name]

Log
$ svn log
$ git log

Diff current modifications
$ svn diff [<path>]
$ git diff [<path>]

Commit
$ svn commit –m “message”
$ git commit –am “message”

Revert
$ svn revert <filename>
$ git checkout <filename>

Add
$ svn add <file or folder>
$ git add <file or folder>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值