分类: GIT

git
  • git log怎么搜索关键字

    背景:
    开发中记得之前某个功能做过了,但是因为某些原因这个已经开发好了的功能屏蔽了,现在又要使用它,然而什么时候做的都忘记了,只记得做过这个功能,或者当时提交git log的关键字,那么就有了,这篇文章git log怎么搜索关键字了

    ## 本文关于git log查找关键字就两个命令:

    git  log  --grep  隐藏              #检测关键字
    git  log  --grep  隐藏 --author yangxyi@kuaiji.com     #检测关键字,并指定关键字作者
    

    举个例子,我要使用git log查找带有”隐藏”这个关键字的git log

    git  log  --grep  隐藏
    

    git log 就搜索出来了这样的结果了
    git log怎么查找关键字
    **

    假如git log搜索出来的关键字太多怎么办?我们还可以使用git log检索的时候指定作者

    git  log  --grep  隐藏 --author yangxyi@kuaiji.com     #检测关键字,并指定关键字作者
    

    **
    git log搜索

    小伙伴们,你们应该学会了怎么使用git log搜索提交注释了吧!!

  • git重命名tag标签

    Git重命名tag标签教程

    在 git 中,我们要重命名一个 tag 标签,我们可以使用 git tag 命令。

    git重命名tag标签详解

    语法

    git tag newTag oldTag
    git tag -d oldTag 
    

    参数

    参数 描述
    newTag 新标签名。
    oldTag 重命名后的标签名。

    说明

    我们使用 git tag 将标签重命名后,我们还需要使用 git tag -d 命令,将旧标签删除,如果我们还需要将修改后的标签投送到远程,我们还需要使用如下命令:

    git push origin :refs/tags/oldTag
    git push --tags 
    

    push 命令中的冒号将标记从远程存储库。如果你不这样做,git 会在你的机器上创建旧的标签。最后,确保其他用户删除已删除的标签。请告诉他们(同事)运行以下命令:

    git pull --prune --tags 
    

    至此,重命名工作就完成了。

    Git重命名tag标签总结

    在 git 中,我们要重命名一个 tag 标签,我们可以使用 git tag 命令。

  • 切换github账号后,push时403错误

    如果你在多个github账户之间切换,并在不同的github上克隆了仓库时,那么在提交代码的时候就会容易出现403错误,如下:

    image

    这个错误信息其实很明显,就是你要提交的github和你当前的github不是一个账号,我在网上搜索一下,也有很多种解决办法,下面介绍其中一种,亲测有效:
    打开终端输入:

    rundll32.exe keymgr.dll,KRShowKeyMgr
    

    在弹出的框中选择github并编辑

    image

    在下拉框中选择需要的账户,输入密码,点击确定

    image
    再重新push就可以成功了。

  • “git pull” 如何强制覆盖本地文件

    git checkout master
    git branch new-branch-to-save-current-commits
    git fetch --all
    git reset --hard origin/master

    重要提示:如果您有任何本地更改,将会丢失。无论是否有–hard选项,任何未被推送的本地提交都将丢失。
    如果您有任何未被Git跟踪的文件(例如上传的用户内容),这些文件将不会受到影响。
    下面是正确的方法

    git fetch --all
    

    然后,你有两个选择:

    git reset --hard origin/master
    

    或者如果你在其他分支上:

    git reset --hard origin/<branch_name>

  • linux git版本更新

    安装 centos7 WANDisco 仓库

    yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

    2,安装 Git
    yum -y install git
    3,版本验证
    git version
    centos7 安装快捷复制
    yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
    yum -y install git
    git version

    yum install nss

  • git diff 换行符问题

    这是由于换行符在不同的操作系统上定义的区别造成的。

    Windows用CR LF来定义换行,Linux用LF。

    CR全称是Carriage Return ,或者表示为\r, 意思是回车。

    LF全称是Line Feed,它才是真正意义上的换行表示符。

    如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。
    ————————————————
    版权声明:本文为CSDN博主「1_2_3ad」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/nanyilou_xiaoye/article/details/79075092

    git config --global core.whitespace cr-at-eol
  • git导出代码的方法~archive

    git archieve

    可以用于将库中代码打包。

    1. 基本用法:

    git archive --format tar.gz --output "./output.tar.gz" master
    

    说明:

    • 将master分支打包为output.tar.gz
    • –format指明打包格式,若不指明此项,则根据–output中的文件名推断文件格式。所以你也可以将上述命令简化为:

    git archive --output "./output.tar.gz" master
    

    可以使用-l参数获得支持的文件格式列表。

    [@sjs_73_171 gittest]$ git archive -l
    tar
    tgz
    tar.gz
    zip
    
    • –output指明输出包名

    2. 打包不同的分支或commit

    如果想打包不同分支,只要使用不同分支名即可。比如我有一个分支名为“testbr”,可以用如下命令将其打包。

    git archive --format tar.gz --output "./output.tar.gz" testbr
    

    如果要打包某个commit,只要先使用git log找到相应的commit id, 再使用该commit id打包即可。比如:

    git archive --format tar.gz --output "./output.tar.gz" 5ca16ac0d603603
    

    3. 打包某个目录

    如果想打包master下的mydir mydir2目录,可以用下面命令

    git archive --format tar.gz --output "./output.tar.gz" master mydir mydir2  
    

    4. 注意

    打包建议在代码库的根目录下进行,不然会碰到各种问题。比如,如果在master分支的mydir目录下执行如下命令:

    git archive --output "./output.tar.gz" master
    

    就只会将mydir目录下的内容打包。

    作者:跑马溜溜的球
    链接:https://www.jianshu.com/p/98fa58073554
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 解决 VSCode 每次 git pull/push 时都需要输入账号和密码的问题

    在提交项目代码或者拉取代码的时候,如果每次git都要输入用户名密码;
    解决方法: 在 VSCode 的终端输入 git config –global credential.helper store 命令
    在弹框中输入账号和密码,此时输入一次,以后再git push /pull 的时候就不用在输账号和密码了。

  • git同步远程已删除的分支和删除本地多余的分支

    使用 git branch -a 可以查看本地分支和远程分支情况 

    但远程分支(红色部分)删除后,发现本地并没有同步过来。

    一. 同步本地的远程分支

    查看本地分支和追踪情况:

    git remote show origin

    可以发现红框中的分支是远程分支已被删除的分支,根据提示可以使用 git remote prune 来同步删除这些分支。

    运行命令:

    git remote prune origin

    再次查看分支情况:

     发现红色部分的远程分支已经同步,远程删除的分支,本地也已经不见了。

    二. 删除本地多余分支

    git branch -D feature/chatfix

    本地多余分支已删除

    三.删除远程分支

    git branch --delete --remotes <remote>/<branch>

    git push origin --delete release/3.2.6

  • git 常用命令

    删除远程分支:

    git push origin --delete [branch_name]
    

    删除最后一次提交:

    git reset --hard HEAD^

    强制提交本地代码

    git push origin master -f

    记录密码

    git config –global credential.helper store

    导出日志文件路径

    git log –pretty=format:”” –name-only  -1

    忽略文件权限的检查

    git config core.fileMode false

    忽略ssl

     git config http.sslVerify “false”  

    换行符自动转换

     #提交时转换为LF,检出时转换为CRLF    git config –global core.autocrlf true        #提交时转换为LF,检出时不转换    git config –global core.autocrlf input        #提交检出均不转换    git config –global core.autocrlf false        #拒绝提交包含混合换行符的文件    git config –global core.safecrlf true        #允许提交包含混合换行符的文件    git config –global core.safecrlf false        #提交包含混合换行符的文件时给出警告    git config –global core.safecrlf warn #设置行结束符的类型为lf    git config –global core.eol lf #设置行结束符的类型为crlf git config –global core.eol crlf #设置行结束符的类型为native, native是指平台默认的行结束符。默认的类型是native git config –global core.eol native ———————————————— 版权声明:本文为CSDN博主「梆子井欢喜坨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_39610915/article/details/90904857

    设置git push和pull的默认远程分支

    git branch –set-upstream-to=origin/master master

    git pull

    Git 常用操作命令:

    1) 远程仓库相关命令

    检出仓库:$ git clone git://github.com/jQuery/jquery.git

    查看远程仓库:$ git remote -v

    添加远程仓库:$ git remote add [name] [url]

    删除远程仓库:$ git remote rm [name]

    修改远程仓库:$ git remote set-url –push [name] [newUrl]

    拉取远程仓库:$ git pull [remoteName] [localBranchName]

    推送远程仓库:$ git push [remoteName] [localBranchName]

    *如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:

    $git push origin test:master         // 提交本地test分支作为远程的master分支

    $git push origin test:test              // 提交本地test分支作为远程的test分支

    2)分支(branch)操作相关命令

    查看本地分支:$ git branch

    查看远程分支:$ git branch -r

    创建本地分支:$ git branch [name] —-注意新分支创建后不会自动切换为当前分支

    切换分支:$ git checkout [name]

    创建新分支并立即切换到新分支:$ git checkout -b [name]

    删除分支:$ git branch -d [name] —- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

    合并分支:$ git merge [name] —-将名称为[name]的分支与当前分支合并

    创建远程分支(本地分支push到远程):$ git push origin [name]

    删除远程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name] 

    *创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)

    $git symbolic-ref HEAD refs/heads/[name]

    $rm .git/index

    $git clean -fdx

    3)版本(tag)操作相关命令

    查看版本:$ git tag

    创建版本:$ git tag [name]

    删除版本:$ git tag -d [name]

    查看远程版本:$ git tag -r

    创建远程版本(本地版本push到远程):$ git push origin [name]

    删除远程版本:$ git push origin :refs/tags/[name]

    合并远程仓库的tag到本地:$ git pull origin –tags

    上传本地tag到远程仓库:$ git push origin –tags

    创建带注释的tag:$ git tag -a [name] -m ‘yourMessage’

    4) 子模块(submodule)相关操作命令

    添加子模块:$ git submodule add [url] [path]

       如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs

    初始化子模块:$ git submodule init  —-只在首次检出仓库时运行一次就行

    更新子模块:$ git submodule update —-每次更新或切换分支后都需要运行一下

    删除子模块:(分4步走哦)

     1) $ git rm –cached [path]

     2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉

     3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉

     4) 手动删除子模块残留的目录

    5)忽略一些文件、文件夹不提交

    在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如

    target

    bin

    *.db

    =====================

    Git 常用命令

    git branch 查看本地所有分支

    git status 查看当前状态 

    git commit 提交 

    git branch -a 查看所有的分支

    git branch -r 查看本地所有分支

    git commit -am “init” 提交并且加注释 

    git remote add origin git@192.168.1.119:ndshow

    git push origin master 将文件给推到服务器上 

    git remote show origin 显示远程库origin里的资源 

    git push origin master:develop

    git push origin master:hb-dev 将本地库与服务器上的库进行关联 

    git checkout –track origin/dev 切换到远程dev分支

    git branch -D master develop 删除本地库develop

    git checkout -b dev 建立一个新的本地分支dev

    git merge origin/dev 将分支dev与当前分支进行合并

    git checkout dev 切换到本地dev分支

    git remote show 查看远程库

    git add .

    git rm 文件名(包括路径) 从git中删除指定文件

    git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来

    git config –list 看所有用户

    git ls-files 看已经被提交的

    git rm [file name] 删除一个文件

    git commit -a 提交当前repos的所有的改变

    git add [file name] 添加一个文件到git index

    git commit -v 当你用-v参数的时候可以看commit的差异

    git commit -m “This is the message describing the commit” 添加commit信息

    git commit -a -a是代表add,把所有的change加到git index里然后再commit

    git commit -a -v 一般提交命令

    git log 看你commit的日志

    git diff 查看尚未暂存的更新

    git rm a.a 移除文件(从暂存区和工作区中删除)

    git rm –cached a.a 移除文件(只从暂存区中删除)

    git commit -m “remove” 移除文件(从Git中删除)

    git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)

    git diff –cached 或 $ git diff –staged 查看尚未提交的更新

    git stash push 将文件给push到一个临时空间中

    git stash pop 将文件从临时空间pop下来

    ———————————————————

    git remote add origin git@github.com:username/Hello-World.git

    git push origin master 将本地项目给提交到服务器中

    ———————————————————–

    git pull 本地与服务器端同步

    —————————————————————–

    git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。

    git push origin serverfix:awesomebranch

    ——————————————————————

    git fetch 相当于是从远程获取最新版本到本地,不会自动merge

    git commit -a -m “log_message” (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :

    git branch branch_0.1 master 从主分支master创建branch_0.1分支

    git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0

    git checkout branch_1.0/master 切换到branch_1.0/master分支

    du -hs

    ———————————————————–

    mkdir WebApp

    cd WebApp

    git init

    touch README

    git add README

    git commit -m ‘first commit’

    git remote add origin git@github.com:daixu/WebApp.git

    git push -u origin master

    git记录密码

    git config –global credential.helper cache

    强制还原

    git reset –hard origin/master

    //////////////////强制提交 push///////////////////////

    1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

    git push -f

    2,先把git的东西fetch到你本地然后merge后再push

    $ git fetch

    $ git merge

    这2句命令等价于

    [plain] view plain copy print?

    •  $ git pull  

    有如下几种解决方法:

    1.使用强制push的方法:

    $ git push -u origin master -f 

    这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

    2.push前先将远程repository修改pull下来

    $ git pull origin master

    $ git push -u origin master

    3.若不想merge远程和本地修改,可以先创建新的分支:

    $ git branch [name]

    然后push

    $ git push -u origin [name]

    •  忽略换行符差异

    由于Windows用CRLF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。换行符的差异导致

    copy

    1 LF will be replaced by CRLF in

    所以我们需要忽略换行符差异

    copy

    12 git config core.autocrlf falsegit config core.safecrlf true

    或(—global为全局)

    copy

    12 git config –global core.autocrlf falsegit config –global core.safecrlf true
    •  忽略文件权限

    有时只是改了文件权限,而非内容,不需要提交变更

    copy

    1 git config core.filemode false

    或(—global为全局)

    copy

    指定目录操作:

    git -C path pull