Git基本使用以GitHub为例详细说明

流氓凡 技术分享 2019-11-01 3.79 K 0

网上看到了很多管理Git的使用教程,加上最近一段时间KKCMS也开始使用GitHub托管代码,就详细的描述下如何将程序上传到GitHub进行托管和更新及协同开发。

注意:网上基本都是需要什么KEY秘钥的,这里不是用这种方法,简单粗暴的直接push   pull等 怎一个爽字了得?

    一些基本的GitHub新建仓库什么的这里也说了,实在看不懂英文的,使用谷歌浏览器右键-翻译!!!

1.首先cd到项目目录,如文件目录是/Applications/MAMP/htdocs/ceshi
2.在当前项目目录进行git初始化 使用命令:git init    (此时会在项目目录下生成一个.git的隐藏文件夹表示成功)
3.开始初始化用户名和邮箱
    git config --global user.name ‘xxx’
    git config —global user.email ‘xxxxx@xxx’

image.png

如果是第一个新建仓库,需要在新仓库页面找到类似这两个命令,并执行它
git remote add origin https://github.com/wangyifani/ceshi233.git
git push -u origin master

4.在项目目录创建文件准备测试上传到GitHub中
5.将该项目下的所有文件添加到暂存区,
    git add .    (.表示所有文件,还可以直接在后面使用文件名)
6.将刚才添加到的暂存区项目中的文件添加到GitHub仓库
    git commit -m '描述’    (这里面的描述一般填写本次更新的版本号)
7.使用git push    执行上传到GitHub操作
    (这里如果报错,返回第三步截图中内容)


删除仓库文件:
    1.rm -rf删除本地文件或文件夹
    2.git rm 要删除的文件名  从git暂存区中删除文件    (如果删除目录需要加参数-r 如:git rm -r 目录名)
    3.git commit -m ‘描述'
    4.git push    执行删除git仓库


仓库的操作和管理
    一.多人协同开发:
        目的:将一个项目上传到GitHub仓库,使用pull和push一起维护项目。
            首先,在GitHub中找到要开发的项目,然后添加协作者,输入同伴的GitHub用户名
        

image.png

        准备一起协助开发的同学电脑上,用git进入一个目录(最好是盘的根目录,mac系统中可以是mamp等软件的www根目录)
        将要开发的项目克隆到这个目录下,使用 git clone 项目地址    这个指令
            项目地址在哪里找?
                

image.png

        温馨提示:这个时候克隆下来的项目地址中,我们可以直接使用git push指令执行提交项目更新,不用当做是自己第一次新建的仓库还要去用git push -u xxx这个指令

        这时候协作开发的同学就可以直接在这个项目修改更新了,更新之后,协作开发的同学将再次重复上面的指令进行提交更新到GitHub中
        还是那三步 
            1.git add 目录名 添加文件到暂存区(这时候一般不要再继续用 . 上传目录下所有文件了,一般只上传你负责模块的目录,避免其他人pull时候出现错误)
            2.git commit -m ‘描述’  添加描述信息,这里一般填写本次更新的版本号或者其他一些强烈的更新内容
            3.git push    执行更新GitHub

        以上是首次开发更新项目,当我们再次准备维护这个项目的时候,我们就不能再使用clone了,因为这会在本地重新下载一个项目文件夹。我们需要使用pull(拉),这样会将其他人更新上传到GitHub的文件下载到协作者本地电脑中,可以直接使用最新的项目模块。
        下拉项目指令:git pull    (当然了 还是需要你本地进入到项目目录下才能使用这个指令的)

        然后就是再次的三部曲,不赘述。



GitHub的一些比较实用的小细节:
    1.设置项目文件默认语言:
        有时候我们明明上传的是php程序,但是GitHub会将项目的默认语言是JavaScript 或html等等,这时候我们需要在项目根目录新建一个 .gitattributes 文件
        在文件中填写如下内容:
*.css linguist-language=php
*.less linguist-language=php
*.js linguist-language=php
*.html linguist-language=php

   

     2.设置排除部分文件不要更新:

        一些时候我们可能不希望上传一些文件,比如安装程序过后的install.lock mac系统自动生成的.DS_Store等等,这时候我们需要在根目录新建一个 .gitignore 文件
        在文件中填写你不希望执行更新的文件名(注意:只是填写文件名即可,无需填写文件路径),如:
index.lock
install.php

    

    3.关于删除的操作:
        一些时候我们想要删除文件,你只需要删除本地的文件,然后使用git add . 上传更新所有文件,git commit -m ‘描述’ git push 这样远程的仓库中的文件就会删除。

        这里需要注意的是:.gitignore这个文件只能屏蔽文件上传,不可以屏蔽删除的文件操作,也就是说,本地删除了index.php文件  .gitignore文件中即使填写了index.php文件,远程仓库也会被删除 



GitHub合并分支一般的异常处理:
要是使用命令git pull前,本地仓库和工作区并不一致怎么办?不用担心这个,此时如果使用该命令,则会有下列提示
error: Your local changes to the following files would be overwritten by merge:
        test2.txt
Please commit your changes or stash them before you merge.
提示你提交修改到本地仓库或暂时存储一下。提交修改都本地仓库不用多讲。暂时存储步骤如下:
git stash \\先将本地修改暂存起来
git stash list  \\查看保存信息
git pull     \\拉取内容
git stash pop   \\还原暂存的内容

使用git pull 根据远程仓库和本地仓库的状态不同,主要分为以下四种情况。
  1. 当远程仓库的分支比本地仓库版本提前,使用git pull,本地仓库,暂存区和工作区都会被替换成远程仓库分支的版本。
  2. 当远程仓库的分支落后于本地仓库的版本时,使用git pull,没有如何效果,提示Already up to date.。
  3. 当远程仓库和本地仓库是同一个分支的两个分叉的时候,比如 远程仓库一开始跟本地仓库版本一致都是A,后来远程仓库对文件进行了修改,设为版本B,而本地仓库也对文件进行了修改,设为版本C。这时,如果使用git pull,则会产生冲突,对版本B和版本C的修改会同时存在本地工作区中的文件里,你需要修改后进行保存,决定代码内容具体是哪一个,再git commit -a -m "message",提交到分支,然后git push,使远程仓库和本地分支同步。
  1. git pull 失败 ,提示:fatal: refusing to merge unrelated histories,其实这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并,使用这个强制的方法git pull --allow-unrelated-histories,后面加上 --allow-unrelated-histories , 把两段不相干的 分支进行强行合并,后面再push就可以了 git push。



评论