1. 常用命令
下载一个项目和它的整个代码历史
git clone [**.git]
比较当前文件和暂存区文件差异
git diff
将工作文件修改提交到本地暂存区
git add -A
git add
显示有变更的文件
git status
提交暂存区到仓库区
git commit -a -m “[comments]”
查看该文件每次提交记录
git log
本地代码更新(取回远程仓库的变化,并与本地分支合并)
git pull origin [branchName]
本地代码提交(上传本地指定分支到远程仓库)
git push origin [branchName]
新建分支
git checkout -b [newBranchName]
git checkout -b [newBranchName] master 在master分支上创建分支并切换到newBranchName分支上
切换指定分支
git checkout [branchName]
查看所有分支
git branch -a
git branch 没有参数,则显示本地库中所有本地分支的名称,当前分支前面会有分号
合并分支
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
下面详细演示下三种状态
初始状态
编辑文件file1.txt
添加文件file3.txt
使用git add 将文件添加到待提交清单
3. 合并分支冲突
比如master分支在进行合并子分支branchName时,如果采用git merge –no-ff [branchName]的方式,会显示出冲突的地方,比如:
类似上面这种情况,说明发生了冲突,遇到这种情况不用担心。这时候需要手动删除。
首选打开编辑冲突的文件,类似以下这种情形:
介于<<<<<<<(包括======以及>>>>>>都是七个) HEAD和=======的内容是master分支原有的内容:“master file1.txt”。
介于=======和>>>>>>> branchName的内容是branchName原有的内容: “file1 has changed”。
这样将子分支branchName的内容整合到master的过程中,上述标记的2块内容会发送冲突,解决办法就是我们手动编辑去掉冲突,即先编辑冲突,然后使用gitt commit提交。
对于git来说,编辑冲突和平时的修改代码没什么差异。修改完成后,都是要把修改添加到缓存,然后支持commit.
持续更新中…..