Git学习

Git学习

简介:git版本控制工具,是linux之父写的,所以与linux有些相通的命令

1.安装

在这里下载安装 https://git-scm.com/download/win

2.操作

配置身份

在GitBash中写入如下命令:

git config --global user.name "Ha"
git config --global user.email  "Ha@gmail.com"

配置完成后看配置是否成功,把后面的名字和邮箱去掉就可以了

查看目录

ls 查看当前目录下所有文件,单纯显示文件名

[![1541054465829.png](https://i.loli.net/2018/11/01/5bdac05d06661.png)](https://i.loli.net/2018/11/01/5bdac05d06661.png)

ls -ca 这个可以查看当前目录下所有文件,包含被隐藏部分。可以看到它还有附带信息,前缀时间等

[![1541055149831.png](https://i.loli.net/2018/11/01/5bdac004d1af5.png)](https://i.loli.net/2018/11/01/5bdac004d1af5.png)
进入目录

cd后面加上指定的目录即可,例如进入根目录 cd /d,进入二级目录及以后直接写文件名就好了 cd Desktop。

创建代码库

进入到想要创建代码仓库的目录下,git init就创建成功了。

提交代码

提交用add和commit命令,add只是把对应文件添加进来,commit才是真正把代码提交到本地仓库

添加单个文件 ,比如添加build.gradle文件 git add build.gradle

添加一个目录,比如添加app目录下所有文件 git add app

添加所有文件 git add . 这里.表示提交目录下所有文件,也可以写文件名

添加完然后就可以提交了

提交 git commit -m “first commit”, -m后面是描述信息,必须添加,自己定,不能舍弃

忽略文件

针对有的代码不想让别人看见或者没必要出现,比如自定义测试文件以及系统自动生成的文件。

AS会自动生成两个gitignore文件。如果我的测试文件不想上传,就执行如下代码,因为测试文件都是存在于这个文件目录下

/build

/src/text

/src/androidTest

接下来执行正常的上传步骤即可。

查看修改内容

git有记忆功能。每次记住提交所修改的内容

在根目录下输入以下命令 git status就可以看到哪个文件发生了修改

git diff 查看文件更改内容

如果想查看某个具体文件更改内容 git diff 加上固定文件名。

撤销未提交的修改

修改还未commit,撤销用git checkout 后面加上要撤销修改的文件名,然后输入git status命令看一下就发现显示没有要提交的文件。

修改已经commit的,用git reset HEAD 后面加指定文件名。然后同样的用git status命令看一下是否执行成功,也就是撤销的修改变回了未添加状态。

查看提交记录

git log查看提交记录。每一次提交记录都包含id,日期,提交人,提交描述四个信息。

如果只想查看某一条提交记录。可以使用 git log 想查看的提交id -1,-1表示只显示一条记录

如果想查看这条记录具体修改了什么,可以使用git log 想查看的提交id -1 -p

分支操作

分支就是开发的时候分多支,各个分支不同版本迭代,但是互不影响。

查看分支 git branch

创建分支 git branch version1.0,这样这个分支的名字叫version1.0

切换到某个分支
git checkout version1.0
(也可以直接用git branch -b version1.0,创建的同时并切换到这个分支)
git checkout head^ 切换到当前分支的上一层,^可以有多个,也可以这样git checkout head^3表示移动到当前提交树上三级分支,与git checkout head^^^等价
git branch -f master head^^可以强制把master指向它的上两个分支

删除分支git branch -D version1.0

合并分支 ,如果不创建分支,默认有一个分支就是master

git checkout master

git merge version1.0

把version1.0合并到master,但有代码冲突不会检查,要自己来了。
git rebase version1.0也可以,会有更加线性的提交记录

撤销操作 git reset version1.0^撤销到上个分支,当前的就像没提交过一样,但只能针对本地库,远程库就不可以
git revert version1.0回退到上个分支,进行一个commit,和上次提交完全一样,相当于抵消上次提交同时将上上次提交再来一遍,别人可以共享,适用于远程库

与远程版本库协作操作

新建远程仓库 git remote add 远程仓库起名字 网址
删除远程仓库 git remote rm 远程仓库名字

从远程版本库下载代码,比如远程版本库地址为https://github.com/example.git ,然后就可以使用这个命令将此地址下代码下载到本地 git clone https://github.com/example.git

如果想把本地的更改提交,使用push。如下:git push origin master,origin指定之前的提交地址,master指定要修改的分支。

将远程修改版本合并到本地,有pull和fetch两种方式:

fetch,用法与push差不多,git fetch origin master,但是下载下来的代码并不会合并到任何分支,而是会在一个origin/master分支下。可以用git diff origin/master查看远程版本库修改了什么东西,如果想要合并到主分支上,使用git merge origin/master。

pull,是fetch与merge命令的合并版,获取代码并合并到本地

基于一个原本有的分支建立新分支 git

从upstream的v9.8.3dev创建本地库origin对应分支 v9:
git fetch upstream (不执行这个可能最新的分支没有更新过来)
git checkout -b v9 upstream/v8.8.3dev
git push origin v9

打tag:
git tag -a v0.1_20180607 -m ‘version 0.1邮件上给的初始版本’
git push origin --tags

已经commit的撤销:
Delete the most recent commit:
git reset --hard HEAD~1
Delete the most recent commit, without destroying the work you’ve done:
git reset --soft HEAD~1

本地git删除一个文件后的恢复方式:
如果想要将某个文件恢复到某个版本时的状态,可以使用以下的命令:
git checkout id 文件名
其中的id就是commit的那个序号

关联远程project:
git remote add upstream xxx

我在公司一个代码提交过程是这样的
git pull upstream master 远程代码与个人代码同步
git status 当前本地要提交的变化
git add . 把代码添加到本地仓库缓存区,未提交
git branch 查看当前提交的分支
git commit -m “描述信息” 个人的仓库
git push 提交到个人的服务端
git remote add upstream “远程仓库地址” 提交到远程主库
git log 看日志
然后去远程仓库的主页

点击绿色按钮,然后进入的页面,把提交人和提交分支勾选上,点击下面的绿色按钮,指定一个委派人,提交一下就可以了
在这里插入图片描述
在这里插入图片描述

删除默认master分支

当手残把master祸害坏了的时候,因为git是一个增量更新,本地的修改太多还原回去git revert 会有记录。git reset --hard HEAD~1,本地可以回到提交修改的上一个版本,我尝试这样获取git pull再push,但是增量的缘故只会说你已经落后远程仓库,没法push。所以我把master废了,新建一个分支,这时把我本地已经回退的分支git push 到新建的分支上,然后删除master分支,再新建。偷天换日
(1)删除master分支
因为master是默认分支,所以常规操作不能删除,首先要更改它不是默认分支
新建一个远程分支 temp git branch temp
推送分支到远程仓库 git push origin temp:temp
切换到temp分支 git checkout temp
设置它为默认分支 从git项目里 setting->general project settings->default branch,选择新建的temp,拉到后面save changes.
在这里插入图片描述
然后就能删除了,可以网页操作也可以命令行
//删除本地master分支
git branch -d master
//删除远程分支
git push origin :master
(2)基于远程仓库重建一个master分支,把代码同步过来,再把master设为默认分支,一切好像没发生一样,完美

最后附带一个链接,终极版

https://blog.csdn.net/dengsilinming/article/details/8000622
https://git-scm.com/book/zh/v2 这本书不错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值