前言
- git没有系统的记录过,每次使用的时候会遇到一些问题,老是百度在解决,很麻烦,所以系统的记录一下git的使用过程和遇到
git 的使用和记录
git安装
- git的安装地址 GIT SCM
检出仓库
- 本地仓库的克隆
git clone /path/workspace
- 远程仓库克隆可以使用ssh或者http方式
git clone username@host:/path/workspace
新建仓库
git init
是建立仓库
git init
命令是创建一个新的git仓库,他是将已存在的但没版本版控制项目转换成git仓库,或者创建一个新的仓库。
git init <directory>
:创建一个文件夹并.git初始化
git init --bare <directory>
:创建一个裸仓库但是忽略工作目录。
git clone
git clone
命令拷贝整个git仓库,除了工作副本是一个完整git仓库,包含自己的历史,文件,和环境
为了方便clone自动创建一个名为origin的远程,指向原远程仓库,这样交互更简单。
用法
git clone <repo>
:将位于
git config
命令允许你命令你在配置git安装,你这个命令定义所有配置。
用法
git config user.name <name>
:定义当前仓库使用的作者姓名通常使用--global
标记当前用户配置。
git config --global user.email <email>
:定义当前作者邮箱。
git config --global alias.<alias-name> <git-command>
为git创建一个快捷方式(起别名)。
git config --global --edit
:用文本编辑器打开全局配置文件,手动编辑。
工作流
- 本地仓库有git维护三棵树:
- 工作目录:他是实际的文件。
- 缓存区:他是缓存区,临时保存你的改动。
- HEAD:指向最近一次提交的结果。
添加和提交
添加暂存区
git add <filename>
git add .
git add
git add
命令是将工作取添加到缓存区,可以配合git status
来查看工作目录和缓存状态。
工作原理
git add
和git commit
这两个命令组成git最基本的工作流。他们作用是将项目诸多的版本记录到仓库的历史
中,git reset
命令是用于撤销提交或者缓存的快照。
除了git add
和git commit
之外,git push
也是完整的git协作流程重要一环。
用法
git add <文件>
:缓存区提交文件
git add <目录>
:缓存目录下所有要更新的,准备下次提交。
git add -p
:开始交互式缓存,你可以将某个文件的一处更改为下次提交的缓存。
git status
git status
命令显示工作目录和缓存目录状态。你可以看到什么地方被缓存了,哪些还没有,以及
哪些还未被git追踪。status的输出不会告诉你任何已提交的项目历史信息,如果想看使用git log
.
忽略文件
未追踪文件有两种,他们要么是项目新增还未提交的文件,要么是像.exe.obj
等二进制文件。
只要在.gitignore
文件中,所有要忽略文件单独一行,*是字符统配符,比如Python的*.pyc
git log
git log
:使用默认格式显示完整的历史项目,如果超过一屏,你可以使用空格滚动q退出
之后,commit
git commit -m '提交信息'
现在提交到了HEAD,但是还没提交到远程仓库
推送改动
现在改动已经在本地的HEAD中了,执行下面命令可以将改动提交到远程仓库:
git push origin master
也可以吧master换成想要分支。
如果还没有克隆仓库,有想将你的仓库连接某个仓库,可以执行下面命令:
git remote add origin <server>
这样就能推送到服务器上
- 这个origin是
的别名,取什么名字都可以,你也可以push将 替换成
origin。但是为了push方便,第一次还是用remote add- 如果没有仓库,建立是不要生成readme.md的repository,然后将代码push上去
检出之前的提交
git checkout
:检出文件,检出提交和检出分支,这里关心前两种
用法
git check master
:
回到master分支。
git checkout <commit> <file>
:
查看之前的版本,将工作目录的
git checkout <commit>
:
跟新工作目录所有文件,使得某个特定文件一致,你可以提交哈希字串,或者
回滚错误修改
git revert
命令是用来撤销上一次提交的快照文件,但是,他是通过搞清如何撤销这个提交的引入更改的,最后加一个撤销的更改新的提交,而不是从项目历史中移除这个提交。
保持同步
git remote add <name> <url>
:
创建一个新的远程仓库的连接,添加后name和url便捷的别名其它git命令中使用
git fetch
:
命令是将提交从远程仓库导入你本地仓库。拉取下来的提交存储为远程。
git branch
:
分支代表一条独立的开发流水线。分支是我们,你可以把踏勘作请求的一种方式。新的提交会被存放到当前分支的历史中。
用法:
git branch
:列出仓库所有的分支。
git branch <branch>
:创建一个名为
和git checkout
联合使用
git merge <branch>
:将指定的分支merge到当前分支
git merge --no-ff <branch>
:指定分支合并当前分支,但是总是生成合并提交,记录所有合并。
使用的例子记录:
案例:建立本地分支推送到远程
1.git branch -a
:查看所有分支有哪些
2.git pull
:如果需要copy哪个分支就在这个下拉一下最新的代码
3.git checkout -b dev
:切换分支并创建新的本地分支dev
4.git push origin dev:remotedev
:推送本地分支到远程dev->remotedev(没有创建)
5.git checkout -b dev origin/dev
:远程分支存在,但本地没有
6.git remote add origin http://***/**/****.git
:和远程关联一起
案例:修改本地分支推送远程
1.git branch -a
:查看所有分支有哪些
2.git branch -u origin/remotedev
:在要推送的分支关联远程分支remotedev
3.git push
:推送,这时控制台会告诉应该使用哪个命令推送远程,使用第一个意思是推送到远程关联分支,下一个是正常推送和本地分支名字一样
案例:删除远程分支
git push origin --delete [branch_name]
案例:删除本地分支
git branch -D tmp
案例:远程别的分支替换本地
git fetch --all
git reset --hard origin/master(想替换名字)
参考:
git命令