• git


    git 命令:

    • 列出所有分支

      git branch

      git branch -v

      git branch -vvgit branch --merged  (列出已经合并到当前分支的分支,可删除)

      git branch --no-merged
    • 创建分支

      git branch iss53

    • 删除分支

      git branch -d testing

    • 切换到分支(本地工作目录会变)

      git checkout iss53

    • 创建并且切换到分支

      git checkout -b iss53

    • 合并分支,把分支合并到当前分支

      git merge hotfix

    • 有冲突的合并

      修改冲突文件,git add

      git status 查看直到没有冲突

      git commit

    • add & commit, 只add修改的文件

      git commit  -am"bala"

    • 与上次commit合并,会覆盖上次commit,新的commit id
      git commit --amend -m"update ff.txt"
    • 暂存

      git stash

      git stash save "some message"

      git stash list

    • 恢复

      git stash pop

    在出现一个搁置栈的情况下,比如如果你想找回栈中的第2个,可以用 git stash apply stash@{1}

    如果想找回第1个,可以用 git stash pop

    如果想删除一个stash,git stash drop <id>

    删除所有stash,git stash clear

    ---

    • 列出远程分支

      git ls-remote

      git remote show (remote)
    • 指定远程分支的名字

      git remote add name ...

      git clone -o name
    • 删除远程分支
      git push origin --delete dev
      git push origin :dev
    • 修改远程分支地址

      git remote set-url gitlab git@gitlab.gcloud.srcb.com:mhc/gpu-infra.git

     ---

    • 在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支

      git fetch origin master:tmp

    • 比较本地代码与刚刚从远程下载下来的代码的区别

      git diff tmp

    • git pull 与fetch的区别

      git pull是git fetch和git merge两个步骤的结合  

    • push & pull

      git pull <远程主机名> <远程分支名>:<本地分支名>  (如果与当前分支合并,不写冒号后边的)

      git pull origin next  等价于

      git fetch origin && git merge origin/next

    • 建立追踪(会覆盖之前的追踪)

      git branch --set-upstream-to gitlab/master tmp  (不写本地分支则时当前分支)

      git branch --track tmp2 gitlab/master  会新建本地分支

    • 将另一个分支的commit应用过来(commit-id 要在另有一个分支git log查看)

      git cherry-pick commit-id..commit-id          (左开右闭,不包括左边的commit-id)

      git cherry-pick commit-id^..commit-id   (包括左边) 

    • 合并commit

      git rebase -i HEAD~数字

      

    • 选择pick操作,git会应用这个补丁,以同样的提交信息(commit message)保存提交
    • 选择reword操作,git会应用这个补丁,但需要重新编辑提交信息
    • 选择edit操作,git会应用这个补丁,但会因为amending而终止
    • 选择squash操作,git会应用这个补丁,但会与之前的提交合并
    • 选择fixup操作,git会应用这个补丁,但会丢掉提交日志
    • 选择exec操作,git会在shell中运行这个命令

    --------------------------------------------------------------------------------

    git配置

    • git使用其他的ssh端口

      # cat ~/.ssh/config
      host gitlab.gcloud.srcb.com
      hostname gitlab.gcloud.srcb.com
      port 19630

    • 代理配置

      git config --global https.proxy http://127.0.0.1:1080

      git config --global https.proxy https://127.0.0.1:1080

      git config --global --unset http.proxy

      git config --global --unset https.proxy

      npm config delete proxy

      git config --global http.proxy 'socks5://127.0.0.1:1080'
      git config --global https.proxy 'socks5://127.0.0.1:1080'

    • 设置全局和局部用户

       git config --global user.name mhcvs2
      git config --global user.email merzhong0501@163.com

      git config --local user.email "merzhong0501@163.com"

      git config --local user.name "mhcvs2"

    •  git push 免密码

      cd ~ && vim .git-credentials

      输入: https://{username}:{password}@github.com

      git config --global credential.helper store  

    问题

    • push失败

    error: 无法推送一些引用到 'https://github.com/cloud-pi/dbcm-roles.git'
    提示:更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。
    提示:检出该分支并与远程变更合并(如 'git pull'),然后再推送。详见
    提示:'git push --help' 中的 'Note about fast-forwards' 小节。

    先备份一个分支 git checkout -b master_bak
    删除git branch -D master
    重新拉取git fetch origin master:master
    git checkout master
    git merge master_bak
    git push origin master

    •  运行 git push 会push所有本地分支到追踪的远程,如果存在没有追踪的本地分支,git push命令会失败

    git push origin  同样会失败

    git push dev 会push所有带追踪的分支,忽略不带追踪的分支,但是却push到与本地同名的远程分支(不明白)

    # git push origin dev
    Warning: Permanently added '[gitlab.gcloud.srcb.com]:29675,[109.105.1.253]:29675' (ECDSA) to the list of known hosts.
    Counting objects: 5, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 258 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 0 (delta 0)
    remote:
    remote: To create a merge request for dev, visit:
    remote:   http://gitlab.gcloud.srcb.com/hongchao.ma/test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
    remote:
    To git@gitlab.gcloud.srcb.com:hongchao.ma/test.git
     * [new branch]      dev -> dev
    [root@mhc test]# git branch -vv
    * dev    6e42088 [origin/master:领先 1] add
      master 4fa4514 add

    git push origin dev:master  正确将本地dev分支push到远程master分支

    • git远程分支回滚操作步骤:

    1、git checkout the_branch

    2、git pull

    3、git branch the_branch_backup //备份一下这个分支当前的情况

    4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

    5、git push origin :the_branch //删除远程 the_branch,不能是default分支

    6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

    7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

     

    Git撤销&回滚操作

    https://blog.csdn.net/ligang2585116/article/details/71094887

    git如何撤销上一次commit操作

    1.第一种情况:还没有push,只是在本地commit

    git reset --soft|--mixed|--hard <commit_id>
    git push develop develop --force  (本地分支和远程分支都是 develop)

    这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到

    --mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.
    --soft   保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
    --hard    源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

    防止冲突的方法:

    git branch tmp origin/master

    git checkout tmp

    git pull

    git diff master

    git merge master

    解决冲突

    git checkout master

    git merge tmp

    git branch -D tmp

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

    git 设置自动保存账号密码
    git config --global credential.helper store

  • 相关阅读:
    Ubuntu使用PBIS认证
    命令行运行Python脚本时传入参数的三种方式
    Python中调用shell
    Install chocolatey
    Configure vyatta
    Linux: Block Port With IPtables
    转:PHPStorm+XDebug进行调试图文教程
    转 Fira Code | 为写程序而生的字体
    转 [PHP]
    转:Drupal 如何得到字段的值?
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/9146549.html
Copyright © 2020-2023  润新知