git相关操作

git分支相关操作

良好的git使用习惯是,如果我的代码已经合并到Master分之,并且测试通过,上线了,确认无误,我就可以删除之前的开发和测试分支了,git上如果有太多的无用分支,有时候会让你摸不着头脑,哪个是有用的,哪个是无用的。

  • clone仓库

    1
    git clone ${repo}
  • clone指定分支或者tag的仓库

    1
    git clone ${repo} --branch=${tag}|${branch}
  • 提交暂存区的变更

    1
    git commit -m {mesage}
  • 删除本地分支

    1
    git branch -d {branch}
  • 强制删除本地分支,可能是未合并的分支

    1
    git branch -D {branch}
  • 删除远程分支

    1
    git push origin --delete {branch}
  • 合并目标分支到当前分支

    1
    git merge ${target}
  • 取消merge代码

    1
    git merge --abort

tag操作

  • 查看当前tag列表

    1
    git tag -l 或者 git tag --list
  • 创建tag

    1
    git tag -a {tag} -m {comment}
  • 推送tag到remote

    1
    git push {remote} {tag}
  • 删除本地tag

    1
    git tag -d {tag}
  • 删除远程tag

    1
    git push {reomte} --delete {tag}

文件操作

  • 跟踪文件或者将文件加入到暂存区

    1
    2
    // 文件名字支持通配符
    git add {file}
  • 从暂存区移除某文件

    1
    git reset head file
  • 取消工作区域文件的修改,也可以用来恢复误删除的文件

    1
    git checkout {filename}
  • 从git仓删除某个文件

    1
    git rm {file}

ssh配置

每次输入账户名和密码实在太麻烦了,给github账户配置一个全局的ssh秘钥就不用那么麻烦了,操作也很简单:

  • 生成秘钥,ssh-keygen -t rsa,这里有个注意事项,一般格式秘钥都是会在当前目录下生成,所以最好到~/.ssh/这个目录来执行命令
  • 秘钥生成了以后,把你的公钥复制到github,settings -> ssh and gpg keys -> new sshkey (title可以安装你喜欢的填写)

一般情况下,这样就够了,但是如果你在生成秘钥的时候给定了秘钥文件的名字,也不是默认的名字,那么你可能还需要配置一下,因为git并不知道你使用哪个秘钥来进行认证,也许还有很多其他的秘钥文件,这里配置也比较简单,比如说我的秘钥文件是github开头的吧,那么就就需要在~/.ssh/config文件中加入一下内容:

1
2
3
4
host github.com
HostName github.com
IdentityFile ~/.ssh/github
User git

然后就大功告成了。

2018年09月16添加

  • 重新提交,再次编写message或者添加文件到暂存区
    1
    git commit --amend

2018-10-12添加

  • 强制删除未合并的分支

    1
    git branch -d -f {branch}
  • -D也能强制删除未合并的分之

    1
    git branch -D {branch}

2018-11-20日添加

需要将当前分支回滚到某次提交的状态,工作空间也会被回滚,如果只会回滚git的指针,那么不要加--hard选项。

1
git reset {hash} --hard

可以取消提交,将变更加入到暂存区

1
git reset {hash} --soft

以上几个命令的区别:

  • git reset –hard 回滚当前HEAD到某次提交,并且工作空间中的内容与git本地分支中保持一致
  • git reset –soft 回滚当前分支到某次提交,被悬挂的会被加入到暂存空间中
  • git reset –mixed 回滚当分支的HEAD到某次提交,被悬挂的提交会被保存在当前的工作空间中,如果冲突,会以工作空间中的内容为主

2018-01-29添加

将A分支的某个文件合并到当前分支

1
git checkout --patch A filename