美文网首页随笔
Git手把手简易教程

Git手把手简易教程

作者: 小鲨鱼FF | 来源:发表于2019-03-25 07:41 被阅读27次

前言

git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是团队协作开发的必备技能,下图是git的工作流程。

git工作流程

注册

下面以gitlab为例,注册好账号后,新建项目,命名为test_git。

gitlab新建项目 gitlab新建项目2

下面请准备两台电脑,没有两台电脑可以用虚拟机代替

A和B电脑都安装Git

  • Windows:

    进入https://git-scm.com下载安装,安装时全部点下一步即可。

  • Linux(Ubuntu):

    apt install git
    
  • Linux(Centos):

    yum install git
    
  • Mac:

    brew install git
    

设置git的提交邮箱和提交用户名(这步不能漏,不设置邮箱和用户名是无法提交的),执行命令:

git config --global user.email "you@example.com"
git config --global user.name "your name"

这个邮箱和用户名只是你提交到git远程上显示出来的,可以随便填写,并不需要和你的gitlab邮箱和用户名保持一致,但建议保持一致。

A和B电脑都配置SSH-Key

配置ssh-key,简单来说就是git本地和git远程通过密钥关联起来,不用每次推送和拉取都输入密码,而且还是加密传输。

1. 本地配置

命令行输入(Windows的打开安装好的git.exe输入命令):

ssh-keygen -t rsa -C "你的邮箱地址"

一路回车,生成ssh密钥。

  • Windows:
    打开c:/用户/自己的用户名/.ssh,找到id_rsa.pub这个文件,用记事本打开。

  • Linux/Mac:
    打开~/.ssh,找到id_rsa.pub这个文件,用文本编辑器打开。(Linux可能找不到.ssh文件夹,因为这是隐藏的文件夹,按Ctrl + H即可显示出)

2. 远程配置

登录gitlab,打开Settings -> SSH Keys,把文件id_rsa.pub的内容复制到Key输入框中,再编写Title输入框,title一般写id_rsa.pub里的那个邮箱(A和B两台电脑就需要添加两个ssh-key,title可以相同)。

gitlab配置ssh-key gitlab配置ssh-key2 gitlab配置ssh-key3

A电脑初始化项目

新建文件夹test_git,进入test_git文件夹,新建文件test.txt,写入一行A init,

A电脑初始化项目-文件内容

在test_git文件夹下执行以下命令:

git init
git remote add origin git@gitlab.com:chunjie/test_git.git
git add .
git commit -m "first commit"
git push -u origin master

git远程地址换成你的:

git远程地址

在gitlab上项目里新建develop远程分支:

gitlab新建develop远程分支 gitlab新建develop远程分支2

A电脑操作1

在test_git文件夹下,新建并切换到develop本地分支,即执行命令:

git checkout -b develop

修改test.txt文件,在最后添加一行A develop add 1,

A电脑操作1-文件内容

在test_git文件夹下执行命令:

git add .
git commit -m "A develop add 1"
git push origin develop

B电脑操作1

在一个文件目录下克隆项目,进入test_git文件目录,新建并切换到develop本地分支,拉取最新的develop远程分支,即在test_git目录下执行命令:

git clone git@gitlab.com:chunjie/test_git.git
git checkout -b develop
git pull origin develop

打开查看test.txt文件,

B电脑操作1-文件内容

修改test.txt文件,在最后添加一行B develop add 1,

B电脑操作1-文件内容2

在test_git目录下执行命令:

git add . 
git commit –m "B develop add 1"
git push origin develop

A电脑操作2

修改test.txt文件,在最后添加一行A develop add 2,

A电脑操作2-文件内容

在test_git文件夹下执行命令:

git add .
git commit -m "A develop add 2"
git pull origin develop

发现提示冲突了,

A电脑操作2-提示冲突

根据提示是test.txt文件冲突,因为刚才B电脑也在最后添加了一行B develop add 1,所以需要解决冲突,打开test.txt文件,

A电脑操作2-冲突文件

根据实际情况编辑好test.txt,这里是再添加一行,即在B develop add 1后再添加一行A develop add 2,

A电脑操作2-解决冲突

然后在test_git文件夹下执行命令:

git add .
git commit -m "解决冲突"
git pull origin develop
git push origin develop

B电脑操作2

拉取最新的develop远程分支,即在test_git文件夹下执行命令:

git pull origin develop

发现test.txt文件变成了最后添加两行B develop add 1和A develop add 2。

B电脑操作2-文件内容

知识点

  • 有时执行git push命令会提示拒绝提交,是因为有人比你先提交了,你需要先git pull,再git push,所以每次git push前都先git pull一下。

    git pull origin develop
    git push origin develop
    
  • 平时要多用git status这个命令,随时查看当前git的状态。

    git status
    
  • 项目中通常需要在根目录下添加.gitignore文件,作用是可以忽略指定文件不提交。
    例如:java项目通常可以这样书写.gitignore文件:

    *.iml
    /.idea/
    /bin/
    /log/
    /logs/
    /src/test/
    /target/
    /.apt_generated/
    /.settings/
    /.classpath
    /.project
    /.factorypath
    /.springBeans
    /.DS_Store
    
  • 可以划分为master、develop、test三个分支,远程分支和本地分支保持一致,平时在develop分支下开发,完成阶段性的内容就把develop分支合并到master分支,master分支要保证是正常的,需要测试就把develop分支合并到test分支,发一次版就增加一个分支release_版本号,把develop分支合并进去。
    例如:要把develop分支合并到master分支,就要先切换到master分支,再把develop分支合并到master分支,检查master分支没事后,再切换回develop分支进行开发,即执行命令:

    git checkout master
    git merge develop
    git checkout develop
    

补充

发现不少人会问怎样算解决完冲突,其实怎样算解决完冲突是由你决定的,你觉得是解决完了就是解决完了,总之你打开有冲突的文件进行编辑,你觉得修改好了就是解决完冲突了,然后就可以add-commit-push了,为了减少处理冲突,每完成一个小功能就马上提交。

ps:发现造成这个疑问往往是使用eclipse用git界面操作时造成的,建议用命令行操作,不要用界面操作。

总结

git常用的命令:
查看当前的状态:git status
克隆项目:git clone 远程地址
添加当前目录下所有文件到本地当前分支:git add .
添加指定文件到本地当前分支:git add 文件路径
提交到本地当前分支:git commit -m "提交的内容"
从远程分支拉取到本地当前分支:git pull origin 远程分支名
把本地当前分支推送到远程分支:git push origin 远程分支名
切换到不存在的本地分支:git checkout -b 本地分支名
切换到已存在的本地分支:git checkout 本地分支名
合并本地指定分支到本地当前分支:git merge 本地分支名
合并远程指定分支到本地当前分支:git merge origin/远程分支名

个人微信公众号

微信公众号id:chunjie_tech

纯洁的技术分享

相关文章

网友评论

    本文标题:Git手把手简易教程

    本文链接:https://www.haomeiwen.com/subject/cjmsvqtx.html