Git学习笔记 及 与AndroidStudio的关联使用

Git的安装

//云盘下载
https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit
下载完成后选择安装路径
一路默认即可
//配置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"

初始化

打开安装完成后的gitbash

pwd 
现在当前的目录

ls
显示当前打开目录的所有文件列表

cd /c
打开c盘

mkdir myGit
在当前目录创建myGit文件夹

cd myGit
进去到当前目录下的myGit文件夹
git init
初始化当前目录为仓库
该操作会在当前目录创建一个隐藏的.git文件夹,请不要修改里面的任何东西

添加文件到版本控制

在仓库目录下(包括子目录)创建
//注意请修改格式为utf-8 without dom
readme.txt

在gitbash中
//该方法可以多次操作
git add readme.txt
//也可以添加多个文件
git add test.txt test.txt
//提交修改
git commit -m"你了做什么,该字符串会和提交操作绑定,用于提示你本次操作做了什么"

版本控制__修改

修改readme.txt文件里的内容
git status
查看git当前的状态
---------------------------------------------------------------------------------
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  //提示你文件已经被修改,并且没有被添加
          modified:   readme.txt//红色字体

no changes added to commit (use "git add" and/or "git commit -a")
---------------------------------------------------------------------------------
git diff
查看不同之处
---------------------------------------------------------------------------------
//有不同的文件的名字
diff --git a/readme.txt b/readme.txt
index e69de29..ce5c36d 100644
--- a/readme.txt
+++ b/readme.txt
@@ -0,0 +1 @@
//不同之处:多了"你好啊"
+你好啊
---------------------------------------------------------------------------------
git status
查看被修改文件被添加之后,git当前的状态
---------------------------------------------------------------------------------
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
//提示你文件已经被修改,并且已经被添加
        modified:   readme.txt//绿色字体
---------------------------------------------------------------------------------

git diff
查看被修改文件被添加之后,git的不同支出
---------------------------------------------------------------------------------
//没有任何提示
---------------------------------------------------------------------------------
git commit -m"修改测试"
---------------------------------------------------------------------------------
$ git commit -m"修改测试"
[master f237de9] 修改测试
//提示一个文件被改变,添加了内容
 1 file changed, 1 insertion(+)
---------------------------------------------------------------------------------
git status
查看被修改文件被提交之后,git当前的状态
---------------------------------------------------------------------------------
$ git status
On branch master
//提示没有文件需要提交
nothing to commit, working directory clean
---------------------------------------------------------------------------------

版本控制__回退

git log
查看每次提交的commit id及其信息
---------------------------------------------------------------------------------
//最近一次的修改
//版本号(commit id),SHA1散列的十六进制
commit 1e5a2aa1ef60e961e2e8271122c69f5e8b1acfb7
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 11:39:00 2017 +0800
    添加 很高兴见到你

//倒数第二次的修改
commit a12c0f3bbba25843522dcb65fd80da93243dd135
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 11:32:51 2017 +0800
    添加了这个不行

//倒数第三次的修改
commit f237de966c22cea4eef8ff40b7fef09751b63fa4
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 11:27:27 2017 +0800
    修改测试

//第一次提交
commit 9d0fcbcbc4ba69ce5dfc2d34c5a908b5356330b3
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 10:52:45 2017 +0800

    my first commit

---------------------------------------------------------------------------------

git reset --hard HEAD^
回退到上一个版本,git中用HEAD表示当前的版本,HEAD^表示上一个版本,HEAD^^表示上两个版本,HEAD~100表示上100个版本
---------------------------------------------------------------------------------

//现在的版本是"添加了这个不行"的版本,也就是上一个版本
HEAD is now at a12c0f3 添加了这个不行
---------------------------------------------------------------------------------
git log
查看回退到的日志
---------------------------------------------------------------------------------
//果然被修改了
commit a12c0f3bbba25843522dcb65fd80da93243dd135
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 11:32:51 2017 +0800

    添加了这个不行

