git常用指令

 

.git/config 下内容:

git  push  caf_ssh  HEAD:refs/for/msm8909-L    

git  push  ssh://gerrit/platform/kernel  HEAD:refs/for/msm8909-L

 也可使用 git config -l 查看分支情况及提交信息, 完成提交

  

下载代码git clone也可以:

git clone ssh://lvrongguo@192.168.30.201:29418/qcom/kernel/msm-3.10.git

  

repo sync相关

//工程目录下.repo文件夹下的manifest.xml手动修改内容后,repo sync -d -c --no-tags即可更新到manifest的节点

repo forall –c git log > commit.txt //显示所有文件夹下的代码提交

repo sync  //下载代码

repo sync platform/kernel //只下载kernel代码, 打开.repo下manifest.xml文件, kernel路径名字就是platform/kernel

//将整套代码回退到2018-11-02号13:21时刻的节点
repo forall -c 'commitID=`git log --before "2018-11-02 13:21" -1 --pretty=format:"%H"`; git reset --hard $commitID' 

 参数说明:
forall  操作分支中的所有仓库
-c  只操作当前分支
--before  早于指定时间点的提交记录
-1  只显示最近的1条记录(注意这是数字 1 ,如果要显示 2 条就写 2,以此类推)
"2017-03-17 07:00"  希望回退到的日期(时间点)
--pretty  以指定格式显示提交记录
%H  提交记录的hash值,即commit id(其它格式及更详细的信息可以使用命令git log --help打印帮助信息并查看“PRETTY FORMATS”小节)

命令含义:

 这条repo命令的实质就是在当前分支的每个仓库下执行git log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行git reset --hard操作。就这么简单。

注意事项: 命令里的单引号'以及`要注意区分! 前后两个是单引号' 当中两个是`

 举例: repo forall -c 'commitID=`git log --before "2017-04-15 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'

分支相关:

创建远程跟踪分支:

git checkout --track remote/caf/msm8909-L -b mybranch

git pull --rebase    //同步库分支代码

创建一个远程跟踪分支branch1

git remote add branch1 ssh://lvrongguo@192.168.30.201:29418/qcom/kernel/msm-3.10.git

git remote show  查看创建的分支

但git branch 看不到

git fetch branch1   //之后git branch -a可以看到

查看所有分支   git branch -a

查看本地分支  git branch

查看本地分支跟踪的远程分支 git  branch –vv

 

git branch branchname //创建分支

git checkout branchname //切换分支

git branch –D branchname  //删除合并的和没有合并的分支

git checkout  -b mybranch  //创建mybranch分支并切换到mybranch分支,相当于 git branch mybranch 然后再 git checkout mybranch

git  branch  -d  mybranch  //删除已经合并的mybranch分支

git merge  mybranch   //合并指定分支mybranch到当前分支

git log  --graph  -- pretty=oneline  --abbrev-commit     //查看分支的合并情况

git checkout  -b  mybranch  origin/branch1  // 创建本地分支mybranch, 并让mybranch跟踪远程库分支origin/branch1

简单例子:

创建远程跟踪分支:  git checkout  -b  mybranch1

push代码:    git   push  -u  origin  mybranch1

git log:

git log //基本查看用法

git log file1 file2  //查看file1文件file2文件的提交记录

git log file/   //查看file文件夹下所有文件的提交记录

git show --stat commitID //显示单个提交的修改文件记录

git log --stat commitID //显示该提交记录之前的所有修改文件记录

git show cimmitID > xxx.patch //把本地一个提交打成patch

git log -p --author=lvrongguo > xxx.patch //把在远程的所有修改打成patch

git log --name-only  //以只显示文件名的方式查看

git checkout -- file //单独同步某个文件

git log --author=zhangsan  //显示某人的提交记录

git log --oneline  //单行显示所有log

git log --pretty=oneline file //简略显示某个文件的修改记录

git whatchanged file //显示某个文件的详细修改记录

git log --stat //查看提交记录包含的文件名

 

管理自己的代码:

git init

git add .  //git add 是将工作区的修改提交到暂存区

git commit -am “xxx”   //git commit 是将暂存区的修改提交到Git 目录

 

常用管理代码命令:

git add -A  提交所有变化

git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

 git show   //查看最新的commit

 git show commitId    //查看指定commit ID的所有修改

 git show commitId fileName   //查看某次commit中具体某个文件的修改


