基本指令
- 配置自己的身份:
git config -- global user.name "Tony"
设置自己的名字
git config -- global user.email "tony@qq.com"
设置自己的邮箱 - 初始化代码仓库:
新建一个文件夹,右键打开Git Bash Here
然后git init
初始化代码仓库 - 提交代码:
主要使用add
和commit
命令
add是把想要提交的代码先添加进来(添加到缓冲区)
commit是真正的执行提交操作(提交到gitHub上) - 添加build.gradle文件
git add build.gradle
添加app这个目录git add app
添加整个所有文件git add .
- 提交文件
git commit -m "First commit"
-m后面的引号之中的内容是提交备注,比如备注你修改了什么,第几次提交等
完整的提交操作
//在你的项目里面初始化操作
git init
//是将你的项目添加到index区域 一般使用 git add -f .
git add README.md
//提交, -m:message 也可以加.
git commit -m“first commit”
//将你的gitHub上面的仓库地址换个名字,此操作只要在git push之前用就行
git remote add origin https://github.com/programmer-ls/myRepository.git
//将项目push到分支下的master下面
git push -u origin master
第三周
- 忽略不想提交的文件操作:
android studio根目录和app目录下都有一个.gitignore
,我们可以在app的.gitignore
下面添加不想提交的文件,如:
/build
/src/test
/src/androidTest
- Git查看自上次提交后文件修改的内容:
git status
- Git查看自上次提交后文件修改的具体内容:
git diff
- Git查看自上次提交后MainActivity.java这个文件修改的具体内容:
git diff app/src/main/java/com/example/xxx/MainActivity.java
- 撤销未提交的修改,如撤销MainActivity.java这个文件:
git checkout app/src/main/java/com/example/xxx/MainActivity.java
【注】这种撤销方式只适用于那些还没有执行过的add命令的文件,如果某个文件已被添加过,则无法撤销 - 取消添加:
reset
:版本回退,回到你上n次提交的版本
如:git reset HEAD app/src/main/java/com/example/xxx/MainActivity.java
git reset --hard HEAD^ : 回到前一个版本
git reset --hard HEAD^ : 回到前两个版本
git reset --hard HEAD~100 : 回到前100个版本
- 丢弃工作区的修改
git checkout -- file
:--
比较重要,不然命令会变成创建分支
Git2.23版本中,已经使用了新命令git restore
来替代git checkout
的文件恢复功能
$ git checkout --first.txt
Updated 1 path from the index
- 查看提交记录:
git log
会显示你每次提交的时间和提交的备注
Author: ls <1584677103@qq.com>
Date: Sun Jul 19 18:31:57 2020 +0800
部分bu修复
commit 8ff0880c1223893ecaac72cde084f775727bc8c6
Author: ls <1584677103@qq.com>
Date: Thu Jun 4 19:14:33 2020 +0800
改善了查看小票信息是否存在的请求
commit 6e60cf98bd07c67eeba5dcb01625583588603c23 (origin/master)
Author: ls <1584677103@qq.com>
Date: Thu Jun 4 15:16:18 2020 +0800
首页界面完善
commit f64345ecb81b2a245a44039fe01fbcbb7ddfe89b
Author: ls <1584677103@qq.com>
Date: Tue Jun 2 15:04:48 2020 +0800
图表分析界面以及逻辑基本完善
- 查看其中的一条提交记录,可在命令中指定该记录的id,并加上-1参数,如:
git log e36a0b92f52304849a2d0a516d3d12cf3639ea8c -1
- 查看这条提交记录具体修改了什么内容,在命令中加入-p参数
git log e36a0b92f52304849a2d0a516d3d12cf3639ea8c -1 -p
第四周
- 查看当前版本库中有哪些分支:
git branch
- 创建一个分支:
git branch version1.0
- 分支列表前的“ * ”表示我们的代码在这个分支下面。切换分支:
git checkout version1.0
两分支的操作互不影响 - 合并操作:
git checkout master
git merge version1.0
可将version1.0分支上修改并提交的内容合并到master分支上 - 删除分支:
git branch -D version1,0
- 下载代码到本地:
git clone https://git.com/example/xxx.git
- 将本地修改的代码同步到远程版本库上
git push xx master
xx:是gitHub仓库地址的重命名 - 将远程版本库上的修改同步到本地:
git fetch xx master
这个命令会让远程版本库上的修改同步到本地,不过同步下来的代码并不会合并到任何分支上,而是存放到xx/master分支上,可通过git diff xx/master
看修改了哪些东西,在调用git merge xx/master
将分支上的修改合并到主分支上
git pull xx master
这个命令将以上的功能全部实现,它可以获取最新代码并合并到本地
分支运用:
- 创建分支:
git branch [分支名]
git checkout -b [分支名] :创建并切换分支 - 删除分支:
git branch –d [分支名] - 查看分支
git branch -v - 切换分支
git checkout [分支名] - 合并分支
首先自己在一个分支下面,然后使用git merge [分支名]
,就可以将当前分支和merge的分支合并
具体操作:
- A:切换到接受修改的分支(被合并,增加新内容)上
git checkout [被合并的分支名] - B:执行merge命令
git merge [有新内容的分支名]
- 解决冲突
- A:冲突的表现,当两个分支修改了同一个地方后
9<<<<<<< HEAD :<<<HEAD是指主分支修改的内容
10hhhhhhh edit by hot_fix
11=======
12hhhhhhh edit by master
13>>>>>>> master
类似与此类情况,两个分支同时修改了文件的 hhhhhhh
的地方,就会出现此类标记
- B:冲突的解决
A:编辑文件,删除特殊符号<<<<<<<
======
>>>>>>>
等等符号
B:把文件修改到满意的程度,保存退出
C:git add [文件名]
D:git commit -m"日志信息"
【注】此时commit一定不能带具体文件名
关联远程仓库
git remote add origin git@server-name:path/repo-name.git // 关联一个远程仓库,如:$ git remote add origin
将代码提交到分支上面
首先说一下我一直迷惑的问题,如果我初始化了本地仓库,该如何和远程仓库连接呢?
其实我之前就已经写过了,git remote [仓库别名] https地址
就是这句
然后开始记录完整步骤
- 先
git init
初始化仓库 -
git add .
添加 -
git commit -m"备注"
提交 -
git branch -a
查看仓库的已存在的分支
注:如果没有git add和git commit,这条语句没有结果 -
git checkout -b [分支名]
创建并切换分支 -
git push [仓库名] -f [分支名]
将文件上传到远程仓库
注:此时不写分支名,上传失败,因为他不知道该上传到哪个分支
bug分支:
情景:当你遇到一个bug,需要2天完成,但是另一个简单的bug几小时就能完成,这时又不能将2个工作量的bug修改量的修改提交,所以就先把对两天工作量的修改先隐藏,待完成几小时的小bug后再来看这个问题
- 将当前的工作现场(2天工作量的分支下)隐藏起来:
git stash
使用后,使用git status
将看不到我们修改的状态信息 - 创建一个临时分支:
git checkout -b [临时分支名]
- 修复bug之后,将临时分支和要修改的分支合并:
git merge [临时分支名]
- 将临时分支删掉:
git branch -d [临时分支名]
- 切换到2天工作量的bug分支下面
- 回来查看之前隐藏的修改:
git stash list
$ git stash list
stash@{0}: WIP on master: 4c6c58b master上的提交
- 将之前stash的内容恢复:
git stash apply
$ git stash apply
Auto-merging second.txt
CONFLICT (content): Merge conflict in second.txt
- 恢复后,stash的内容并未被删除,应手动删除:
git stash drop
$ git stash drop
Dropped refs/stash@{0} (fddcff0de144d056ad392eb7c58a746e18ac0f4a)
- 7、8可以合并为
git stash pop
恢复的同时,删除stash
多人协作
- push:
git push origin master
master分支是主分支,因此要时刻与远程同步。
一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
多人协作工作模式一般是这样的:
首先,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
网友评论