zoukankan      html  css  js  c++  java
  • git

    Git

    patch

    git format-patch [commid_start]…[commitid_end] 注意,commitid_end这次的提交并不会产生patch

    git am < XXXX.patch或者 git am * 打入路径内所有patch

    为什么不使用review合入远程库?

    常用命令

    查看当前对应的远程分支:

    git branch -vv

    如果git pull或者./repo sync失败,使用

    Vi .git/config

    打开配置文件. 添加你要更新的分支, 如:

    [branch "all_master"]
     remote = origin
     merge = master

    untracked和tracked,也就是未跟踪和已跟踪

    已跟踪文件又分为三种状态:

    unmodified:文件没有做过任何修改

    modified:文件已经修改了,但还没有提交

    staged:文件已经修改,准备提交

    要修改.git/config才能正常push

    git push xxx_dev 将xxx_dev分支提交到远程库

    如果没有配置config,需要写git push origin/XXX_dev

    git log -n 1 –stat [commitID]简要的显示(最近一个提交的)文件增改情况-p选项展开显示每次提交的内容差异,用-2则仅显示最近的两次更新

    git log --author=xiaoxi.cai

    git log --pretty=oneline  -p列出文件的所有改动历史

    git log --follow -p显示某个文件在各版本的改动

    git blame xx/../yy.java | grep zz 查看某行代码的改动信息

    git log --name-status – telephony 显示telephony文件夹下的改动,列出文件名及注释

    git show commitid显示某次更改详情。 只显示文件列表:git show –name-only commitid

    git clone username@url     -b选择分支

    git status 查当前更改未提交的

    git diff 显示有修改但未提交的文件的改动     git diff HEAD HEAD^比较上次提交commit和上上次提交. 历史版本也可类似的比较

    git add 包括修改的和新增的文件 –u被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件 –A所有不同的文件信息都添加到索引库,包括删除的文件–I命令查看<path>中被所有修改过或已删除文件但没有提交的文件。可以通过git add –i(查看,可以通过该命令提交一部分修改的文件)的revert子命令(3: [r]evert)把已经添加到索引库中的文件从索引库中剔除。update子命令(2: [u]pdate)把已经tracked的文件添加到索引库中。add untracked子命令(4: [a]dd untracked)可以把还没被git管理的文件添加到索引库中。unchanged表示已经处于tracked下,它被修改了,但是还没有被执行了git add。  Git add . 将所有待加入索引的文件加入

    git rm –r * 删除当前目录下的所有目录和文件

    git commit  -m "提交的描述信息" -a 选   git commit –s –m “commit info”

    git tag创建一个标签(tag)指定某个提交(commit): git tag stable-1 1b2e1d63ff

    git merge把一个已存在的本地分支或某个commit的修改合并现在的本地分支上 git merge –no-ff [branch_name]

    git cherry-pick commitid用于把另一个本地分支的commit修改应用到当前分支。Git cp --continue

    git pull自动merge掉本地代码(新增未add的本地文件不受影响) /push/fetch下载但不merge,可手动git merge

    git branch –r 所有分支 –a当前分支  git branch XXX 新建分支,但不切换过去

    git branch -vv(两个v),git config --list就能够看到本地分支跟踪的远程分支。 

    git checkout把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.

    -b 表示你指定从哪个分支checkout后新建-b xxx_dev remotes/origin/SSCR_FFB(不写的话,默认从master拉分支)

    git checkout -b 本地分支名 origin/远程分支B

    -t  用远程分支名作为本地分支名

    git checkout commit_no [file_name] 取文件file_name在commit_no时的版本

    git remote add origin ssh://git@dev.lemote.com/rt4ls.git  增加别名origin。一般已经配置了

    git pull origin master分支同步到主干版本

    git push <远程主机名> <本地分支名>:<远程分支名>

    $ git push origin test:master         // 提交本地test分支作为远程的master分支
    $ git push origin :test              // 刚提交到远程的test将被删除。:左边的分支为空将删除:右边的远程分支

    git reset # 去除某个提交之后的一切提交记录 –filename 去除add后进入index的文件

    (git reset --hard HEAD~1(默认为~1,是回滚的提交数))或commit_no   回滚到某次提交状态   git reset HEAD^ --mixed回到commit&add之前状态,--mixed,是回到git add之前的状态,修改还在的 在远端的修改,是可以找回的,本地的回滚了就没了

    git revert撤销操作,本身也会作为一次被提交的操作

    git clean -dn 看看有哪此文件和目录会被删-f 只会删文件,不会删目录-df 可帮你搞定一切

    git stash暂时搁置当前已做的改动  

    git stash apply 回复上一次搁置的内容

    git stash list 来查看所有的搁置版本

    git stash pop stash@{0}恢复保存的第一个  git stash drop <id>  git stash clear

    git pull origin master自己分支与master同步 功能同:git pull --rebase origin master分支与master同步

    repo forall -c git fetch –p 对所有工程执行git fetch –p命令,进行分支信息更新命令。

    Git show [tag_name]查看tag所在版本的信息。标签可以针对某一时间点的版本做标记,常用于版本发布。打标签:git tag xxxx

    public key

    在.ssh目录中有config  id_rsa  id_rsa.pub  known_hosts这四个文件

    key失效了

      public key文件id_rsa***删掉

      然后ssh-keygen -t rsa 回车回车回车

      把新key重新拷到45网页的public key文件

    代码管理

    1)git clone(下到本地)

    例如:git  clone  git://github.com/someone/some_project.git   some_project 

    上面的命令就是将'git://github.com/someone/some_project.git'这个URL地址的远程版本库,完全克隆到本地some_project目录下

    2)git init 和 git remote add(上传到remote)

    当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化;Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把可访问的URL记录下来,此时你就可以利用'git remote add'命令来增加一个远程服务器端,

    例如:git  remote  add  origin  git://github.com/someone/another_project.git

    上面的命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可

    3)repo init和repo sync(下到本地)

    使用repo管理代码时使用

    cd .repo/manifests

    repo init -m aosp-telephony.xml

    repo sync –d (可以解决一些repo sync报错的问题)

    git branch –D XXX  如果本地分支有不要的提交,删掉重建分支

    续传

    用git init

    git fetch git://…..git

    即使断掉了,可以继续通过重复以上命令续传

    等到fetch完会出现以下字样

    From git://….

    *branch           HEAD                -> FETCH_HEAD

    意思是把最新的数据fetch到了本地的FETCH_HEAD分支上去了

    然后用git checkout FETCH_HEAD

    上传

    首先保证存在本地分支(repo start XXX [--all|project])

    • Git add .
    • git commit -s(后面不用加参数 –s代表签名)

          此时会跳出commit的编辑框,在编辑框中按格式说明填写注释(分三行写,方便以后用脚本合版本无关patch),保存提交即可。另外,如果是已经upload过,再次upload的commit,此时需要将changes-id那一行删掉。

    • repo upload .

    弹出文本编辑界面,将需要上传的project前的注释打开,:wq

    如果有冲突提交失败,可以修改后使用:

    Git commit –amend;

    Repo upload;

    这样就不会成为一个新的提交,而是对之前提交的修改

    代码冲突解决

    Please, commit your changes or stash them before you can merge.

    如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

    git stash

    git pull

    git stash pop

    反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

    git reset --hard

    git pull

    碰到git不能删除或不能reset时,要注意是否是权限问题

     

    删除未add的新增文件:git checkout . && git clean -xdf

    常见问题

    Avl7580 is published (but not merged) and is now XXx commits behind

    指向的远程基节点有了更新,需要git rebase Avl7580(本地分支名),将基节点指向最新的分支节点。

      

    合并commit

    在本地的git库commit了多次,在push到远程的git库时,可以在本地合并这些commit。

    每次合并两个commit

    $ git reset --soft HEAD^1

    $ git commit --amend

    合并最后n个commit

    $ git rebase -i HEAD~n

  • 相关阅读:
    深度学习之TensorFlow(一)——基本使用
    64位win10+cuda8.0+vs2013+cuDNN V5下Caffe的编译安装教程并配置matlab2014a 接口
    Win10+vs2012+cuda8.0的安装与配置
    图像处理与matlab实例之图像平滑(一)
    Windows下pycharm使用theano的方法
    Python中的支持向量机SVM的使用(有实例)
    混淆矩阵在Matlab中PRtools模式识别工具箱的应用
    模式识别与机器学习—bagging与boosting
    微服务架构下分布式事务解决方案——阿里GTS
    谈谈分布式事务
  • 原文地址:https://www.cnblogs.com/wolflzc/p/6178794.html
Copyright © 2011-2022 走看看