您现在的位置是:首页 >技术教程 >Git的基本使用网站首页技术教程
Git的基本使用
目录
基本介绍
是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,比如说可以在同一个项目中,分别和不同工作小组的人相互协作。
下载地址:Git - Downloads
基本工作原理:
1. clone (克隆) : 从远程仓库中克隆代码到本地仓库。
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
3. add (添加) : 在提交前先将代码提交到暂存区。
4. commit (提交) : 提交到本地仓库。本地仓库中保存修改的各个历史版本。
5. fetch ( 抓取 ) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull ( 拉取 ) : 从远程库拉到本地库,自动进行合并(merge) ,然后放到到工作区,相当于
fetch+merge。
7. push (推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
基本使用
git启动
安装好之后,右击鼠标会出现这样的界面:
其中:Git GUI:Git提供的图形界面工具,Git Bash:Git提供的命令行工具。后面操作都以命令行举例。
许多命令与Linux命令是相同的。安装后首先要设置你的用户名与邮箱
git config --global user.name+用户名
git config --global user.email+你的邮箱
查看基本配置:git config -l
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
使用git的第一步首先我们得要有一个本地仓库,创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
可以自己创建一个空文件夹,后打开git,执行命令:git init
结果:
相关的配置文件就在该文件中。
git工作流程
前面大概介绍了下,现在具体进行介绍
创建本地仓库
git init 或者克隆远程目录,例如 git clone url
文件的四种状态
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
例如:假设我在当前文件夹中创建一个空的文件
版本切换
例如我在当前文件中输入hello,再次提交到仓库后,这相当于两个版本。 例如:
命令形式: git reset --hard commitID ,git - log或者 git reflog命令 可以查看版本内容,例如:
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等,可在主目录下建立".gitignore"文件,此文件有如下规则:
忽略文件中的空行或以井号(#)开始的行将会被忽略。
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
例如:
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
远程操作及分支介绍
提交远端
以当前文件夹的内容举例
可以使用git branch 命令查看当前分支,使用git pull命令进行提交到远程仓库中,这里使用码云。
命令: git remote add < 远端名称 > < 仓库路径 > 。远端名称,默认是origin ,取决于远端服务器设置 。仓库路径,从远端服务器获取此URL。
例如:
推送到远程仓库:
命令: git push [-f] [--set-upstream] [ 远端名称 [ 本地分支名 ][: 远端分支名 ] ]
如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master -f 表示强制覆盖 --set - upstream 推送到远端的同时并且建立起和远端分支的关联关系。
git push -- set - upstream origin master
如果 当前分支已经和远端分支关联 ,则可以省略分支名和远端名。
git push 将 master 分支推送到已关联的远端分支
分支
一般我们git init之后都会有一个master分支
创建分支命令:创建分支 git branch 分支名
例如:
切换分支 git checkout 分支名,git checkout -b 创建分支并切换
在dev分支创建文件并进行提交到远端:
在Gitee上进行查看:
master分支上:
dev分支上:
分支合并
例如在A分支去合并B分支,会将B分支内容同步到A分支,而B分支没有变化。这里切换成master分支,去合并dev分支。
git branch --no-merged
查看所有包含未合并工作的分支
git merge+分支名 ,进行合并,例如:
分支冲突
例如在当前maste中的h.c文件中,修改了内容,并把它提交到了远程,后面切换了dev分支,也对h.c内容做了修改且提交到了远程,那么此时合并就会出现问题。
例如:
手动修改后,再次提交到远程仓库。