github常用操作

来源:互联网 发布:三只松鼠旗舰店淘宝 编辑:程序博客网 时间:2024/06/17 22:06

1. 设置SSH Key

GitHub上连接已有仓库的认证,是通过使用的SSHDE公开密钥认证方式进行的. 运行一下命令创建SSH Key

ssh-keygen -t rsa -C "your_email@example.com"

在GitHub中添加公开密钥,今后就可以用私有密钥进行认证了

$ cat ~/.ssh/id_ras.pubssh-rsa 公开密钥的内容 your_email@example.com

2. 基本操作

  • git init 初始化仓库
    通过git init命令把这个目录变成Git可以管理的仓库。当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
    如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
  • git status 查看仓库的状态
  • git add 向暂存区中添加文件, git commit 保存仓库的历史记录
    这里写图片描述
    要想让文件成为Git仓库的管理对象,就要使用git add命令将其加入暂存区(stage),暂存区是提交之前的一个临时区域。
    git commit命令可以讲暂存区的文件实际保存到仓库历史记录中,通过这些记录,可以在工作树中复原文件。
    第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
    第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
    你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

  • git log 查看提交日志

    $ git log    $ git log --pretty=short 只显示提交信息的第一行    $ git log README.md 只显示指定的目录,文件和日志

3. 推送至远程仓库

远程仓库,顾名思义是于我们本地仓库相对独立的另外一个仓库
- git remte add 添加远程仓库
例如

$ git remote add origin git@github.com:github-book/git-tutorial.git

按照上述命令, git会自动将git@github.com:github-book/git-tutorial.git远程仓库的名字设置为origin

  • git remote 查看远程仓库

也可以使用-v命令,显示对应的远程仓库员的地址

$ git remote -v
  • git remote show 查看某个远程仓库的详细信息
    比如要查看origin远程仓库,可以使用
$ git remote show origin
  • 远程仓库的删除和重命名
    使用git remote rename命令修改某个远程仓库在本地的简称,比如想把origin改成origin2,使用如下命令
$ git remote rename origin origin2

删除远程仓库, 运行git remote rm。 例如要删除名称为origin远程仓库

$ git remote rm origin
  • 推送至远程仓库

    • 推送至master分支
      如果想将当前分支下本地仓库中的内容推给远程仓库,需要用到git push命令。假定我们在master分支下进行操作

      $ git push -u origin master

      像这样执行git push命令,当前分支的内容就会被推送给远程仓库origin 的master分支,-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游), 添加了这个参数,将来可以运行git pull命令从远程仓库获取内容时,本地仓库的这个分支可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦.

    • 推送至master以外的分支
      除了master分支外,远程仓库也可以创建其他分支. 举个例子,我在本地仓库中创建feature-D分支,现在将它push给远程仓库并保持分支名不变
$ git checkout -b feature-D     本地创建feature-D分支$ git push -u origin feature-D  push给远程仓库

4. 从远程仓库中获取

  • git clone获取远程仓库
$ git clone git@github.com:github-tutorial-book/git-tutorial.git

执行git clone命令后我们会默认处于master分支下,同时系统会自动将origin设置成该远程仓库的标识符。也就是说,当前本地仓库的master分支与Github端远程仓库(origin)的master分支内容完全相同

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

比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

$ git pull origin next:master

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

$ 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

上面命令表示,当前分支自动与唯一一个追踪分支进行合并。

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

比如,取回origin主机的master分支。

$ git fetch origin master

所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支

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

上面命令表示,本地主机的当前分支是master,远程分支是origin/master。
可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支

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

上面命令表示在当前分支上,合并origin/master。

原创粉丝点击