git常用命令

Git原理

存在三个区域:working tree(工作区), index file(暂存区), commit(版本库)

修改

查看哪些文件修改(增删改都是修改)了,需要暂存或提交
git status

添加修改
git add filename

提交修改
git commit -m "comment goes here"

版本回退
git reset --hard versionnum

撤销修改工作区的某个文件:
git checkout --filename

  • 如果工作区的文件没有提交到暂存区,就撤销修改就回到版本库的状态(也可以用于还原工作区中删除的文件)
  • 如过工作区的文件提交到了暂存区,又做了修改,就回到添加到暂存区的状态

将某个文件从暂存区撤销
git reset HEAD filename

diff查看差异

存在三个区域:working tree(工作区), index file(暂存区), commit(版本库)

  • git diff :,比较working tree和index file(如没有则是和commit)的区别
  • git diff --cached: 比较index file和commit的区别
  • git diff HEAD:比较working tree和commit的区别
    上述命令都可以加入filename用来单独对比某个文件。

分支

查看
git branch

创建
git branch dev

切换
git checkout dev

创建并切换
git checkout -b dev

合并指定分支到当前分支
git merge dev
合并出现冲突时,修改好冲突的文件再次提交
如果当前分支没有做任何修改,则merge时会使用fast forward,直接调整指针指向:HEAD->master->dev latest commit。如果做了修改,会使用recursive merge,在master上创建新的节点保存合并。如果fast forward,导致git log时无法看出曾经做过合并,如果强制取消fast forward模式可以使用:
git merge --no-ff -m "comment goes here" dev

删除
git branch -d dev

最佳分支实践
master分支保持稳定,dev分支用于合并开发者的提交,到稳定节点时再将dev合并到master中去。开发者都在dev上干活,每个人都有自己的分支,时不时往dev上合并即可。

bug分支
比如当dev分支上的共作未提交,想临时见一个新的分支修复突发bug,这时用git checkout -b bugfix会将dev上的修改也带过去或者禁止切换分支(如果index file有内容)。为了不讲dev上的修改该影响新的bug分支,应该暂时将dev的修改隐藏保存起来:
git statsh
当在bugfix分支修改->提交->合并到master->删除该分支后,再切换回dev分支使用git stash pop就可以将隐藏保存的内容还原。

远程仓库

设置ssh key
用户目录下.ssh目录下的github_rsa.pub文件内容添加到github的ssh keys设置中,授权这台电脑可以推送到github。如果没设置的话推送时会报fatal:unable to access的错误

本地仓库和远程仓库关联
git remote add origin yourcloneurl
添加后远程库的名字就是origin

git push -u origin master
把master分支推送到origin,加入-u参数是说将本地master推送到远程master分支,并将本地master和远程master分支关联,下次推送可以用命令:
git push origin master

多人协作
git remote -v
查看远程仓库的详细信息

git push origin dev
推送当前分支(不一定叫dev,但最好名称一致),远程仓库创建dev分支

git clone yourgiturl
另一个小伙伴可以用该命令将远程仓库master分支clone到本地,但此时他用git branch只能看到master分支而没有dev分支。需要使用下面的命令:

git checkout -b dev origin/dev
小伙伴将远程dev分支checkout到本地dev分支

假设这个小伙伴修改了其中一个文件test.txt并推送到了远程dev分支,这时如果你也修改了test.txt并用如下命令推送:
git push origin dev会推送失败,报错:
git_error1

按照提示,需使用:
git pull origin dev
或者git branch --set-upstream dev origin/dev
将远程dev抓取下来合并到本地,在本地解决好冲突->add->commit->push

标签
创建标签
git tag v1.0
推送标签
git push origin v1.0

github
如果对一个开源项目感兴趣可以fork到自己的github仓库,clone到本地做修改后push。
如果要将fork出来的项目与原项目merge,需要pull request,提交申请等原作者同意后才会将修改最终提交。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值