首页 > 其他 > 详细

Git常用命令

时间:2019-12-24 14:54:18      阅读:99      评论:0      收藏:0      [点我收藏+]

不解释区:

  git clone http://xxxx.git  克隆远程仓库

  git init           初始化本地仓库

  git status           查看仓库状态

  git add .           把工作区的所有修改添加到暂存区

  git add /src/xxx       把某个目录或文件添加到暂存区

 

git remote

  git remote 

    查看有哪些路由

    -v 查看路由带详细路径

  git remote add origin http://xxxx.git

    添加路由

  git remote rm origin git remote remove origin

    删除路由

  git remote rename origin origin_new

    路由重命名

  git remote set-url origin_nwe http://zzzz.git

    修改路由地址

 

git pull

  拉取远程代码

  一般情况下git pull 不会有问题,最多就是合并commit,有一种情况,git pull 会报错:fatal: refusing to merge unrelated histories,简单的说就是本地仓库和远程仓库是两个独立不相关的仓库,而他们都有自己的分支历史

  问题描述,在远程创建仓库的时候一般会有一个选项叫:是否创建readme.md文件,如果你勾选了,那么远程仓库是一个不纯净的仓库,因为他有自己的过去,这个时候, 本地仓库也不是用git clone 而是用git init,然后本地还有了commit,这个时候git pull 会报错,解决办法:git pull origin master --allow-unrelated-histories

 

git push

  推送本地修改到远程,第一次push时:git push -u origin master

 

git branch 

  git branch

    查看分支列表:-a  -v  -vv

  git branch <branchName>

    创建分支

  git checkout -b <branchName>

    创建+切换 分支

  git checkout -b <branchName> origin/<branchName>

    拉取远程分支到本地

  git branch --set-upstream-to=origin/master master

    关联远程分支, git branch --unset-upstream <branchName> 取消关联

  git push origin <branchName>:<branchName>

    推送本地分支(冒号前) 到远程(冒号后,没有会创建)

  git branch -d <branchName>

    删除本地分支,git branch -D <branchName> 强行删除,不管分支内有没有修改未提交的

  git push origin --delete <branchName>

    删除远程分支,并不会删除本地分支,本地分支如果也要删除 需要再删除本地分支

 

合并

  git merge <branchName>

    合并分支

  git cherry-pick commitId

    合并其它分支的某次commit到当前分支(注意只合一个commit会不会出现代码报错)

 

git reset --head

  版本回退,版本回退会撤销删除工作区和暂存区的修改,未跟踪的文件不受影响,所以在回退之前,如果工作区或暂存区的修改还有用,可以先stash 起来

  在git中,HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^ 上上一个,那个..我想回退100个版本...  HEAD~100

  git reset --head commitId 回退到commitId那次提交

  看以前的版本可以用git log看,但是如果从未来穿越到现在,再用git log是看不到未来的commit记录,那么又想回到未来可是找不到路?git reflog了解下

  远程回退:

    本地回退后,提交回退到远程:git push origin HEAD --force

  

撤销修改(git checkout -- & git rest HEAD)

  git checkout -- readme.txt

    命令git checkout -- readme.txt 意思就是,把readme.txt文件在工作区的修改撤销掉,这里有两种个情况:

    a. readme.txt自修改后还没有被放到暂存区(git add),现在,撤销修改就回到和版本库一模一样的状态

    b. readme.txt 已经添加到暂存区,又做了修改,现在,撤销修改就回到添加到暂存区后的状态(并不能撤销暂存区的修改,只是撤销添加到暂存区后  又修改的内容)

    总之:git checkout -- 就是让这个文件回到最近一次 git add 或者 git commit 的地方

  git reset HEAD <filename>

    git checkout -- 不能撤销已添加到暂存区的修改,但是git reset HEAD 可以

    git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区

    git reset HEAD readme.txt 执行后,使用git status 查看状态,会发现暂存没有待提交,而工作区有修改的

 

覆盖本地修改

  有些时候需要放弃本地修改,使用远程覆盖本地修改时

    git fetch --all  //把代码下载到本地,还未合并

    git reset --hard origin/master  //把本地仓库的HEAD指向到远程下载的HEAD,完成覆盖

 

git stash

  将上次commit之后的所有修改‘储藏’起来

  git stash 详解:http://www.softwhy.com/article-8628-1.html 参考,感谢

  git stash 默认采用 git stash push,具体查看上面详解链接区别git stash save(已不推荐使用)  

  最常用 git stash -m‘注释‘

    参数:

      -k (--keep-index)添加到暂存区的不储藏

      -p (--patch 我认为path理解更好) 指定某个文件

      -u (--include-untracked) 把未跟踪的也储藏起来,新建的文件,未执行过git add 就是未跟踪过的

      -a (--all) 把所有的修改储藏起来,包括被忽略的

      -m (--message) 描述说明储藏的东西,注释

    git stash list

      查看储藏列表

    git stash pop [index]

      默认压出第一个 git stash pop 0,stash是一个‘栈’结构,后进先出,最后一个stash进去的下标为0

    git stash drop [index]

      删除某次储藏

    git stash clear

      删除所有储藏

 

git log

  git log 默认输出最近几次提交,可以指定参数 git log -3 查看最近三次提交

  如果觉得输出的内容太多,可以:git log --pretty=online 一行展示

  如果觉一行展示,commit id太长的话:git log --pretty=oneline --abbrev-commit

  git show <commitId>

    查看某次提交改变内容

  git show <commitId> <filename>

    查看某次提交中某个文件的变化内容

  git log <filename>

    查看filename的相关提交记录

  git log -p <filename>

    查看filename每次提交的变化内容

git reflog

  从未来穿越到现在版本后,查找未来相关

Git常用命令

原文:https://www.cnblogs.com/aspt/p/11906493.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!