赞
踩
你越是认真生活,你的生活就会越美好
——弗兰克·劳埃德·莱特
《人生果实》经典语录
Git 是 Linux 之父Linus的第二个伟大的作品,它最早是在 Linux 上开发的,被用来管理 Linux 核心的源代码。后来慢慢地有人将其移植到了 Unix 、Windows、Max OS 等操作系统中。
Git是一个分布式的版本控制系统
,与集中式的版本控制系统不同的是,每个人都工作在通过克隆建立的本地版本库中。
也就是说每个人都拥有一个完整的版本库,查看提交日志、提交、创建里程碑和分支、合并分支、回退等所有操作都直接在本地完成而不需要网络连接。
对于Git仓库来说,每个人都有一个独立完整的仓库,所谓的远程仓库或是服务器仓库其实也是一个仓库,只不过这台主机24小时运行,它是一个稳定的仓库,供他人克隆、推送,也从服务器仓库中拉取别人的提交。
Git是目前世界上最先进的分布式版本控制系统
工作区(working diretory)
用于修改文件
缓存区(stage)
是用来暂时存放工作区中修改的内容
提交历史(commit history)
提交代码的历史记录
Working Tree
当前的工作区域
Index/Stage
暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加近Stage里面
Repository
提交的历史,即使用git commit提交后的结果
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
PS:
--global
参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和 Email 地址。
查看全局配置信息
git config --list --global
当你执行git clone
命令的时候,默认配置下远程 Git 仓库
中的每一个文件
的每一个版本
都将被拉取下来。
克隆仓库的命令是git clone <url>
。 比如,要克隆 Git 的链接库 libgit2,可以用下面的命令:
git clone https://github.com/libgit2/libgit2
这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹
, 从远程仓库拉取下所有数据放入 .git
文件夹,然后从中读取最新版本的文件的拷贝。
如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。
如果你想在克隆远程仓库的时候,自定义本地仓库的名字
,你可以通过额外的参数指定新的目录名:
git clone https://github.com/libgit2/libgit2 mylibgit
克隆指定分支develop
git clone -b develop https://github.com/libgit2/libgit2
// 创建tes文件夹
mkdir test
// 进入到test目录里面
cd test
// 查看当前的目录的路径
pwd
// 查看test.js文件内容
cat test.js
// 查看本地分支
git branch
// 查看本地分支和线上分支(这里包括了线上删除的分支)
git branch -a
// 查看remote地址,远程分支(包括线上删除的分支),还有本地分支与之相对应关系等信息
git remote show origin
// 删除远程仓库不存在的分支(删除后 git branch -a命令就不会看到线上删除的分支)
git remote prune origin
// 当前在哪个分支 就会默认更新线上哪个分支代码到本地
git pull
// 更新线上master分支代码到当前分支 当前分支可以不是master分支
git pull origin master
// 在当前分支基础上 本地新建test分支 git branch test // 本地切换到test分支 git checkout test // 将本地新建的test分支 推送到远程仓库(origin是远程仓库的别名) git push origin test // 将本地当前分支(test)跟远程仓库的test分支关联起来 这一步操作后 才可以正常push git push --set-upstream origin test // 如果没有上一步的关联 当你修改后想提交会报错 git add . git commit -m"提交的备注信息" git push // 报错信息如下 提示你没有把本地新建的分支和线上的关联起来 fatal: The current branch test has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin test // 这个时候 执行下面的命令行 关联本地和线上的test分支 以后就可以正常push了 git push --set-upstream origin test // 如果你不想关联 也可以用下面的命令提交 // 推向指定的分支,最强暴的方法。不过以后test分支提交都得指定提交到哪个线上分支,而关联后,提交可以直接 git push就行 git push origin test
// 新建分支同时切换到新的分支
git checkout -b test
// 上面的命令相当于下面两个命令
git branch test
git checkout test
// 删除本地test分支(d相当于delete)
git branch -d test
// 强行删除本地test分支
git branch -D test
// (删除远程分支)冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
git push origin :test
// 提交本地的test分支作为远程的test分支
git push origin test:test
// 删除远程仓库不存在的分支(删除后 git branch -a命令就不会看到线上删除的分支)
git remote prune origin
ps:删除了远程test分支,本地的test分支还在,也还需要另外删除,反过来同理
在当先分支下删除本地分支好像有报错,试一下切换到别的分支,在删除
提交文件之前 // 先查看当前的状态 ,能提示你接下来怎么做的命令,比如修改工作区文件内容,提示你添加到暂存区或者丢弃工作区修改的命令 git status // 查看文件修改了什么内容 git diff // 纳入git仓库管理,把修改添加到暂存区(使用.代表将所有的修改进行添加) git add . // 把暂存区里面的所有修改提交到当前分支同时创建一个快照 git commit -m"备注信息" // 在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支 git push ps: git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。 git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写) git add -A :是上面两个功能的合集(git add --all的缩写) git restore --staged <FileName> 取消提交暂存区的操作,本地修改还在) // 上一步命令后 输入下面命令 会撤销本地的修改 相当于git checkout . git restore .
1.修改内容还没添加到暂存区,撤销修改回到最近一次commit的状态,也就是和版本库里面的状态一样 // 撤销readme.txt文件的修改,也就是readme.txt文件恢复到线上的版本 git checkout -- readme.txt // 撤销当先所有修改 .表示全部的意思 git checkout . 2.如果内容已经添加到暂存区,也就是git add .过,并且commit了 // 撤销暂存区的修改(保留本地工作目录) 也就是清空暂存区。 git reset // 相当于(reset不加参数 默认使用--mixed) git reset --mixed // 重置stage区和本地工作目录 git reset --hard // 保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区 git reset --sorf
当我们使用git merge操作合并代码(我发现有没有git add 都不影响),若想取消这次合并,使用“git merge --abort”命令即可
git merge --abort
git每次提交的版本都是相互独立的
因此可以回到任何一次提交的代码
// 工作区(本地仓库)默认回退到上一个提交版本
git reset --hard HEAD^
// 回到到指定版本(通过commitID来识别不同版本 commitID很长 这里可以只填前几位)
// commitID 通过 git log查看提交历史获得
git reset --hard commitID
git log
// 回退版本后 如果用了git pull 会拉取最新一次commit的代码 这时回退的代码就没了 所以回退版本后 如果不想要最新一次 commit 的代码 不需要git pull
// 远程版本回退(将本地当前版本推送到远程)
git push origin HEAD --force
当你本地的开发还没完成,但是又需要切换到别的分支临时处理点事情,这个时候就可以通过git stash暂时保存你的修改
// 所有未提交的修改都保存起来,用于后续恢复当前工作目录,工作目录会变成最新一次commit的内容,相当于你用了git checkout . git stash // 每个stash加一个message,用于记录版本 git stash save “stash_name” // 查看现有所有stash git stash list 例子: 打印出 stash@{0}: On master: master-update2 stash@{1}: On master: master-update1 stash@{2}: On master: master-update stash@{3}: On feature-cjh: hong stash@{4}: On feature-qyf: yaofan07 stash@{5}: On feature-xwc: wenchang14 // 恢复最新缓存的工作目录(第一个),并删除缓存堆栈中的那一个stash删除(pop), apply则只恢复不删除 git stash pop git stash apply 默认使用第一个存储,即stash@{0},如果要使用其他个, git stash apply stash@{$num} , 比如第二个: git stash apply stash@{1} // 移除最新的stash,后面也可以跟指定stash的名字 git stash drop // 溢出stash@{5} git stash drop stash@{5}
git:
一个快速的分布式版本控制系统(工具),支持该工具的网站有Github等。
shell:
是linux、unix系统的外壳(区别于核),用于输入并执行命令(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。git通过命令行和图形界面两种方式使用shell。
bash:
是shell的一种,最常用的shell之一。
git Bash:
方便在windows下使用git命令的模拟终端(windows自带的cmd功能太弱),而linux、unix可以直接使用git。
git shell:
它是安装了git的shell,bash是shell的一种。
谢谢你阅读到了最后~
期待你关注、收藏、评论、点赞~
让我们一起 变得更强
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。