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

来源:互联网 发布:巨人网络借壳游久游戏 编辑:程序博客网 时间:2024/05/21 14:05

Git的安装

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

初始化

打开安装完成后的gitbashpwd 现在当前的目录ls显示当前打开目录的所有文件列表cd /c打开c盘mkdir myGit在当前目录创建myGit文件夹cd myGit进去到当前目录下的myGit文件夹
git init初始化当前目录为仓库该操作会在当前目录创建一个隐藏的.git文件夹,请不要修改里面的任何东西

添加文件到版本控制

在仓库目录下(包括子目录)创建//注意请修改格式为utf-8 without domreadme.txt在gitbash中//该方法可以多次操作git add readme.txt//也可以添加多个文件git add test.txt test.txt//提交修改git commit -m"你了做什么,该字符串会和提交操作绑定,用于提示你本次操作做了什么"

版本控制__修改

修改readme.txt文件里的内容
git status查看git当前的状态---------------------------------------------------------------------------------$ git statusOn branch masterChanges 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.txtindex e69de29..ce5c36d 100644--- a/readme.txt+++ b/readme.txt@@ -0,0 +1 @@//不同之处:多了"你好啊"+你好啊---------------------------------------------------------------------------------
git status查看被修改文件被添加之后,git当前的状态---------------------------------------------------------------------------------$ git statusOn branch masterChanges 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 statusOn branch master//提示没有文件需要提交nothing to commit, working directory clean---------------------------------------------------------------------------------

版本控制__回退

git log查看每次提交的commit id及其信息---------------------------------------------------------------------------------//最近一次的修改//版本号(commit id),SHA1散列的十六进制commit 1e5a2aa1ef60e961e2e8271122c69f5e8b1acfb7Author: SkylakeXun <1766828799@qq.com>Date:   Wed Nov 1 11:39:00 2017 +0800    添加 很高兴见到你//倒数第二次的修改commit a12c0f3bbba25843522dcb65fd80da93243dd135Author: SkylakeXun <1766828799@qq.com>Date:   Wed Nov 1 11:32:51 2017 +0800    添加了这个不行//倒数第三次的修改commit f237de966c22cea4eef8ff40b7fef09751b63fa4Author: SkylakeXun <1766828799@qq.com>Date:   Wed Nov 1 11:27:27 2017 +0800    修改测试//第一次提交commit 9d0fcbcbc4ba69ce5dfc2d34c5a908b5356330b3Author: 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 a12c0f3bbba25843522dcb65fd80da93243dd135Author: SkylakeXun <1766828799@qq.com>Date:   Wed Nov 1 11:32:51 2017 +0800    添加了这个不行commit f237de966c22cea4eef8ff40b7fef09751b63fa4Author: SkylakeXun <1766828799@qq.com>Date:   Wed Nov 1 11:27:27 2017 +0800    修改测试commit 9d0fcbcbc4ba69ce5dfc2d34c5a908b5356330b3Author: 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 1e5a2aa1a12c0f3 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 发现回去的是第一次修改后的版本

版本控制__撤销修改

//你想删除一些内容,这些内容你还没有addgit 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 100644index 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 0Receiving 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.txtCONFLICT (content): Merge conflict in test.txtAutomatic 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可以把除忽略外的所有文件add6.之后可以用gitbash进行版本控制说明关联成功,android studio有对应的控制按钮也可以使用gitbash进行版本控制

配置忽略文件

配置忽略文件只有在commit之前生效,一旦配置,以后配置的就不起作用了
1.idea 文件夹,此文件夹是用来保存开发工具的设置信息。2.gradle 文件夹,此文件夹是用来保存gradle的依赖信息。3、 所有的 build 文件夹,build文件夹是用来保存编译后的文件目录。4、 所有的 .iml 文件,是用来保存开发工具信息。5、local.properties 文件,是用来保存项目依赖信息。
阅读全文
0 0
原创粉丝点击