zoukankan      html  css  js  c++  java
  • GitHub 常用命令使用介绍(新同学入门)

    经济在不断发展,社会在不断进步,以往的互联网在现在看来都可以称为传统互联网了,因为技术不断的在突破和革新。

    本文主要介绍一下版本管理工具,我猜测很多人还是用SVN、CVS或者Resion,但是,今天我想告诉大家,那些都已经过时了,大家有兴趣的可以学学新一代版本管理工具GitHub.

    GitHub是分布式管理工具,相比较SVN更具优势,GitHub使用前需要在官网先注册账号,注册完以后,可以把自己的项目上传上去,然后无论走到哪里都可以进行开发,并且提交,提交的时候,GitHub跟SVN有所不同,GitHub可以先在本地提交,最后推到资源库,SVN只有提交操作(直接提交到服务器),下面介绍基本入门。

    1.注册账号

    注册地址:https://github.com

    2.创建资源库

    注册完账号后,直接点击新建即可,我觉得新建资源库不用我来详细介绍,随便看看应该就会了。

    3.克隆刚刚创建的资源库。

    创建的资源库就是我们要开发的项目,为了方便开发,我们需要克隆到本地,SVN的术语叫checkout.

    首先打开本地的工作空间 cd e:/workspace

    使用Git命令:

    git clone https://github.com/JackySoft/MyTest.git

    也可以克隆ssh协议的文件,比如:

    git clone ssh://git@10.137.20.113:2222/root/test.git

    大家在使用git命令之前,需要先安装Git Bash

    下载地址:https://git-scm.com/download/或者https://git-for-windows.github.io/

    大家可能有点不知道Git Bash是干什么的,它主要是Git版本管理的命令行,就好比SVN也有专门的命令行软件,只不过大家习惯用SVN客户端来操作更简单。GitHub也有图形工具,SourceTree,但是,好像大多人更喜欢用命令行,可能觉得比较高深或者牛叉吧。我当然两个都用,我觉得主要还是为了提高开发效率。

    克隆完项目以后,项目就已经保存到我们刚刚的工作空间里面去了,然后就可以在这个项目的基础上进行编程了。

    4.新建文件,添加到索引库

    在该项目基础上新建一个文件比如:a.txt后

    需要添加到索引库,命令如下:

    git add a.txt等同于svn add a.txt

    5.提交代码到本地仓库

    git commit -m "test github"

    注意,此处提交只是将本地的修改提交到本地的仓库,GitHub上的项目并不会改变,这一点和SVN有很大的不同,这就是分布式开发。

    6.推送到远程仓库

    git push

    输入完此命令后,命令行会提示让你输入账号和密码,输入完即可推送。

    7.刷新GitHub官网看看项目是否有变化,此时应该已经同步完成。

    有冲突后,如果确定不要远程的代码可使用force,这个命令要慎用

    git push --force origin

    会用本地的代码覆盖远程仓库的代码

    我相信刚开始学GitHub的时候有一些晕,我刚开始的时候也是非常晕,里面的概念浑然不懂,看了很多文档,并亲自测试,才明白,于是,我觉得需要记录下来,给那些曾经像我一样的小白学习一下,减轻一些负担。

    另外给大家提供一些Git的学习站点:

    http://www.bootcss.com/p/git-guide/

    另外,还有一种情况需要跟大家介绍:

    本地已开发的项目,想要上传到GitHub上面去,第一种方式,可以直接打开GitHub官网,将自己的项目拖拽上去。

    第二种方式:

    cd e:workspaceTest

    进入到项目根目录下面后,通过git init 初始化一个本地仓库

    git add -A 可将本地所有文件提交到暂存区

    git commit -m "demo" -a 可将所有暂存区的文件提交到本地仓库。

    git remote add origin https://github.com/JackySoft/MyTest.git 将本地仓库的项目推送到远程仓库中。

    git push origin master  将本地origin主机master分支代码推送到远程master分支上,默认是master分支。

    git push orgin master:data 将本地origin主机master分支代码推送到远程data分支上,通过冒号来区分分支

    如果远程仓库已经存在一些文件了,此时 推送会报冲突,需要先将远程仓库拉取到本地,再进行推送。

    git pull origin master ,将远程master分支拉取到本地

    相关命令统计:

    创建类命令 
    git brach branchName 创建名为branchName的branch 
    git checkout branchName 切换到branchName的branch 
    git checkout -b 创建并切换,也就是上面两个命令的合并

    git brach branchName ef71 从commit ef71创建名为branchName的branch

    显示信息类命令 
    git ls-files -u 显示冲突的文件,-s是显示标记为冲突已解决的文件

    git diff 对比工作区和stage文件的差异 
    git diff --cached 对比stage和branch之间的差异

    git branch 列出当前repository下的所有branch 
    git branch --a 列出local 和remote下的所有branch

    git ls-files --stage 检查保存在stage的文件

    git log 显示到HEAD所指向的commit为止的所有commit记录 。使用reset HEAD~n 命令使HEAD指针向前移动,会导致HEAD之后的commit记录不会被显示。

    git log -g则会查询reflog去查看最近做了哪些动作,这样可以配合git branch 恢复之前因为移动HEAD指针所丢弃的commit对象。如果reflog丢失则可以通过git fsck --full来查看没被引用的commit对象。 
    git log -p -2 对比最新两次的commit对象 
    log -1 HEAD

    git log --pretty=oneline

    git log --stat 1a410e 查看sha1为1a410e的commit对象的记录

    git blame -L 12,22 sth.cs 如果你发现自己代码中 的一个方法存在缺陷,你可以用git blame来标注文件,查看那个方法的每一行分别是由谁 在哪一天修改的。下面这个例子使用了-L选项来限制输出范围在第12至22行

    撤销类命令 
    如果是单个文件 
    1.use "git reset HEAD <file>..." to unstage 
    如果已经用add 命令把文件加入stage了,就先需要从stage中撤销

    然后再从工作区撤销 
    2.use "git checkout -- <file>..." to discard changes in working directory

    git checkout a.txt  撤销a.txt的变动(工作区上的文件) 
    如果是多个文件 
    git chenkout .

    如果已经commit 了,则需要 
    git commit --amend 来修改,这个只能修改最近上一次的,也就是用一个新的提交来覆盖上一次的提交。因此如果push以后再做这个动作就会有危险

    $ git reset --hard HEAD 放弃工作区和index的改动,HEAD指针仍然指向当前的commit.(参照第一幅图)

    这条命令同时还可以用来撤销还没commit的merge,其实原理就是放弃index和工作区的改动,因为没commit的改动只存在于index和工作区中。

    $ git reset --hard HEAD^ 用来撤销已经commit的内容(等价于 git reset --hard HEAD~1) 。原理就是放弃工作区和index的改动,同时HEAD指针指向前一个commit对象。

    git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动

    提交类命令 
    git add 跟踪新文件或者已有文件的改动,或者用来解决冲突

    git commit 把文件从stage提交到branch

    git commit -a 把修改的文件先提交到stage,然后再从stash提交到branch

    删除类命令 
    git rm --cached readme.txt 只从stage中删除,保留物理文件

    git rm readme.txt 不但从stage中删除,同时删除物理文件

    git mv a.txt b.txt 把a.txt改名为b.txt

    Merge类命令

    在冲突状态下,需要解决冲突的文件会从index打回到工作区。

    1.用工具或者手工解决冲突 
    2.git add 命令来表明冲突已经解决。 
    3.再次commit 已解决冲突的文件。

    $ git reset --hard ORIG_HEAD 用来撤销已经commit 的merge. 
    $ git reset --hard HEAD 用来撤销还没commit 的merge,其实原理就是放弃index和工作区的改动。

    git reset --merge ORIG_HEAD,注意其中的--hard 换成了 --merge,这样就可以避免在回滚时清除working tree。

    git其他命令

    创建新分支并命名,此处我们创建名为 new_stuff 的分支

    git branch newBranch

    切换新分支

    git checkout newBranch

    添加所改动的文件以便提交

    git add .

    提交改动

    git commit -m "create a branch"

    回到master分支

    git checkout master

    合并到主分支

    git merge newBranch

    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]

    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]
    我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。

    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

    $ git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
    $ git push origin test:test // 提交本地test分支作为远程的test分支

    如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

    $ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心
    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]

  • 相关阅读:
    C#Task和async/await使用
    jQuery实现C#CheckBoxList模糊搜索
    [转载].NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新
    MD5加密方法HashPasswordForStoringInConfigFile(string,string)过时问题处理方法
    .NET WebFrom跨时区项目时间问题处理方法
    C# 中的Async 和 Await 的用法详解
    cron表达式
    ASP.NET MVC实现单用户登录
    一个简单便捷的树形显示Ztree
    身份证代码
  • 原文地址:https://www.cnblogs.com/jacksoft/p/5302008.html
Copyright © 2011-2022 走看看