git 命令总结

官方文档 https://git-scm.com/docs

1. 生成并添加ssh key

ssh-keygen -t rsa -C "your_name@your_email " -b 4096
vi ~/.ssh/id_rsa.pub

2. 提交前准备

git status //查看 本地 与 git远端的不同
git diff one_file // 查看某一个文件 与git的不同
git branch //查看 本地 valid的分支
git branch -a // /查看 本地 和remote有的所有分支
git branch one_name //新建 一个本地分支
git checkout one_branch_name //将当前工作区切换到这个分支
git checkout one_file //直接将工作区的本地文件 用git的文件替换,会覆盖掉本地文件,慎重使用
git submodule update --init –recursive // git中包含有 其他的子模块,在git clone的时候子模块只有一个空文件夹,需要执行这句话才可以将子模块内容拷贝到本地
git checkout one_commit_id //切换到这个commit 提交的内容
git checkout . // git checkout . 就是从最近一次 commit 或者仓库中拉取(检出)代码,会覆盖掉当前 unstash 的修改。慎重
git log //查看当前分支 近期的所有提交
git log --all // 查看所有分支的提交
git log --uthor=name //查看 近期 指定作者的提交
git show commit_id file_name //查看这次提交 这个文件的改动
git pull // git pull = git fetch + git merge,
git cherry-pick commit_id // git cherry-pick能够把另一个分支的一个或多个提交复制到当前分支. 首先git checkout 到另一个分支,然后使用git log找到想要复制的commit 的id,记录下来,切换到自己分支,使用git cherry-pick [上面记录的commit id] 回车即可!
git cherry-pick –continue // 发生冲突时 使用,继续当前的chery-pick序列

git fetch // git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git fetch --all
git reset --hard origin/master // 强制覆盖本地命令,慎重
git pull
git fetch --all && git reset --hard origin/master && git pull // 强制覆盖本地命令,慎重
git rebase origin/… //改变分支依赖,先git checkout到当前分支,再执行,在gitk中可以看到依赖关系
git stash // 还需再研究
gitk //内建的图形化git

git reset的三种模式 git reset --soft; git reset --mixed; git reset --hard;
https://www.jianshu.com/p/c2ec5f06cf1a
https://www.jianshu.com/p/cbd5cd504f14

3. 标题提交过程

git add -u //将文件的修改、文件的删除,添加到暂存区。
git add . //将文件的修改,文件的新建,添加到暂存区。
git add -A //将文件的修改,文件的删除,文件的新建,添加到暂存区。
-u就是update的意思,只会标记本地有改动(包括删除和修改)的已经追踪的文件
git add one_file // 往暂存区添加 某一个文件
git commit //提交,这时候会出现一个vim文件,可以添加本次提交的注释. git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里
git commit -m one_description // 直接提交 + 注释
git config --global user.name “your_name”
git config --global user.email " your_name@your_email "

git push <远程主机名> <本地分支名>:<远程分支名> // 一般远程主机名为origin, 如果本地分支和远程分支已经存在,且当前工作区就在这个分支,<本地分支名>:<远程分支名> 可以省略。如果是本地分支名 是刚新建的分支,则需要加上命令。

git tag 1.1.0 commit_id // 为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签. 你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性

http://rogerdudler.github.io/git-guide/index.zh.html

4. 一些问题 :

  1. 当git add 某个文件到缓存区,还没有git commit 但是你不想这个文件了,可以使用git rm命令,两种选择:
    git rm --cached “文件路径”,不删除物理文件,仅将该文件从缓存中删除;(推荐此方法)
    git rm --f “文件路径”,不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)。
  2. 如果 在 git push的时候 提示冲突,说明别人在你前面有提交,此时可以 git fetch,拉取别的修改到本地,然后git rebase,此时如果没有冲突(修改的不是同一个文件)就会提示成功,如果有冲突,此时就需要手动修改,然后再git merge。
    如果git rebase成功,则直接 执行 git push即可
  3. 当checkout遇见“fatal: reference is not a tree”的错误时,按如下步骤处理
    1、git checkout 切换至主分支
    2、git pull 更新主分支至最新版本
    3、checkout分支代码
    当分支代码版本大于主分支代码版本时,会出现如上错误,此时更新主分支代码即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123axj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值