zoukankan      html  css  js  c++  java
  • Git基础命令(二)

    1、设置别名alias

    git的命名有时候特别的长,使用起来不是那么的方便,所以它提供了一个命令:alias。通过给命令设置别名,可以方便我们的操作。

    如下所示:

    git config --global alias.co checkout #给checkout设置别名co

    git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative" #设置日志清晰显示

    还有很多命令,可以按照自己的习惯定义。最后奉上查看所有配置的命令:git config -l

    MeWifi:demo cjy$ git config -l
    core.excludesfile=~/.gitignore
    core.legacyheaders=false
    core.quotepath=false
    mergetool.keepbackup=true
    push.default=simple
    color.ui=auto
    color.interactive=auto
    repack.usedeltabaseoffset=true
    alias.s=status
    alias.a=!git add . && git status
    alias.au=!git add -u . && git status
    alias.aa=!git add . && git add -u . && git status
    alias.c=commit
    alias.cm=commit -m
    alias.ca=commit --amend
    alias.ac=!git add . && git commit
    alias.acm=!git add . && git commit -m
    alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset'
    alias.ll=log --stat --abbrev-commit
    alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%+b%C(bold blue)%an <%ae>%Creset %C(bold green)%cr (%ci)' --abbrev-commit
    alias.d=diff
    alias.master=checkout master
    alias.spull=svn rebase
    alias.spush=svn dcommit
    alias.alias=!git config --list | grep 'alias.' | sed 's/alias.([^=]*)=(.*)/1	 => 2/' | sort
    include.path=~/.gitcinclude
    include.path=.githubconfig
    include.path=.gitcredential
    diff.exif.textconv=exif
    credential.helper=osxkeychain
    core.excludesfile=/Users/cjy/.gitignore_global
    core.quotepath=false#显示中文文件名
    difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
    difftool.sourcetree.path=
    mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"
    mergetool.sourcetree.trustexitcode=true
    user.name=xxx
    user.email=xxx@126.com
    alias.co=checkout
    alias.c=commit
    alias.st=status
    alias.br=branch
    alias.lg=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative#日志比较清晰的设置
    color.ui=true
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    core.ignorecase=true
    core.precomposeunicode=true
    

    2、配置编辑器:git config --global core.editor "vim" #设置Editor用Vim,前提是本机有安装

    3、代码比对命令:git diff 只能比对当前文件和缓存区(未执行git add)的文件差异

    它还有其他的用法:

    git diff <$id1> <$id2> # 比较两次提交之间的差异
    git diff <branch1>..<branch2> # 在两个分支之间比较
    git diff --staged # 比较暂存区和版本库差异

    4、切换与撤销:checkout

    (1)切换:可以切换到分支,版本tag,某次提交(commit_id:某次提交的sha1值,可以通过log查看)git checkout v1.0

    (2)撤销git checkout a.md 只能撤销还没有add进去缓存区的文件

    5、git stash命令:前提是代码没有commit,这个命令可以把当前分支所有没有提交的代码先暂存起来,这时去执行git status几乎看不到代码的变动。然后执行git stash list就会看到暂存区有了一条记录。

    那如何把暂存的代码还原回来呢?只有执行git stash apply,代码就会回来了,紧接着最好将暂存区的这次记录删除,执行:git stash drop,就是把最近的一条stash记录删除。

    这样子的步骤有点繁琐,其实有更简单的方法:git stash pop,不但会帮你把代码还原,还是帮你把这条暂存区记录删除。虽然用起来方便,但是使用起来更需谨慎。

    最后一个命令介绍下:git stash clear 清空暂存区记录。

    6、merge和rebase:都是合并的意思

    它们的使用步骤一样:

    git checkout master

    git merge a

    git checkout master

    git rebase a

    它们的区别在于,merge比较暴力,直接将代码放到一块区域,你可以清楚的知道这块代码从哪里来的;而rebase则是将代码进行比较,然后重新排序放置好,这样做的好处是合并后看起来比较有逻辑,但是你很难知道它是从哪来的。

    举个例子,两个书架合并。merge就是直接腾出一个空间放置另一书架上的书。rebase则是将书按照一定的规则排序再放好,这样就很难知道这些书是从哪个书架搬过来的。

    7、解决冲突

    由于团队合作,提交冲突是难免的。假设A、B都对共同的模块做出修改,A先提交了,然后B再提交,这时候就会发生冲突了,因为Git本身没办法判断谁改的对,它就会提示conflicts,需要手动解决冲突才可以再次提交。

    一般冲突的格式有<<<<<<<<<<HEAD =========== >>>>>>xxx类似的提示文本,代表发生冲突。我们可以根据具体情况保留哪些代码,然后把这些格式符号删除掉,最后进行一次commit就OK了。

  • 相关阅读:
    Keras猫狗大战二:加载模型预测单张图片
    Keras猫狗大战一:小样本4层卷积网络,74%精度
    用fastai ResNet50训练CIFAR10,85%准确度
    Windows10安装cuda、cudnn、pytorch、jupyter、fastai
    Windows10安装anaconda
    pytorch识别CIFAR10:训练ResNet-34(自定义transform,动态调整学习率,准确率提升到94.33%)
    yolov3和darknet opencv版编译安装及基本测试
    pytorch错误:RuntimeError: received 0 items of ancdata解决
    pytorch错误:Missing key(s) in state_dict、Unexpected key(s) in state_dict解决
    pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)
  • 原文地址:https://www.cnblogs.com/hacjy/p/7154139.html
Copyright © 2011-2022 走看看