千寻

道路很长, 开始了就别停下!

0%

Git常用命令

常用命令

  • git branch -a

    查看所有的分支,包括本地和远程

  • git checkout -b develop remotes/origin/develop

    切换远程开发分支在本地创建影像

  • git status

    查看文件的修改状态

  • git add src/main/java/com/onlyone/csw/controllers/Test.java

    标记需要提交的文件,支持*通配符

  • git commit -m “备注”

    将本地修改保存到本地仓库中,并添加备注

  • git push

    将本地仓库修改推送到服务器上的仓库中

  • git pull

    同步服务器最新内容到本地

  • git checkout 分支名

    在分支之间切换

  • git merge 分支a

    将分支a内容合到当前分支上,最后要执行git commit 和 git push

  • git branch -d 分支名

    删除本地分支(删之前需要切换非当前分支)

  • git branch 分支名

    在本地库创建新的分支

  • git push -u origin 分支名

    提交本地创建的分支到远程服务器

  • git diff topic maste

    直接将两个分支上最新的提交做diff

  • git diff

    查看当前未提交的文件的改动点

  • git branch -v -v

    有【】的表示和服务器关联

  • git reset –hard HEAD~3 | git reset –hard commit-id

    会将最新的3次提交全部重置,只在本地生效 (http://www.cnblogs.com/mliudong/archive/2013/04/08/3007303.html)

    git push -f origin 分支名

    强制提交到远程服务器,此时回退了3个版本,git服务器的提交log也会清掉。

  • 已经commit 了N次,需要退回到某一版本
git reset <commit-id>  #默认就是-mixed参数。
修改代码 或者  git checkout 撤销修改
git push -f 强制提交

ps:查看git log,会发现原来已经提交过的log也会被删除

git reset

git reset 参数

  1. –soft
    仅仅移动当前Head指针,不会改变工作区和暂存区的内容

  2. –mixed 默认
    是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区

  3. –hard
    当前head指针、工作区和暂存区内容全部改变

如何回滚文件

    1. 修改完,还未执行git add
      git checkout .
      使用暂存区的文件覆盖工作区,所以执行完git add .之后,再执行该命令是无效的
      git checkout .和git add .是一对反义词
  • 2.使用git add 提交到暂存区,还未commit之前
    git reset 先用Head指针覆盖当前的暂存区内容
    git checkout . 再用暂存区内容覆盖工作区内容
    或者使用 git reset –hard 直接使用head覆盖当前暂存区和工作区

  • 3.已经git commit,还未git push
    git reset –hard origin/master
    从远程仓库把代码取回来,然后覆盖本地仓库、本地暂存区和工作区

或者使用 git reset –hard last_commit_id,覆盖本地仓库、暂存区和工作区,

其中查看 last_commit_id 命令为 git log
或者使用 git reset –mixed last_commit_id 覆盖本地的暂存区,
再执行 git checkout . 覆盖本地工作区

  • 4.已经git push
  1. git reset –hard commit_id :当前head指针、工作区和暂存区内容全部改变为之前的commit_id版本
  2. git reset 最新的版本号 :移动HEAD指针改变暂存区,不改变工作区,工作区为之前commit_id版本,(直接push会报错,提示我当前的分支落后于线上分支,这步目的主要是移动HEAD指针) 或者 git push -f origin develop.