git常用命令

将本地工程push到远程

方式一:

  1. 建立本地仓库
    1
    git init
  2. 创建远程仓库:在github或者gitlab创建远程仓库
  3. 让本地仓库和远程仓库进行关联
    1
    git remote add origin git@mycode.skylettestudio.com:xlPay/XLPay.git
  4. 进行添加和提交操作
    1
    2
    git add .
    git commit -m"添加文件"
  5. push到远程
    1
    2
    3
    4
    5
    6
    git push -u origin master

    由于远程库是空的,第一次推送master分支时,加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,如下:
    git push origin master

    git push

方式二:

  1. 创建远程仓库

  2. 把远程仓库clone到本地

    1
    git clone. git@mycode.skylettestudio.com:xlPay/XLPay.git
  3. 将本地工程copy到clone的文件夹中

  4. 进行添加和提交操作

    1
    2
    git add -A
    git commit -m"添加文件"
  5. 将工程push到远程

    1
    git push _ origin _ master

创建分支,并提交分支再合并分支到master分支

  1. 先次分支提交
  2. 切换到主分支:git checkout master
  3. git merge 被合并的次分支名
  4. git push

git clone 指定分支 拉代码

  1. git clone 不指定分支
    1
    git clone  http://10.1.1.11/service/tmall-service.git
  2. git clone 指定分支
    1
    git clone -b dev_jk http://10.1.1.11/service/tmall-service.git
    注:命令中:多了一个 -b dev-jk,这个dev_jk就是分支,http://10.1.1.11/service/tmall
    -service.git为源码的仓库地址

Add操作

  • 添加单个改动文件,如:readme.txt
    git add readme.txt
  • 添加所有改变的文件,有如下几种区别:
    // 表示添加所有内容
    git add -A
    // 表示添加新文件和编辑过的文件不包括删除的文件
    git add .
    // 表示添加编辑或者删除的文件,不包括新添加的文件
    git add -u
  • 添加同时提交内容
    git commit -am”添加并提交到仓库”

分支操作

  • 查看分支
    1
    git branch
  • 创建分支
    1
    2
    3
    git branch 分支名

    git checkout -b 分支名
  • 切换分支
    1
    git checkout 分支名
  • 合并某分支到当前分支
    1
    git merge <name>
  • 删除本地分支
    1
    git branch -d <name>
  • 查看远程分支列表
    1
    2
    3
    git branch -a

    绿色代表当前项目所在的分支,红色就是远程分支列表
  • 提交该分支到远程仓库(即:在远程创建dev分支,并提交内容):
    1
    git push origin dev
  • 从远程获取dev分支内容:
    1
    git pull origin dev
  • 删除远程分支
    1
    git push origin --delete <branchName>
  • 重命名本地分支
    1
    git branch -m <oldbranch> <newbranch>
  • 重命名远程分支
    1
    先删除远程分支,然后重命名本地分支,再重新提交一个远程分支

    版本回退

    在Git中,用HEAD表示当前版本。上一个版本就是HEAD,上上一个版本就是HEAD。,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
  • 查看提交日志(所有的提交日志,最近到最远)
    1
    git log
  • 查看提交的内容(比如更改了哪些类,删除了哪些文件等)
    1
    git log -p -1// -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新
  • 查看命令历史(即:我们每一个命令)
    1
    git reflog
  • 通过git log 或者 git reflog可以拿到每个版本的commit_id,然后通过切换版本/回退版本的命令即可:
    1
    git reset --hard commit_id
  • 回到上一个版本(到了上一个版本还可以继续回退)
    1
    git reset --hard HEAD^
  • 回退版本操作:
    1
    2
    3
    4
    //git log 拿到commit_id
    git log
    //回到commit_id那个版本
    git reset --hard commit_id
  • 已经回退到了之前的版本,又想回到新版本
    1
    2
    3
    4
    //查看所有的命令,然后找到新版本提交的 commit_id
    git reflog
    //去到新版本
    git reset --hard commit_id
  • 让这个文件回到最近一次git commit或git add时的状态
    1
    git checkout -- readme.txt

    解决冲突

  • 合并冲突:
    1
    2
    3
    4
    //提交的文件如果出现冲突就会出现这种提示
    CONFLICT (content): Merge conflict in readme.txt

    Automatic merge failed; fix conflicts and then commit the result.
  1. 通过git status 查看冲突文件
  2. Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
  3. 修改文件,保存,再次提交即可
  4. 通过git log查看分支合并的情况
  5. <<<<<<<标记冲突开始,后面跟的是当前分支中的内容。
    HEAD指向当前分支末梢的提交。
    =======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。>>>>>>>之后的dev是该分支的名字。

公共操作

  • 把本地git仓库恢复为普通文件夹
    1. 删除这个目录里的隐藏文件夹.git
    2. rm -rf .git/
  • 测试Github和Gitlab是否添加了SSH
    1
    2
    ssh -T git@github.com
    ssh -T git@gitlab.com
  • 查看未传送到远程代码库的提交描述/说明(commit到了本地仓库,但是没有push到远程仓库的内容的提交说明)
    1
    git cherry -v origin thcdev//后面要加push到的远程仓库名
  • 查看远程库信息
    1
    git remote -v
  • 清屏操作
    1
    git reset
  • git log之后退出
    1
    按 Q 即可
  • 找到历史提交的commit id
    1
    git log --pretty=oneline --abbrev-commit

    Git 命令行常用命令

  • 进入当前路径的dev

    cd dev

  • 返回上级目录

    cd ..

  • 返回上次目录

    cd

  • 查看当前目录

    pwd

  • 列出当前目录内容

    ls

  • 新建一个名为dev的目录

    mkdir dev

  • 强制删除,不管目录为不为空

    rm -rf dev

常见问题:

  1. git解决 error: you need to resolve your current index first
    解决方法:

    回退到merge前,再切换分支即可
    git reset –merge

  2. Repository not found

    git push -u origin master
    ERROR: Repository not found.
    fatal: The remote end hung up unexpectedly

    解决:git remote add origin 仓库地址

  3. fatal: remote origin already exists.

    git remote rm origin
    git remote add origin 仓库地址

  4. ! [rejected] master -> master (fetch first) error: failed to push some refs to ‘git@github.com:地址.git’

    git pull –rebase origin master
    git push origin master

  5. git push报错Updates were rejected because the tip of your current branch is behind

    错误信息:

    1
    2
    3
    4
    5
    6
    7
    8
    DannideMacBook-Pro:connect-cas2-client danni$ git push origin master
    To https://gitee.com/danni3/connect-cas2-client.git
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to 'https://gitee.com/danni3/connect-cas2-client.git'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    解决: git pull origin master

    如果再遇到下列错误信息

    DannideMacBook-Pro:connect-cas2-client danni$ git pull origin master
    From https://gitee.com/danni3/connect-cas2-client
    * branch            master     -> FETCH_HEAD
    fatal: refusing to merge unrelated histories

    解决: git pull origin master –allow-unrelated-histories

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  1. © 2020 Liu Yang    湘ICP备20003709号

请我喝杯咖啡吧~

支付宝
微信