Git远程协作开发通用操作

很多版本控制器眼花缭乱,Snv,Git 等,我们下面来说一下Git的远程协作开发的常用步骤

 

1、先说一下Git我们如何切换分支,首先切换分支时候要保证我们的代码是最新的,要先更新我们本地代码git remote update(也就是把远程的分支上别人提交的新代码下载到你的本地,当然你运行完可以看到你的工作空间的目录文件或许已经改变),运行git  rebase orign/远程本身,然后运行Git checkout 分支名称

     总结一下就是三部,git remote update    -- >  git  rebase orign/远程本身  -- >   git checkout 分支名称 

     (值得注意的,这两个词命令有很多用法,这里只说这两种,若不够自己的需求可以去深入研究版本控制的逻辑与原理,虽然你并不一定能搞明白)

 

2、在说一下提交代码,当我们有些功能在本地编辑完成了,我们需要提交到远端,要进行一下几部的操作

      git remote update

      git add . (注意这个点,. 是提交你所有修改的文件《包括了你修改的地方与新建的文件,当然还有另外两种用法,这里只说一种》)

      git commit -m "提交的说明信息" (这一步可以和上一步合并,add是把你的改动放到暂存区,commit是把你的修改提交到本地仓库,具体概念这里不深究)

      git rebase origin/分支号  (注意斜杠这是和远程的分支合并,把你本地仓库的代码与远程分支合并,当然这一步有时候会产生冲突,冲突需要一行一行来解决,eclipse与idea会有自己的图形界面来操作《左边是你的代码。中间是上一个版本的代码,右边是别人提交的与你冲突的代码》,用到了merge等操作。具体,rebase这一步是否和remote update冗余。这里可以思考一下)

       git push origin 分支号   当然如果在上一步产生了冲突在解决完冲突后需要运行 git rebase --continue,之后再进行此步骤。

3、如果我们在操作过程中遇到了一些错误,Git会给出解决命令,按照操作一般可以解决问题,当然在新手的情况下可能盲人按摩,瞎摸一通而错。

4、如果我们在修改时不知修改了那些文件,可以运行git  status 来查看,标红的即是所改文件。

5、当然上面的一切我们需要申请账号,并且clone项目,见下端:

     

第五步:git授权与clone工程

5.1、首先需要向公司申请git账号

5.2、在你想要存放工程的目录下打开git命令窗口(右键,Git Bash Here)

      账号申请完成后需要在本地执行git相关命令,如下

        git config --global user.name "wb-*****"

git config --global user.email "*****@163.com"

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

如图:

 

5.3、执行完以上命令后会生成如下两个文件,打开XXX.pub文件。将内容拷贝一下。粘贴到下图中指定位置(看不清楚的话可以放大图片)

 

 

5.4、将生成的秘钥粘贴应用后,在本地执行如下命令

git clone http路径

如果ssh克隆不好使,就是用http克隆

 

 

6、如果办公电脑不可抗力出现损坏。更换电脑时

你可能会发现新的git如论什么操作都需要输入用户名密码,这时候需要打开cmd命令(注意不是git命令), 设置用户名与密码,

$ git config --global user.name "Your Name" ,$ git config --global user.email "[email protected]" ,

设置完后可以查看一下git的配置,会发现已经持久化账号和密码,再重新再项目文件打开git窗口,发现已经不需要输入username与email了

 

7、有时候用户名密码在更新代码或提交代码时需要频繁合并,我们需要持久化一下用户名密码,命令如下:

   git config --global credential.helper store

-(如果本地的修改没有add到缓存,而且像还原回之前的样子,那么只需要 git checkout .  可以将本地代码还原到上个版本)

 

8、我们可以将多次提交commit合并成一次,我们在提交代码时,一个需求有可能提交了N多次,而且都是比较小的改动,

这时候可以用git rebase -i HEAD^^^^^命令来融合多个提交(^代表了有多少个commit),进入编辑模式,我们要改的第一行我们用pick命令,

相邻下面几行用s命令,保存退出后再次进入编辑模式,保留第一行的提交说明,下面几行去掉就OK(为了美化git提交记录不择手段)

 

      当然这些操作班组最基本的需求是没问题,但是大家有时候可能会苦恼一个版本控制器为何如此错综,但是事实就是这样,可能国内的情况很一下掌握版本控制的本质细节原理,但是其确实值得深究,毕竟广大码农现在不可能离开它。

 

下面是git目录接口及作用:

