查看:
git status
命令可以让我们时刻掌握仓库当前的状态
git diff <文件>
命令查看被修改文件的修改内容
git log
查看版本历史纪录,如果嫌输出信息太多,可以试试加上--pretty=oneline
参数
git log --graph
命令可以看到分支合并图
git reflog
记录你的每一次命令
提交:
提交修改和提交新文件是一样的两步,第一步是git add
:(将文件放入暂存区)
第二步是:git commit (-a -m)
(将暂存区所有文件一次性提交到分支)
修改:
git checkout -- <file>
可以丢弃工作区的修改>让这个文件回到最近一次git commit
或git add
时的状态
git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区
git reset
命令版本退回 ,退回到上一个版本: git reset - - hard HEAD^
git reset --hard <commit ID>
可以前进到之前被删除的最新版本
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删
远程推送:
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master推送到远程。
$ git push -u origin master
分支管理:
master才是指向提交的,所以,HEAD指向的就是当前分支。
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
强行删除。
分支冲突:
1. 注意分支和分支并不是完完全全的平行.在切换分支前, 一定要在做出改动的分支将改动提交, ·否则可能会将改动带到切换到的分支, 产生误会. 只要提前提交了, 改动就不会带过去. 不过只要原分支提交后, 带到切换到的分支的改动也会自动消失.
2. 合并如果没有冲突出现也就是自动合并成功, 则在当前分支中不需要add/commit提交合并后的内容, 因为实际上当前分支在合并成功后就指向了最近的commit(由做出改动的分支提交)
3. 若冲突发生则手动整合冲突(如删除掉某一分支的修改)然后保存, 再提交. 这个提交的操作就相当于你默认要提交的这个版本就是无冲突的合并版本. 实际上就是人肉修改冲突文件: 打开需要合并的文件,找到冲突内容,选择一个版本保留, 然后提交你选择后的结果. 既然说是选择, 所以你甚至可以选择什么冲突都不修改的提交. 只不过文件中的冲突内容会很突兀的在那里杵着
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。、
修复BUG时:
创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash
,最后git stash pop = apply + drop
,回到工作现场。
git stash list
查看stash内容
多人协作,远程分支push与pull
● 查看远程库信息,使用git remote -v
;
● 本地新建的分支如果不推送到远程,对其他人就是不可见的;
● 从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交;
● 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
● 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
;
● 从远程抓取分支,使用git pull
,如果有冲突,要先处理冲突。