Git入门

    xiaoxiao2021-03-25  78

    Git 入门

    Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

    使用Git管理代码,可以是多人协作,共同维护服务器上的一个工程项目。也可是单机上进行简单的版本控制。

    很多人一听到用 Git,就觉得烦,感觉自己又要学东西了。其实大可不必,一般来说,使用 Git 能掌握以下几个最最最基本的命令也就差不多够了。剩下的事情,等你用的时候遇到了再慢慢摸索。

    本地使用的基本命令

    建立仓库 git init

    init 完之后,就会生成一个 .git 隐藏文件夹,这就是仓库。

    向仓库导入项目文件,这时候只是在缓存中,还不是真正的提交 git add DIR NEWFILE

    例如:

    git add .

    只要当前目录下的某些文件的时候,可以并列写开,形如 git add file1 file2。

    向仓库提交项目文件 git commit -m "My first backup"

    引号里面的内容表示注释。

    有时候会出错,告诉你git没有配置,你按它的提示输入两行代码进行配置即可。

    在项目中删除文件或目录 git rm OLDFILE 显示最近提交列表,以及他们的SHA1哈希值 git log 恢复到指定提交状态 git reset --hard SHA1_HASH 或者 git checkout SHA1_HASH

    基于github的基本操作

    克隆 //注意要换成自己的github仓库地址 git clone https://github.com/veige/veige.github.io.git 添加到缓存区、提交到本地仓库、远程上传到github git add . git commit -m "注释信息" git push 上传到你的 GitHub 项目中 git remote add bieming 远程仓库地址

    这里 bieming 只是给远程残酷地址取个别名,省得每次都要写一大串地址,后面就可以用 bieming 来替代连接上的仓库。连接上仓库后,可以使用git remote -v来查看当前连接的仓库。

    推上去和拉下来 git push bieming git pull

    若原来一直在本地使用 git,commit 了很多次,也有一些comments,不想废弃。现在你想要上传到新建的github仓库,那么必须要先通过 pull 来 merge。

    本地操作:

    git init git add ./param ./src git status git commit -m "some info"

    建立了 GitHub 仓库后:

    git remote add drops https://github.com/lusongno1/drops git pull drops master --allow-unrelated-histories git push -u drops master

    git status 命令用于显示工作目录和暂存区的状态。git status不显示已经 commit 到项目历史中去的信息。git push 第一次提交需要加上 -u 以后就不需要了。因为历史不相关的问题,直接 git pull 可能会报错,需要加上--allow-unrelated-histories强制 merge。这个过程需要填写 merge 的 comments,同步到提交信息当中去。

    团队合作设置:使用 Git 和 GitHub 进行团队合作开发

    有时候,你想要和别人一起合作开发同一份东西,你会想要用 Git 和用 GitHub 作为托管。然后你就会上网搜啊搜,搜如何用 GitHub 进行合作开发。搜到的结果大多是告诉你,先把别人(Owner)建的需要协同开发的项目仓库的 Fork 到自己的 GitHub 上,然后克隆本地,改好了同步传到自己的 GitHub 上,然后再在自己的 GitHub 上申请和Owner 合并, 即创建一个 Pull 请求,Owner 收到了你的请求,同意了,你的代码就更新过去了。 乍一看,相当麻烦啊。搞来搞去,还要等 Owner 在线确认。事实上,如果你们只是临时搞一个小合作,比如说几个同学一起,参加个比赛,或者做个小东西啥的,大可不必。直接把代码提交到Owner 的 GitHub 上不是更直接么。上面提到的的合作方式,只是适合于中大型项目的分工和合作。我们来看看只是几个人参加比赛,如何通过 GitHub 来协同合作。

    1、Owner 建仓库

    首先确定一个项目拥有者,即你们一个团队的项目都上传到他的 GitHub 下,这个 Owner 需要做几件事情。

    在 GitHub 上创建一个组织,邀请组织成员,即你的队员们。组织下创建一个 team,要求组织成员里面的人进入 team,成为团队成员。新建一个仓库,取个合适的名字。如果你是比赛什么的,最好将库设置为私有的。将队友给的 SSH Keys 黏贴到 GitHub 上。队友SSH Keys 哪来的?后面会说。
    2、队员生成 SSH Keys

    用 SSH Keys 的原因在于,队友本没有权限提交你的代码到 Owner 的仓库里,添加在 Owner 的GitHub上添加了作为你身份标识的 SSH Keys,那么你就能提交代码上去了。

    队友,下载 Git 并打开 Git 终端。使用如下代码,生成你的 SSH Key,

    ssh-keygen -t rsa -C "lusongcool@163.com"

    引号里面的只是身份标识,随便写点啥。生成后,将公钥(id_rsa.pub)里的内容拷贝出来发给 Owner,让 Owner 在 GitHub 上保存你的公钥。

    这一步做完了以后,队友就可以把自己的代 push 到你们团队的这个 repository 里了。

    3、Git 相对于 GitHub 的操作

    做了以上操作之后,Owner 和队员就可以进行代码或者文件的下载、更新、修改、上传等操作。简述如下:

    克隆合作项目的仓库地址(Owner 那里),形如 git clone https://github.com/owner_name/xxxxxxxxx.git

    克隆下来之后,你会发现有一个文件夹,文件夹里面是你克隆的内容,其中包含一个隐藏的 .git 文件夹,这个隐藏的文件夹就是本地仓库,它是和网上 GitHub 对接的地方。

    克隆仅仅是克隆,只要有链接,谁都能克隆。下一步要做的是将本地 Git 连接上远程仓库,只有这样,Git 才知道,你要把东西上传到哪。 git remote add bieming 远程仓库地址

    这里 bieming 只是给远程残酷地址取个别名,省得每次都要写一大串地址,后面就可以用 bieming 来替代连接上的仓库。连接上仓库后,可以使用git remote -v来查看当前连接的仓库。

    Git 终端使用 cd 切到你克隆的文件夹目录下。 然后,来一波常规的本地 Git 操作,前面介绍了。 git add . git commit -m "更新信息"

    如果 克隆下来,没有仓库,可以先 init 一下,建个本地仓库。这里为什么要切到你下载的文件夹目录下,我来解释一下。因为我们 Clone 后,GItHub 上那个仓库里面的内容,其实对应的是文件夹里面的内容,而不是这个文件夹。如果在文件夹为 init 新的仓库,并且推到 GitHub 上,那么你提交的就是这个文件夹,而不是文件夹里面的内容。这时候,就会因为你本地仓库的内容是“一个文件夹”,而 GitHub 上仓库的内容是文件夹里面的 “文件”,内容路径不对应,而报错。

    上传代码 git push bieming

    这里有时候不需要加仓库名。

    拉取 GitHub 的代码到本地(同步) git pull

    pull 这个东西是怎么理解呢?如果 GitHub 上没有,本地有,那么 pull 之后,本地的文件会不会消失呢?一个简单的测试是,本地新建一个文件,不管有没有同步到本地仓库中,pull 之后,这个文件不会消失。但是把这个文件 push 上去,再在 GitHub 上删掉,此时在 pull,那么这个文件就会消失。这是为什么呢?可以这样理解,一个本地文件,只要 push 过了,就被标识为“库内”成员,“库内”成员是参与 pull 更新的。

    一点不错的资料

    ProGit中文版: https://git-scm.com/book/zh/v2

    廖雪峰的Git教程: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    Git简易指南: http://rogerdudler.github.io/git-guide/index.zh.html

    参考链接

    转载请注明原文地址: https://ju.6miu.com/read-33673.html

    最新回复(0)