.git文件夹目录结构

1 、hooks文件夹:

    这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;

    在搭建gitweb系统或其他git托管系统会经常用到hook script。
2、info文件夹:

     包含git仓库的一些信息
3 、logs文件夹:

     保存所有更改的引用记录,继续打开logs文件夹,有refs文件夹和HEAD文件

    请看下图中
(1)HEAD文件

        主要记录每次的变更操作,所有类型的变更都会记录的哦,

         git reflog命令查询出的列表就是HEAD中存储的列表

(2)继续打开refs文件夹,可以看到heads文件夹、remotes文件夹和stash文件

    I : stash文件存储的是所有你使用git stash命令暂存的记录,是一个列表。使用git stash list时,查询出的列表就是从stash中取出来的。

    II:heads文件里面存储的是一系列的本地分支的对象,每个对象的文件名就是本地的一个分支名,使用git branch查看本地分支命令时,查询出的所有本地分支就是取的heads文件夹下所有文件的名称。

    III:remotes文件夹里存储的是远端的一系列分支的对象,每个对象的文件名称就是远端的一个分支名称,使用git branch -a查看远端分支命令时,查询出的所有本地分支就是取的remotes文件夹下所有文件的名称。

4、objects文件夹

该目录存放所有的Git对象,对象的SHA1哈希值(一共40位)的前两位是文件夹名称,后38位作为存在相应文件夹下对象的文件名。

比如0b这个文件夹,它里面有一系列git对象(也就是文件),里面所有文件的38位的名称加上0b,就组成原来的40位的哈希值了。

更近一步说,我们每次提交新文件到git上时,这时会根据该文件内容计算生成一个40位的哈希值,假如生成的是0c7bcc3f8f1c5311d06e3067f7f7dddecb8668fe,这个文件的存储方式就是先截取0c作为文件夹名称,然后后面的38位7bcc3f8f1c5311d06e3067f7f7dddecb8668fe作为文件名称,存储在0c文件夹下。

如果这时你又提交了一个文件或者修改了一个文件碰巧又生成一个以0c开通的哈希值,那么这个时候就会直接截取该哈希值的后38位作为该次生成的git对象的文件名,存储在原来已经存在的0c文件夹下。

5、refs文件夹

(1)heads文件夹

        该文件夹存储的是所有的本地分支文件,每一个本地分支文件中,存储的是一个哈希值,每一次commit都是生成一个对应的哈希值,然后用这次新生成的哈希值,替换掉原来这个分支文件中的哈希值。

如下三张图,红色的代表新提交的三个文件,然后

    
(2)stash文件

        该文件夹是使用git stash命令时,会将生成的git对象的哈希值存储到stash文件里,更进一步说stash文件中,就存了一个40位的哈希值。对应的git对象在objects文件夹里。使用git stash pop时,会先去stash文件中,找到该哈希值(或者也可以认为是指针),然后到对应的objects文件夹下,查找对应的git对象,将其中的数据取出来,转换成我们能看懂的代码

        I、继续打开tags文件夹

            当使用git tag v1.0给当前分支,打上标签时,就会在tags文件夹下,生成对应文件,文件里存储的是当前分支所对应的哈希值,以后就可以使用v1.0这个标签来代替分支名称,通常发布稳定的线上版本时,使用这种做法。方便以后查询,因为使用标签容易记,更简洁。

6、COMMIT_EDITMSG文件提交的是最近一次提交的描述信息
7、 config:这个是GIt仓库的配置文件
8、 description:仓库的描述信息,主要给gitweb等git托管系统使用
9、 index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
10、HEAD文件里面只存储了当前分支的关联

11、记住账号密码 git config --local credential.helper store

12、比如说交接工作时候换了电脑,同事的git账号信息和你的信息会有冲突,需要切换成你的信息,可以用以下命令,git config --global user.name "YOURUSERNAME" git config --global user.email "YOUREMAIL",(查看git config user.name git config user.email),有时候保存了用户名与邮箱,生成了私钥,还是无法操作项目

那么重新克隆项目 git clone https://用户名@rdc.hand-china.com/gitlab/项目.git

克隆时候加上自己的用户名就OK了,注意此操作相当于将代码fork了一份(切了个分支,拷贝了一份),在更新代码时候会发现更不下来,应为这个克隆下来的分支与主干没有关系,可以用下面方法解决,删除电脑中原用户的凭证

 

 

发布了26 篇原创文章 · 获赞 1 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章