分布式版本控制工具
每个人都拥有全部的代码!安全隐患!
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况!
所有的配置文件,其实都保存在本地!
git config -list
查看所有配置项
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
1)Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
git config --global user.name "Q-volcano" #名称
git config --global user.email 24736743@qq.com #邮箱
只需要做一次这个设置,如果你传递了--global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要--global选项。总之--global为全局配置,不加为某个项目的特定配置。
?
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
git add 状态变为Staged.
如果使用git rm移出版本库, 则成为Untracked文件
git add
可进入暂存staged状态, 使用git checkout
则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified上面说文件有4种状态,通过如下命令可以查看到文件的状态:
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore
"文件,此文件有如下规则:
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
创建本地仓库(一般不用)一般情况直接在GitHub上创建仓库然后clone到本地仓库
git init
# 该命令执行完后会在当前目录生成一个 .git 目录。
# 使用我们指定目录作为Git仓库。
git init newrepo
#初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
git remote add <别名> <url> #添加一个新的远程仓
clone 远端仓库到本地仓 (常用)
命令: git clone <repo>
常见的几种写法
git clone git@github.com:fsliurujie/test.git --SSH协议
git clone git://github.com/fsliurujie/test.git --GIT协议
git clone https://github.com/fsliurujie/test.git --HTTPS协议
推送本地到远程仓库
git push <远程仓库地址> 分支名称
git push <远程仓别名> 分支名称
git push -u 远程仓库地址别名 分支名称
? -u 记住推送地址及分支,下次推送只需要 git push
菜鸟教程
什么是分支?
分支就像平行宇宙一样,你做你的,我干我的,一般分有3种类型,
master分支, 最稳定
develop分支,基于master分支创建的开发中的分支
feature分支,基于develop创建的某个功能特征的分支
在某个分支开发完毕后,可以合并到主分支,实现协同开发,互不干扰
分支命令:
git branch #查看分支
git branch #列出所有本地分支,打*号表示当前分支
git branch -r #列出所有远程分支
git branch -a #列出所有本地分支和远程分支
git branch <分支名> #创建分支
git branch develop #创建开发分支
git checkout <分支名> #切换分支
git checkout develop
切换分支前记得git status ,若有需要commit的commit后再切换;
切换不同的分支,文件会随之改变
git merge <分支名> # 合并分支
# 按照顺序合并分支
即 在 master 合并 develop
在 develop 合并 feature
git branch -d <分支名> #只能删除被合并的分支,如果没有的话,默认情况会报错
git branch -D<分支名> #强制删除
在开发中,可以暂时提取分支上所有的改动存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
存储临时改动:git stash
恢复改动:git stash pop
git clone 完全复制,只需要执行一次就可以
git pull 是拉取远程仓库中最新的版本,前提是已经有了本地仓
git pull <url > <branch> # 如果远程仓版本高于本地仓,则本地仓不能 push,必须先pull 拉取到最新版本 再push
在多人同时开发一个项目的时候,如果两个人修改了同一个文件的同一个地方,就会发生冲突,需要人为解决
为什么有冲突?
多个人同时推送,有先后关系,先推送的人能够推送上,后推送的人由于远程仓库版本高于本地仓,推送失败
所以,后推送的 人需要将远程仓的高版本拉取到本地,拉取到本地发现修改的是同一个文件,即发生了冲突
命令行会有提示,冲突的文件,我们要解决的就是打开 index.html 文件,然后查看冲突代码,修改成需要的
此时 ,后推送的人修改完成后 git add git commit 到本地仓,再推送就能成功
为开源项目找 bug 并改进,然后推送给开源作者
? 2. 从自己的远程仓 clone 到本地 开发
? 3. 本地修复,改进后 推送到自己的远程仓
? 4. 在 GitHub 上创建一个 pull Request请求
5. 原作者 查看消息 同时可以回复 ,查看检查代码后,决定是否合并
生成公私钥后
设置本机绑定SSH公钥,实现免密码登录!
#生成公钥
ssh-keygen
# 在 C:\User\Administator\.ssh 目录中找到公钥代码复制到Github
# 在本地添加远端仓库别名
git remote add origin_ssh git@github.com:xxxxxxxx
git push origin_ssh master
原文:https://www.cnblogs.com/Qvolcano-blog/p/14491805.html