git blame <file>    //查看指定文件的修改记录, 然后再git show commitID

git  checkout  --   file.txt  //回退某个文件的修改,也就是把工作区的修改都撤销,回到和版本库一样的状态

git  checkout  --   file.txt   //误删除了某个文件,但还没有git add,需要恢复

git diff  readme.txt   //查看readme.txt修改

git diff HEAD  --  readme.txt    //查看工作区和版本库里面最新版本的区别

git diff > xxx.patch   //打patch

patch –p1 < xxx.patch  //同步patch

git aplay xxx.patch  //同步patch

git status

git commit

git commit --no-verify   //no code format check,  but use this method will no change id, so you should use git commit --amend

git init //创建新库

git commit --amend  //第一次提交到库上的文件有点问题,通过这条命令修改上次提交的注释并git push后两次的提交合并为一条

git cherry-pick commitID  //选择某一个分支中的指定commit合并到本分支或其他分支中,而不用关注其前后修改

代码回退,git reset相关:

git中用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^ 

上上一个版本就是HEAD^^  ,  当然往上100个版本写100个^比较容易数不过来,
所以写成HEAD~100

git reset  --hard HEAD~3  //回退commit到本地库的3次提交

git reset  --hard commitID  //将本地修改回退到当前ID对应的提交状态,如果该ID为中间某个节点, 则将该ID之后的所有节点回退

git revert commitID //回退指定commitID的提交,只回退本ID,不影响其前后的ID

git commit到本地的修改撤销后如何恢复:

git reflog

git reset --hard commitID  //commitID 为git reflog列出的需要恢复的ID

git reset HEAD  readme.txt   //撤销已经git add但还没有git commit的提交,也就是把暂存区的修改回退到工作区, 然后再git checkout  --  readme.txt 就回退工作区,回到和版本库一样的状态。


git reset HEAD   //如果执行git add之后,想将所有暂存区的文件撤回到工作区:

如果执行git commit之后,因为某种原因想撤销提交但仍然保留commit之前的修改,可以通过以下命令撤销提交:
# 将暂存区最近一次提交到Git目录的文件全部撤回到暂存区
git reset --soft HEAD^


如果想将git commit和git add一并撤回:
# 将暂存区最近一次提交到Git目录的文件全部撤回到暂存区,且将暂存区的文件全部撤回到工作区
git reset --mixed HEAD^

# 等同于该命令
git reset --soft HEAD^ && git reset HEAD

如果不想保留最近一次提交的所有修改: git reset --hard HEAD^


git reset --hard COMMITID1 //本地代码回退到COMMITID1的提交

如何回退git reset --hard COMMITID1:
git reflog  //查看所有commit 日志记录(包括reset --hard 之后的)
git reset --hard COMMITID0  //COMMITID0为COMMITID1之前的那次commitid

git reset COMMITID //回退后需要git add ,然后git commit达到和git reset --hard一样的效果
 
git reset --soft commitID 
//回退后需要git commit达到和git reset --hard一样的效果;
  只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;

如何回退git reset --hard COMMITID1:
git reflog  //查看所有commit 日志记录(包括reset --hard 之后的)
git reset --hard COMMITID0  //COMMITID0为COMMITID1之前的那次commitid


 

当有正在修改的文件还未提交是,突然有个临时bug需要修复,需要把未修改完的文件回退了,切到bug所在分支处理,除了打patch保存外还可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash    //保存现场,再git status 查看工作区就很干净了,默认没有标识,不好区分,如果要保存多个现场,最好加save参数

git stash save Test.scala

git  stash save Test

git  stash save Test1   //保存多个现场

git stash list   //查看上次保存的工作现场(确保和上次stash是同一个分支)

git stash pop  //恢复上次的现场,并删除该 stash, git stash list查看就很干净了

git  stash pop $num  //想要指定恢复某个 stash

当git clone时实际上git自动把本地的matser分支和远程的master分支对应起来了,并且远程仓库的默认名称是origin

git remote   //查看远程库信息

git  remote -v   //查看远程库详细信息

 

配置别名:

git config  --global alias.st  status   //git st 就表示git status

git  config  --global  alias.co  checkout   //git co 表示 git  checkout

git  config  --global  alias.ci  commit   //git  ci 表示git commit

git  config  --global  alias.br   branch  //git  br 表示git  branch

git  config  --global  alias.unstage  'reset HEAD'   //git unstage表示 git reset HEAD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值