赞
踩
Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过“交换”修改不方便而已。
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
命令如下:
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
当安装Git后首先要做的事情是设置用户名称 和 email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。
打开Git Bash
设置用户信息,这里的用户名和邮箱可以随便起,不用是真实的
git config --global user.name "#{your_name}"
git config --global user.email "#{your_email}"
查看配置信息
git config --global user.name
git config --global user.email
在windows系统中,有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
打开用户目录,创建.bashrc 文件,部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc
Shenghui Li@DESKTOP-39LQOL7 MINGW64 ~/Desktop
$ touch ~/.bashrc^C
在.bashrc 文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
打开GitBash执行下面命令
git config --global core.quotepath false
${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
Shenghui Li@DESKTOP-39LQOL7 MINGW64 /f/Java/Install/Git_responsitory
$ git init
Initialized empty Git repository in F:/Java/Install/Git_responsitory/.git/
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行 Git 的命令而发生变化。
本章节主要讲解如何使用命令来控制这些状态之间的转换:
作用:提交暂存区内容到本地仓库的当前分支
命令形式:git commit -m “注释内容”
在3.1.3中配置的别名git-log 就包含了这些参数,所以后续可以直接使用指令git-log
git log [option]
options选项:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示
# 示例
git log --pretty=oneline --abbrev-commit --all --graph
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
一个分支的内容在另一个分支不会显示
命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换),命令:git checkout -b 分支名
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
冲突部分的内容处理如下所示:
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
在开发中,一般有如下分支使用原则与流程:
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
略
生成SSH公钥:ssh-keygen -t rsa
Gitee设置账户共公钥
验证是否配置成功:ssh -T git@gitee.com
此操作是先初始化本地库,然后与已创建的远程库进行对接。
如果已经有一个远端仓库,我们可以直接clone到本地。
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支,如下图所示。
在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同。
安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的git选项:
场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员继续一起协作开发。
.gitignore 文件可以根据需要进行创建,示例如下:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
假设现在有两个开发人员A、B,他们都对同一个文件进行修改,如果这时A将代码提交到本地仓库,那么B就会提交失败,因为产生了冲突,这时我们就需要解决冲突。
这时B就会对项目执行merge或pull操作来解决冲突
merge后冲突的文件会爆红,这时我们就需要处理产生冲突的文件
处理完冲突后提交到本地仓库,注意:这里需要先add到缓冲区,虽然idea弱化了缓冲区的概念,但是冲突还是需要先add到缓冲区
常规方式
最强大的方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。