欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
Git使用笔记_本地代码

 
1. 常用命令

下载一个项目和它的整个代码历史
git clone [******.git]
Git使用笔记_本地代码_02

比较当前文件和暂存区文件差异
git diff
Git使用笔记_暂存区_03

将工作文件修改提交到本地暂存区
git add -A
git add
Git使用笔记_微信公众号_04

显示有变更的文件
git status
Git使用笔记_git_05

提交暂存区到仓库区
git commit -a -m “[comments]”
Git使用笔记_微信公众号_06

查看该文件每次提交记录
git log
Git使用笔记_git_07

本地代码更新(取回远程仓库的变化,并与本地分支合并)
git pull origin [branchName]
Git使用笔记_kafka_08

本地代码提交(上传本地指定分支到远程仓库)
git push origin [branchName]
Git使用笔记_暂存区_09

新建分支
git checkout -b [newBranchName]
git checkout -b [newBranchName] master 在master分支上创建分支并切换到newBranchName分支上
Git使用笔记_暂存区_10

切换指定分支
git checkout [branchName]
Git使用笔记_kafka_11

查看所有分支
git branch -a
git branch 没有参数,则显示本地库中所有本地分支的名称,当前分支前面会有分号
Git使用笔记_微信公众号_12

合并分支
git merge origin [branchName]

git merge --no-ff [branchName]
–no-ff指的是强行关闭fast-forward方式。
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit

git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
–squash:使用squash方式合并,把多次分支commit历史压缩为一次。

2. git中三种状态

git中三种状态分别为:modified, new file, untracked
下面详细演示下三种状态
初始状态
Git使用笔记_本地代码_13

编辑文件file1.txt
Git使用笔记_微信公众号_14

添加文件file3.txt
Git使用笔记_暂存区_15

使用git add 将文件添加到待提交清单
Git使用笔记_git_16

3. 合并分支冲突

比如master分支在进行合并子分支branchName时,如果采用git merge --no-ff [branchName]的方式,会显示出冲突的地方,比如:
Git使用笔记_kafka_17

类似上面这种情况,说明发生了冲突,遇到这种情况不用担心。这时候需要手动删除。
首选打开编辑冲突的文件,类似以下这种情形:
Git使用笔记_本地代码_18

介于<<<<<<<(包括以及>>>>>>都是七个) HEAD和=的内容是master分支原有的内容:“master file1.txt”。
介于=======和>>>>>>> branchName的内容是branchName原有的内容: “file1 has changed”。
这样将子分支branchName的内容整合到master的过程中,上述标记的2块内容会发送冲突,解决办法就是我们手动编辑去掉冲突,即先编辑冲突,然后使用gitt commit提交。
Git使用笔记_kafka_19

对于git来说,编辑冲突和平时的修改代码没什么差异。修改完成后,都是要把修改添加到缓存,然后支持commit.

持续更新中…

 


欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
Git使用笔记_本地代码