$ git init // 初始化一个Git仓库
$ git status // 查看仓库的状态
$ git add . // 将所有修改添加到暂存区
$ git commit -m “—” // 将暂存区的修改提交到仓库 后面添加上有意义的注视信息
$ git log // 查看git的commit信息,每次提交的信息包括注视在内,从最新提交到最久提交
$ git log --pretty=oneline // 将commit 信息简化成一行显示
$ git reflog // 在退回到旧版本之后可以查看旧版本之前的提交日志
$ git reflog 查看到之前的版本的commit id
$ git status 可以看到修改的状态
添加远程库
$ git remote add origin git@github.com:zhangsan/ylez.git // 添加一个远程仓库
$ git push -u origin master // 将本地的master分支推送到远程的master分支中(第一次推后面可以直接push)
$ git push -u origin dev // 本地切换到dev分支然后将本地的dev分支推送到远程
克隆远程仓库到本地
$ git clone git@192.168.0.8:zhangsan/test.git // 讲一个远程的仓库克隆到本地
本地分支操作
$ git branch // 查看git的所有分支
$ git branch dev // 创建dev分支
$ git checkout dev // 切换到一个已经存在的分支
$ git checkout -b dev // 创建dev分支,并切换到dev分支
$ git branch -d dev // 删除dev分支
$ git checkout master // 切换到主分支
$ git merge dev // 将dev分支合并到master分支
$ git stash // 冻结当前的分支修改
$ git branch -d branchName // 删除某一个分支,前提是在该分支和产生该分支的主分支已经合并了(merge)
$ git branch -D branchName // 删除某一个分支,无论是否合并都强制删除
要查看远程库的信息:
$ git remote //查看当前仓库
origin
$ git remote -v //或者,用git remote -v显示更详细的信息:
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
常见问题处理冲突
$ git checkout -b feature1
Switched to a new branch ‘feature1’
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。
推送的时候如果有人在你之前已经推送了,推送失败
$ git push origin dev
To git@github.com:michaelliao/learngit.git
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to 'git@github.com:michaelliao/learngit.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,
Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送$ git pull //抓去远程的分支的提交到本地
没有指定本地dev分支与远程origin/dev分支的链接,推送也会失败,所以首先我们需要建立本地分支和远程分支的联系
$ git branch --set-upstream dev origin/dev // 建立本地dev 分支和远程dev分支的联系
Branch dev set up to track remote branch dev from origin.
总结:
查看远程库信息,使用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,如果有冲突,要先处理冲突。
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件