git常用命令

初始化与基本命令

  • 本地创建的目录初始化为git仓库
    git init
  • 关联到远程仓库,前提是有git账号并已在远程创建将要关联的项目
    git remote add origin <远程ssh仓库地址>
    或者使用git clone命令克隆一份到本地,可以免去前面两步,个人比较喜欢这种方式
  • 工作区修改后添加到暂存区
    git add <文件名称>
  • 撤销工作区的修改,恢复到版本库中当前分支的版本或者上一次commit或者add的状态
    git checkout – <文件名称>
  • 撤销暂存区的修改,回退至工作区
    git reset HEAD <文件名称>
  • 暂存区的内容提交到版本库当前分支
    git commit -m “本次修改说明,便于后期追溯”
  • 查看本地仓库当前状态
    git status
  • 推送到服务端,第一次推送使用-u可以将本地与远程关联起来,之后再推送可省略
    git push [-u] origin <分支名称>
  • 多人协作开发时,推送代码到远程分支前,建议先将远程分支代码与本地分支代码合并
    git pull = git fetch + git merge

回退版本并推送至服务端

  • 查看提交历史或者命令历史
    git log
    git log --graph --pretty=oneline --abbrev-commit
  • 查看所有执行过的命令的日志,即对分支所做的任何修改,通过reset HEAD弥补犯下的错误
    git reflog
  • 本地分支回滚到指定提交,硬重置,恢复到提交前的状态 ,工作区与暂存区所做修改将丢失
    git reset --hard <要回退的分支的commit ID>
  • 本地分支回滚到指定提交,软重置,恢复到提交前的状态 ,保留工作区与暂存区所做修改
    git reset --soft <要回退的分支的commit ID>
  • 版本回退后,直接push到服务端会提示你先pull下,所以需要强制推送到远程分支
    git push -f origin <本地分支名称>

分支-增删查

  • 查看当前分支
    git branch
  • 删除分支
    git branch -d <要删除的分支名称>
  • 强制删除分支
    git branch -D <要删除的分支名称>
  • 新建分支并与远程分支关联,如果是在服务端新创建的分支,本地先git pull下最新的分支信息,否则可能会出现远程分支不存在的问题
    git checkout -b develop origin/develop
    develop是创建的本地分支名称,origin/develop是与之关联远程分支名称,同时会直接把远程develop分支的代码pull下来并切换到develop分支
  • 切换到已存在的分支
    git checkout <存在的分支名称>
  • 基于当前分支创建并切换到新分支
    git checkout -b <创建的新分支名称>
  • 本地新创建的分支与远程分支关联,否则推送会失败
    git branch --set-upstream-to <本地分支名称> origin/<远程分支名称>
    -本地新建的分支推送到远程,并在远程创建对应的分支
    git push --set-upstream origin <本地分支名称>:<远程分支名称>
  • 快速合并分支到当前分支,如果当前分支为master,则将dev分支合并到master,出现冲突解决后,执行add后表示冲突解决
    git merge dev
  • 同上,但合并后的历史有分支,便于追溯
    git merge --no-ff -m “合并message” dev (进入vim后,按esc后,:wq)
  • 合并冲突时,撤销合并操作
    git merge --abort
  • 只merge A分支的一次提交到B分支,先切换到B分支,执行如下命令
    git cherry-pick <需要merge的commitID>
  • 合并冲突时,撤销合并操作
    git cherry-pick --abort
  • rebase 如当前操作分支是dev,如果远程dev分支有新的提交,当push时会提示你先pull,pull命令执行后本地提交记录会出现分叉,执行如下命令,提交记录变成一条直线
    git rebase
  • 基于某个分支执行rebase,如当前分支为dev,执行如下命令会dev会更新到master分支最近所有的修改,git提交历史会是一条直线,而且可以防止以后合并时发生冲突
    git rebase master
  • 交互式rebase,如当前分支为dev,执行如下命令可对dev中的提交进行操作:如合并多个提交为一个提交(可能会出现冲突,按照平时的冲突解决即可)、删除某次提交、修改某次提交的信息等,不要在公共分支使用该命令,在自己建的分支折腾,否则会给团队其他人造成不便,具体如下:
  • git rebase -i 【start commit】(end commit,不输默认为HEAD )
  • git rebase -i HEAD~3 (表示当前分支最近的三次提交)
pick:使用该提交
reword:使用该提交,并修改提交的信息;
edit:修改该提交的文件的内容,不仅仅是commit信息;
squash:将该提交与前一个提交合并;
fixup:将该提交与到前一个提交合并,但不保留该提交的信息;
exec:在该提交上执行shell命令;
drop:移除该提交。

迁移仓库

git clone --mirror <老仓库的git地址>
cd <克隆下来的项目目录>
git remote set-url origin <新的git项目的地址>
git push -f origin
如果需要保留原仓库的提交历史,则从新仓库拉代码时使用如下命令
git pull origin master --allow-unrelated-histories

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值