git使用小记

git使用

(v0.2.0,2016-03-01)

工作流

本地git维护三棵“树”。第一个是工作目录,拥有实际文件;第二个是暂存区,像是缓存区域,临时保存改动;最后是HEAD,指向最后一次提交的结果。

创建ssh key

    cd ~/.ssh
    ssh-keygen -t rsa -C email_address
    //如果已经有其他的key存在,则需要重命名

生成一对文件,默认名为id_rsa和id_rsa.pub,前者为私钥,后者为公钥,将公钥内容填入响应git管理ssh中。

多个ssh key配置

如果有多个ssh key需要管理配置,比如公共的github和公司私有的gitlab,需要生成多个ssh key,对应不同的账户来管理,可以通过配置~/.ssh中的config文件来实现。
config配置示例如下:

    # gitlab
    Host gitlab.公司名.com
    HostName gitlab.公司名.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

    #github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

查看是否连接远端成功

如果ssh可以成功连接,会返回欢迎信息。

    #ssh -T git@github.com

创建/切换本地分支

    git branch branchname
    git checkout branchname
    // 可以合并为:
    git checkout -b branchname
    // 追踪某一分支来创建本地分支
    git checkout -b branchname origin/dev_junmo
    // 再调用push,可以将本地分支提交到远程分支上去
    // 如果远程分支不存在,则会自动创建
    git push origin branchname

添加本地分支到远端分支的追踪

    git branch --set-upstream-to 本地分支名 origin/远程分支名

删除分支

    // 删除本地分支
    git branch -d branchname
    // 删除远程分支
    git push --delete origin branchname
    // 重命名本地分支
    git branch -m oldbranchname newbranchname
    // 重命名远程分支,即先删除远程分支,重命名本地分支后再push

从远端更新指定文件

    git fetch
    git checkout origin/远端分支名 -- 路径/文件名

查看变更

    // 不带任何参数
    git diff
    // 查看已经add,但没有commit的变更
    git diff --cached
    // 修改后,查看与最近一次commit的变更
    git diff HEAD -- 路径
    // 两次commit的差异比对
    git diff v1.0 v1.1
    // 两个分支间变更
    git diff master dev
    // 不取master分支上最后一个commit和dev最后一个commit进行对比,而是从master和dev交点的分歧点和dev分支的最后一个commit进行比对
    git diff master...dev
    // 如果正处在master分支上
    git diff ...dev

Add本地文件(添加到暂存区)

    git add 文件/文件夹
    git status

撤销Add

    git reset 文件/文件夹

提交添加注释(提交到HEAD,但是还没到远端仓库)

    git commit

从本地push文件到远端仓库

    git add 文件/文件夹
    git commit 
    git push origin 分支名

更新本地仓库至最新改动

会在本地工作目录中获取(fetch)并合并(merge)远端的改动。

    git pull

修改最后一次提交

    git commit --amend

撤销某个commit(本地和远端都会改变)

    git log     // 查看commit日志,找到需要回退的commit的哈希值
    git reset --hard commit_id
    git push origin 分支名 --force

回退commit版本,重新提交(本地不会发生变化)

    git lig 
    git reset commit_id
    git add 
    git commit
    git push origin dev_junmo

保存当前工作区

上一次提交为commit1,在commit1的基础上做了一些修改,有其他需求要修改另一部分,但是当前修改还未完成,不想提交也不想丢弃,使用git stash。

    git stash save "message" // 保存当前修改的工作区内容假定为stash1,整个工作区回退到commit1版本,后面的message有助于自己记录保存的内容
    // 做其他修改.......
    git add files
    git commit
    git push   // 提交后为commit2
    // 想恢复stash1的内容,当前本地的HEAD也已经在commit2版本了
    git stash pop // 会将最新的stash弹出,并且从stash中删除
    git stash apply stash{编号} // 指定弹出stash,并且不会删除
    // 这里会存在一个问题,将stash1 pop出来其实是自动和commit2版本进行merge,如果stash中的文件和commit2版本中有冲突,则需要自己解决冲突的地方

找回撤销的commit

    git relog
    git cherry-pick commit_id

替换本地文件

使用HEAD中的最新内容替换掉工作目录的文件
git checkout –<fileName>

merge操作

在自己的分支上工作完成后,想将改动提交到master分支,可以提出merge请求,还没有使用命令行操作过,在网站上使用图形化界面操作。merge请求会将发生的改动提交到对应分支,可以在merge时查看difference。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值