1.上传文件到远程仓库 把工作区变成git可以管理的仓库
$ git init
把文件添加到暂存区
$ git add .(所有文件)/文件名
把暂存区的内容提交到当前分支
$ git commit -m '提交的相关说明'
关联远程仓库:
$ git remote add origin 远程仓库地址
上传代码
$ git push -u origin master
$ git push origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。以后就直接
$ git push origin master
2.版本回滚 查看日志
$ git log
查看带详情的日志(输出每次提交修改的代码状态)
$ git log --stat
切换版本()
$ git reset --hard commit_id/标签名
回退前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
当前版本:HEAD
上一个版本:HEAD^
上上个版本:HEAD^^
上第100个版本:HEAD~100
3.撤销 未add到暂存区
git checkout -- 文件名
已add到暂存区,撤销回到工作区
git reset HEAD 文件名
4.分支管理 查看分支
$ git branch
创建分支
$ git branch 分支名
切换分支
$ git checkout 分支名
创建+切换分支
$ git checkout -b 分支名
合并某分支到当前分支
$ git merge 分支名
删除分支
$ git branch -d 分支名
5.标签管理 查看所有标签
$ git tag
创建新标签(默认为HEAD,也可以指定一个commit id)
$ git tag 标签名
删除标签
$ git tag -d 标签名
将标签推送到远程
git push origin 标签名
6.git使用tips 6.1 bug修复 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
把当前工作保存
$ git stash save "添加备注,方便查找"
切换到master
$ git checkout master
创建+切换到bug分支
$ git checkout -b bug分支名
提交到bug分支
$ git commit -m "fix bug 100"
切换到master
$ git checkout master
把bug分支合并到master(当前分支)
$ git merge --no-ff -m "merged bug fix 100" bug分支名
删除bug分支
$ git branch -d bug分支名
切换到dev
$ git checkout dev
恢复最开始的工作现场
$ git stash pop
6.2 多人合作 首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
7.git大致流程 git init/git clone 初始化git仓库/把代码拉到本地
git checkout -b test 创建并切换test分支
git status 查看一下自己的操作
(写完代码后)
git add . 添加到暂存区
git commit -m "所做操作说明" 提交到分支
git status 再看一下自己的操作
(需要把test分支merge到st分支,确保每次切换分支之前都commit了,以免把正在操作的文件带到切换的分支里去)
git checkout st 切换到st分支
git diff master 在merge之前对比一下st分支和master分支、test分支有没有区别
git diff test
(有区别的话,找问题出在哪里,没有区别即可进行后续操作)
git merge test 把test分支merge到st分支
git push 把st分支push到远程仓库