开源的分布式版本控制系统, 用于高效的管理大小项目和文件git
开源, 多在 *nix 下使用缓存
分布式管理工具 (svn 集中式)安全
每台主机都有完整代码, 代码的交互是增量更新服务器
拥有更好的分支支持, 方便多人协调工做网络
虽然 分布式的git 不须要依靠中央节点app
可是 实际工做仍是会定义中央主机, 工做模式模拟的是 集中式管理分布式
sudo apt-get install git
工做区 项目所在操做目录, 项目操做区域svn
暂存区 用于记录工做区的工做(修改)内容工具
仓库 将记录内容备份fetch
远程仓库 远程主机上的 git 仓库
git config
git config --system [选项]
配置文件位置: /etc/gitconfig
git config --global [选项]
配置文件: ~/.gitconfig
git config [选项]
配置文件: 项目目录/.git/config
* 要求必须在项目下执行 * 顺序 项目>当前用户>全部用户
sudo git config --system user.name yangtuo
执行位置 任何位置
实例
tarena@tedu:~$ sudo git config --system user.name yangtuo [sudo] tarena 的密码: tarena@tedu:~$ tarena@tedu:~$ cat /etc/gitconfig [user] name = yangtuo tarena@tedu:~$
sudo git config --global user.email 745206110@qq.com
实例
tarena@tedu:~$ sudo git config --global user.email 745206110@qq.com tarena@tedu:~$ cat ~/.gitconfig [user] email = 745206110@qq.com tarena@tedu:~$
git config --list
实例
tarena@tedu:~/git$ git config --list user.name=yangtuo user.email=745206110@qq.com core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=vscode tarena@tedu:~/git$
将某个项目目录, 变为 git 操做目录, 生成 git 本地仓库
该目录便可使用 git 进行管理
git init
实例
tarena@tedu:~/git$ git init 初始化空的 Git 仓库于 /home/tarena/git/.git/ tarena@tedu:~/git$
git status
初始默认分支为 master
当工做区和仓库 不一致的时候, 会有所提示
git add files
git add file1, file2
git add .
ps
git add . 2.0 版本以后就能够支持全部的操做, 固然也包括删除文件也能够提交
以前 1.0 版本 . 的操做是没法提交删除文件操做的
git commit -m 'add some files'
每次同步都须要添加 [msg] 同步信息 格式为字符串
commit 操做只能同步暂存区已经记录的内容
git commit -m [msg]
一个是详细查看, 一个是简单查看
git log
git log --pretty=oneline
实例
tarena@tedu:~/git$ git log commit 3f8c95ebeb0998f9f4de793ceb856827a5da27fc Author: yangtuo <745206110@qq.com> Date: Thu Mar 7 16:17:36 2019 +0800
新添加了一个电子词典项目
实例
tarena@tedu:~/git$ git log --pretty=oneline
3f8c95ebeb0998f9f4de793ceb856827a5da27fc 新添加了一个电子词典项目
5f8a36d92345fc685381418125a69e63d9163df3 所有删掉
9bcdb97cae7082b59b532c817b1e08e8cde3ec9a add some files
tarena@tedu:~/git$
用于比较工做区文件和仓库文件差别
git diff [file]
git checkout -- file
git checkout file
git mv [file] [path]
git rm [file]
git reset --hard HEAD^
HEAD 是 commit 指针
一个 ^ 表明后退一个
一般不会写太多, 最多两个三个而已
git reset --hard [commit_id]
commit_id 不须要全写, 前7位就够了
去往指定的节点后, 在此节点后的全部版本会没法查看
能够经过 git reflog 来所有查看
git reflog
利用该操做,能够去往任意的历史位置
git tag[名称] -m [message]
标签 在工做的重要位置添加的快照, 保存当时的工做状态
通常用于版本迭代等
注意 message 能够不写, 可是最好添加
git tag
git tag [tag_name] [commit_id] -m [message]
git show [tag]
git tag -d [tag_name]
git reset --hard[tag]
让工做区回到修改前状态
而且修改保存在一个临时工做区
git stash
最新的工做区记录为 stash{0} 依次排列
git stash list
git stash apply stash@{2}
git stash drop [stash] 删除一个
git stash clear 删除全部
分支即每一个人在原有代码基础上创建本身的工做环境, 独立开发, 不回干扰其余分支操做 完成后合并到主线
多人开发创建分支优势: 安全, 不影响其余分支, 独立控制进度
前面 * 的表示当前工做分支
git branch
git branch [branch]
git checkout [branch]
表示将某个基于当前分支创建的分支,合并过来
合并分支过程当中可能产生冲突,须要手动解决
在分支操做中尽可能添加新的模块,不要修改原有代码内容
git merge [branch]
未合并的分支是没法用 -d 删除的( 防手滑,防恶意手滑 )
必须使用 -D 才能够删除未合并的分支
git branch -d [branch]
远程仓库
远程主机上的 git 仓库
git 做为分布式结构 每台主机的 git 仓库结构类似 只是把其余主机上的 git 仓库做为远程仓库
共享仓库
git 分布式结构衍生了不少工做模式 共享仓库是经常使用的模式之一\
普通隐藏的 .git 仓库不能被其余主机获取代码 共享仓库便可以将 git 项目共享的仓库
mkdir yangtuo_git
chown tarena:tarena yangtuo_git
初始化该目录为 git 仓库, 设置 bare 属性
yangtuo 项目名称
.git 习惯后缀
cd gitrepo/
git init --bare yangtuo.git
chown -R tarena:tarena yangtuo.git
该操做要在本地的一个 git 项目中执行
与远程链接默认使用 SSH 方法
origin 是给远程主机起的名字
git remote add origin tarena@127.0.0.1:/home/tarena/yangtuo_git/yangtuo.git
链接多个远程主机的时候 远程名字不能重复
git remote rm [origin]
-u 表示创建对应分支自动关联 通常首次向远程推送某个分支时使用
git branch -a 查看连接的远程分支 git branch -r 只查看远程分支
git push -u [origin] [branch]
-f 本地强制上传到远程,把远程的覆盖
git push -f origin master
git clone tarena@172.40.91.185:/home/tarena/gitrepe/tedu.git
clone 已经自动创建了关联, pull 能够直接拉取代码到对应分支
git pull
--rebase 拉取远程的文件把本地的覆盖
git pull --rebase origin master
制霸远程分支拿来 并不在合并
若想合并 则在须要 git merge [branch]
git fetch
能够改拉取过来以后的分支名字
git fetch origin master:tmp
git push [origin] [tag]
当当前版本落后于远程版本 没法更新时使用
git push --force origin