Git的使用

前言

  • git没有系统的记录过,每次使用的时候会遇到一些问题,老是百度在解决,很麻烦,所以系统的记录一下git的使用过程和遇到

git 的使用和记录

git安装

检出仓库

  • 本地仓库的克隆 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 addgit commit这两个命令组成git最基本的工作流。他们作用是将项目诸多的版本记录到仓库的历史
中,git reset命令是用于撤销提交或者缓存的快照。
除了git addgit 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>:
跟新工作目录所有文件,使得某个特定文件一致,你可以提交哈希字串,或者参数,这会使你分离HEAD状态。

回滚错误修改

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命令

原文地址:https://www.cnblogs.com/liuyang95/p/13200004.html