git工作总结

1.还原代码版本

方法:


    git reset --hard <commit_id>

    git push origin HEAD --force

其中:

根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
    git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容


    HEAD 最近一个提交
    HEAD^ 上一次
    <commit_id> 每次commit的SHA1值. 可以用git log 看到,也可以在页面上commit标签页里找到.

2.git add后revert

可以用命令git add -i 显示出所有add进index的索引号,在下面也会显示出一些相应的命令,按3就可以进入revert模式,然后按需要revert的编号,最后回车即可移出add。。。

3.git查看版本信息

我们常用 -p 选项 展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

$ git log -p -2

此外,还有许多摘要选项可以用,比如 --stat,仅简要的显示 文件 增改行数统计,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。

$ git log --stat

--author 仅显示指定作者相关的提交。

$ git log  --author=haiwang

  查找 haiwang 提交的 版本;

4.$Git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
基础命令:
$git stash
$do some work
$git stash pop

5.git 更改 commit log

git 提交后,修改commit log

$git commit --amend 

进入编辑窗口,重新修改刚才提交的日志。

也可以直接编辑日志

$git commit --amend “new message"

 

一次提交后,发现需要再增加一个文件,并让这些文件用同一个SHA1

$git commit -m "feature a"

$git  add new_file.txt

$git  commit --amend 

$git commit -am " message”

这样 feature a 所有代码就有相同的一个SHA1值。

6.git查看某个文件的修改历史

git log --pretty=oneline 文件名

 

7.Git忽略对文件权限的改变





有时候git clone下来后,文件的权限不对,需要chmod -R 777 .

但是这样git会发现很多的改变,事实上是不需要提交的。通过下面的配置可以让git忽略这种情况

git config core.filemode fal

8.git revert和git reset的区别

git revert 是撤销某次操作,此次操作之前的commit都会被保留
git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区
具体一个例子,假设有三个commit, git st:
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
当执行git revert HEAD~1时, commit2被撤销了
git log可以看到:
commit1:add test1.c
commit3:add test3.c
git status 没有任何变化
如果换做执行git reset --soft(默认) HEAD~1后,运行git log
commit2: add test2.c
commit1: add test1.c
运行git status, 则test3.c处于暂存区,准备提交。
如果换做执行git reset --hard HEAD~1后,
显示:HEAD is now at commit2,运行git log
commit2: add test2.c
commit1: add test1.c
运行git st, 没有任何变化
另外:
git revert <commit log string>是撤消该commit,作为一个新的commit。
9.更改当前分支追踪的远程分支
git branch (--set-upstream-to=<upstream> | -u <upstream>) [< branchname>]
e.g.  git branch -u origin/a_baseline 如果没有指定 本地分支就使用当前的分支。

10.repo upload时发现没有新建branch

git format-patch xxx(修改的上一次commit id)

repo start xxx(branch name)xxx(project)

git am xxx(刚刚生成的patch)

ok了,用repo upload做事吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值