commit f237de966c22cea4eef8ff40b7fef09751b63fa4
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 11:27:27 2017 +0800

    修改测试

commit 9d0fcbcbc4ba69ce5dfc2d34c5a908b5356330b3
Author: SkylakeXun <1766828799@qq.com>
Date:   Wed Nov 1 10:52:45 2017 +0800

    my first commit
---------------------------------------------------------------------------------------
git reset --hard 1e5a2aa1
回退到指定版本,不需要输入全部的commit id,只用足够确定是唯一值git会自动搜索
---------------------------------------------------------------------------------------
HEAD is now at 1e5a2aa 添加 很高兴见到你
---------------------------------------------------------------------------------------
git reflog
//查看每次命令的commit id
---------------------------------------------------------------------------------------
1e5a2aa HEAD@{0}: reset: moving to 1e5a2aa1
a12c0f3 HEAD@{1}: reset: moving to HEAD^
1e5a2aa HEAD@{2}: commit: 添加 很高兴见到你
a12c0f3 HEAD@{3}: commit: 添加了这个不行
f237de9 HEAD@{4}: commit: 修改测试
9d0fcbc HEAD@{5}: commit (initial): my first commit
---------------------------------------------------------------------------------------

版本控制_控制的是修改

1.先修改文件
2.add文件
3.再次修改文件
4.commit(并没有把第二次的修改添加进去)
最后会发现,第二次修改没有被修改.
git reset --hard HEAD 发现回去的是第一次修改后的版本

版本控制__撤销修改

//你想删除一些内容,这些内容你还没有add

git checkout readme.txt
回退到最近一次add或者commit操作的状态
例如:你第一次修改了某些内容并add了
第二次修改了但没有add
那么执行git checkout readme.txt就能回到第一次添加内容的时候
//你想删除一些内容,这些内容你已经add了
git reset HEAD readme.txt
让指定文件取消add,但内容并未改变

再通过执行git checkout readme.txt
就能将已经add但未commit回到最初的状态了
当然你也可以继续修改,git reset HEAD readme.txt只是取消add状态,但内容并未改变
//你想删除一些内容,这些内容你不但add了,还commit了
git reset HEAD^
回退到上一次commit的时候

版本控制__删除文件

先在目录创建一个test.txt文件并添加和提交.
在目录中删除test.txt文件

git diff
----------------------------------------------------------------------------------------
diff --git a/test.txt b/test.txt
//发现有文件被删除
deleted file mode 100644
index e69de29..0000000
----------------------------------------------------------------------------------------
1.这个是误删除操作,或者后悔了想恢复
git checkout test.txt
那么被删除的文件就能被恢复
2.你是真的想删除这个文件
git rm test.txt
----------------------------------------------------------------------------------------
rm 'test.txt'
----------------------------------------------------------------------------------------

git commit -m"删除test.txt"
并提交

远程仓库

关联远程仓库

git remote add origin git@github.com:michaelliao/learngit.git
//michaelliao,github的账户名
//learngit,远程仓库的名字
推送当前内容给远程仓库

git push -u origin master
//加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master
//此后,每次本地提交后,只要有必要,就可以使用命令推送最新修改;

克隆远程仓库

git clone git@github.com:SkyLakeXxx/CloneDemo.git
//SkyLakeXxx,账户名
//CloneDemo,仓库名
---------------------------------------------------------------------------------------
Cloning into 'CloneDemo'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
----------------------------------------------------------------------------------------
然后打开git的目录,会发现有一个新的目录

版本控制__分支

//不同的分支相当于不同的时间线
git checkout -b dev
创建并切换到dev分支
创建dev分支
git branch dev
切换分支
git checkout dev
查看当前分支
git branch
----------------------------------------------------------------------------------------
* dev
//星号表示当前所在线程
  master
----------------------------------------------------------------------------------------

版本控制__合并分支

Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
1.首先在dev分支上修改文件,并添加修改
2.切换到主分支,发现在主分支上并没有dev分支修改的内容
3.合并分支
git merge dev
将目标分支的内容合并到当前分支
4.发现主分支中也有dev分支的内容了
删除dev分支
git branch -d dev
小结:
查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

