• 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]

  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/jacksoft/p/5302008.html
Copyright © 2020-2023  润新知