zoukankan      html  css  js  c++  java
  • Git基础操作

    配置秘钥

    1.检查本机有没有秘钥

    检查~/.ssh看看是否有名为d_rsa.pubid_dsa.pub的2个文件。

    $ ~/.ssh
    bash: /c/Users/lenovo/.ssh: Is a directory

    2.如果没有就创建新的秘钥

    $ ssh-keygen -t rsa -C "注册Github用的邮箱"  
    $ ssh-keygen -t rsa -C "注册Github用的邮箱"

    按照提示一路输入即可。

    ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/yourName

    这样会生成自定义的名字的秘钥。

    3.将ssh key添加到github

    id_rsa.pub里面是公钥,id_rsa里面是私钥。将id_rsa.pub公钥里的内容复制粘贴到你的github账号里。

    去github找settings->>SSH and GPG keys->>New SSH key,Title自己起一个名字,然后把秘钥粘贴到Key里保存即可。

    4.测试ssh key是否添加成功

    $ ssh -T git@github.com # 用 ssh 连接 github
    $ ssh -T git@github.com

    Are you sure you want to continue connecting (yes/no)?选择yes后会提示连接成功。

    git基础操作

    git clone

    $ git clone <版本库的网址>

    从代码仓库克隆一个版本库。

    该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

    $ git clone <版本库的网址> <本地目录名>

    除了https协议,git clone还支持其他协议。

    $ git clone http[s]://example.com/path/to/repo.git/
    $ git clone ssh://example.com/path/to/repo.git/
    $ git clone git://example.com/path/to/repo.git/
    $ git clone /opt/git/project.git 
    $ git clone file:///opt/git/project.git
    $ git clone ftp[s]://example.com/path/to/repo.git/
    $ git clone rsync://example.com/path/to/repo.git/

    git remote

    为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。

    不带选项的时候,git remote命令列出所有远程主机。

    $ git remote
    origin

    使用-v选项,可以参看远程主机的网址。

    $ git remote -v
    origin  git@github.com:jquery/jquery.git (fetch)
    origin  git@github.com:jquery/jquery.git (push)

    克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

    $ git clone -o jQuery https://github.com/jquery/jquery.git
    $ git remote
    jQuery

    git remote show命令加上主机名,可以查看该主机的详细信息。

    $ git remote show <主机名>

    git remote add命令用于添加远程主机。

    $ git remote add <主机名> <网址>

    git remote rm命令用于删除远程主机。

    $ git remote rm <主机名>

    git remote rename命令用于远程主机的改名。

    $ git remote rename <原主机名> <新主机名>

    git fetch

    一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

    $ git fetch <远程主机名>

    git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。

    默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

    $ git fetch <远程主机名> <分支名>

    所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。

    git branch

    git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。

    $ git branch -r
    origin/master
    
    $ git branch -a
    * master
      remotes/origin/master

    上面命令表示,本地主机的当前分支是master,远程分支是origin/master

    git checkout

    git checkout用于切换分支

    取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。

    $ git checkout -b newBrach origin/master

    上面命令表示,在origin/master的基础上,创建一个新分支。

    git merge

    $ git merge origin/master
    # 或者
    $ git rebase origin/master

    上面命令表示把origin/master合并到当前分支

    git rebase

    $ git checkout mywork
    $ git rebase origin

    这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

    当rebase的时候,会出现冲突的情况,git会停止rebase让你解决冲突,在解决完冲突后,用git-add命令去更新这些内容的索引,然后执行git rebase --continue,这样git会继续剩下的补丁,在任何时候,可以使用--abort来终止rebase,mywork分支会回到rebase开始前的状态。

    $ git rebase --continue
    $ git rebase --abort

    git status

    用于查看当前分支状态

    git diff

    用于查看修改内容或冲突

    git pull

    git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

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

    如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

    $ git pull origin next

    上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge

    $ git fetch origin
    $ git merge origin/next

    在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。

    Git也允许手动建立追踪关系。

    git branch --set-upstream master origin/next

    上面命令指定master分支追踪origin/next分支。

    如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

    $ git pull origin

    上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。

    如果当前分支只有一个追踪分支,连远程主机名都可以省略。

    $ git pull

    如果合并需要采用rebase模式,可以使用--rebase选项。

    $ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

    如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。

    但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。

    $ git pull -p
    # 等同于下面的命令
    $ git fetch --prune origin 
    $ git fetch -p

    git push

    git push命令用于将本地分支的更新,推送到远程主机。

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

    注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

    如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

    $ git push origin master

    上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

    如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

    $ git push origin :master
    # 等同于
    $ git push origin --delete master

    上面命令表示删除origin主机的master分支。

    如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

    $ git push origin

    上面命令表示,将当前分支推送到origin主机的对应分支。

    如果当前分支只有一个追踪分支,那么主机名都可以省略。

    $ git push

    不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。

    $ git push --all origin

    上面命令表示,将所有本地分支都推送到origin主机。

    小结

    git status 查看状态

    git diff 查看不同
    git add . 添加所有修改
    git commit -m 'commit name'  提交所有修改并命名
    git push origin mywork  将mywork本地分支推到远程仓库
                  
    git pull 拉远程代码然后直接合并到本地
    ==
    git fetch origin branch-name 拉远程代码
    git merge branch-name  合并
                  
    git branch -d mywork   删除本地分支mywork
    git push origin :mywork  删除远程分支mywork
                  
       
    git branch -a  列出所有分支
                  
    git checkout -b branch-name  新建分支
    git checkout -- views/index.html   取消修改


    git clean -f  删除 untracked files
    git clean -fd 连 untracked 的目录也一起删掉


    git checkout mywork   切换分支
    git rebase develop    将远程的最新更新到本地,再把本地的修改加上
                  
                  
    在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:$ git rebase --continue。这样git会继续应用(apply)余下的补丁。
    在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
    $ git rebase --abort

    git log --graph --all --oneline 查看日志

    以下两个操作可以用来恢复本地删除的文件

    git reset HEAD  文件路径名

    git checkout 文件路径名

  • 相关阅读:
    ubuntu18.04 切换python版本
    chart
    tox -e py27报错
    ubuntu 18.04配置静态ip,解决无法上网问题,解决resolv.conf配置文件被覆盖
    ubuntu 18.04输入法问题
    openstack 王者归来学习笔记
    nova client和nova restfull api区别
    nova-api nova-compute 启动服务的时候有的没有加配置文件有的加了
    go语言基本语法
    【转】 Docker和CI/CD实战
  • 原文地址:https://www.cnblogs.com/hahazexia/p/5902588.html
Copyright © 2011-2022 走看看