版本控制__解决冲突

当主分支和子分支都修改和提交后
合并分支会理所当然的出现冲突
----------------------------------------------------------------------------------------
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
----------------------------------------------------------------------------------------
直接打开有冲突的文件
----------------------------------------------------------------------------------------
<<<<<<< HEAD
主分支
=======
子分支
>>>>>>> dev
----------------------------------------------------------------------------------------
会自动的标记出有冲突的内容
我们把不同分支的冲突手动解决,把它修改成
----------------------------------------------------------------------------------------
主分支
----------------------------------------------------------------------------------------
重新add test.txt并提交从而实现冲突的解决

图形化展示分支

git log --graph --pretty=oneline --abbrev-commit
----------------------------------------------------------------------------------------
*   1a65e4f 解决冲突
|\
| * a2e9264 子分支提交
* | a810bb2 主分支提交
|/
* d148376 分支添加
* dfad1fb 添加test.txt
* 6048a0c 撤销测试
* 0e61c10 控制内容测试
* 1e5a2aa 添加 很高兴见到你
* a12c0f3 添加了这个不行
* f237de9 修改测试
* 9d0fcbc my first commit
----------------------------------------------------------------------------------------

合并分支时保存分支信息

一般我们在子分支工作并合并代码后(默认使用Fast forward模式)
git log --graph --pretty=oneline --abbrev-commit
----------------------------------------------------------------------------------------
* d148376 分支添加
* dfad1fb 添加test.txt
* 6048a0c 撤销测试
* 0e61c10 控制内容测试
* 1e5a2aa 添加 很高兴见到你
* a12c0f3 添加了这个不行
* f237de9 修改测试
* 9d0fcbc my first commit
----------------------------------------------------------------------------------------
在这种情况下我们一旦删除子分支,便回失去其所有信息
所以有时候我们需要在合并时禁用Fast forward模式
git merge --no-ff -m "merge with no-ff" dev
----------------------------------------------------------------------------------------
Merge made by the 'recursive' strategy.
 test.txt | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------------------------

git log --graph --pretty=oneline --abbrev-commit
//这时我们可以保存分支信息了
----------------------------------------------------------------------------------------
*   8fe03af no-ff模式合并
|\
| * 463ae42 分支添加
|/
* dfad1fb 添加test.txt
* 6048a0c 撤销测试
* 0e61c10 控制内容测试
* 1e5a2aa 添加 很高兴见到你
* a12c0f3 添加了这个不行
* f237de9 修改测试
* 9d0fcbc my first commit
----------------------------------------------------------------------------------------

删除本地创建的仓库

1.打开仓库的目录
2.执行
find . -name ".git" | xargs rm -Rf
删除文件夹下所有的.git文件

与AndroidStudio的关联使用

1.点击setting>>version control>>git打开面板
在右上角的路径中找到git的根路径中的git.ext
点击test,显示successful则成功

2.在gitbash中打开项目的根目录 
git init初始化一个仓库

3.点击setting>>version control
如果右上角的被版本控制的项目名称是灰色,则点击右上角的绿色的+号将其添加进去 

4.会发现所有的java文件都变成了红色

5.切换到project视图
右键整个项目>>git >>add可以把除忽略外的所有文件add

6.之后可以用gitbash进行版本控制
说明关联成功,android studio有对应的控制按钮
也可以使用gitbash进行版本控制

配置忽略文件

配置忽略文件只有在commit之前生效,一旦配置,以后配置的就不起作用了
1.idea 文件夹,此文件夹是用来保存开发工具的设置信息。

2.gradle 文件夹,此文件夹是用来保存gradle的依赖信息。

3、 所有的 build 文件夹,build文件夹是用来保存编译后的文件目录。

4、 所有的 .iml 文件,是用来保存开发工具信息。

5、local.properties 文件,是用来保存项目依赖信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值