Git使用总结

来源:互联网 发布:网站编辑seo是什么 编辑:程序博客网 时间:2024/06/08 16:26

git使用总结

1.git远程仓库地址变更本地如何修改

以项目git_test为例:
old url:https://code.aliyun.com/miaogs/ao_alink_dr_5031.git
远程仓库名字:originforao
new url: https://code.aliyun.com/mxchip-ap/miaogs_projects.git
远程仓库名字:origin

1.1通过命令直接修改远程地址

  1. cd git_test
  2. git remote –查看所有远程仓库,git remote -v–查看指定远程仓库地址
  3. git remote set-url origin https://code.aliyun.com/mxchip-ap/miaogs_projects.git
    这个方法只是将原来远程仓库的url切换了,远程仓库的名称还是originforao,如果想把远程仓库的名字改为origin可以使用第二个方法。删除原来的远程分支,再添加一个名字是origin的远程分支。

1.2通过命令先删除再添加远程仓库

  1. cd git_test
  2. git remote –查看所有远程仓库,git remote xxx查看指定远程仓库地址
  3. git remote rm origin
  4. git remote add origin https://code.aliyun.com/mxchip-ap/miaogs_projects.git

1.3直接修改配置文件

  1. cd git_test/.git
  2. vim config

    [core] repositoryformatversion = 0 filemode = true logallrefupdates = true precomposeunicode = true [remote "origin"] url = https://code.aliyun.com/miaogs/ao_alink_dr_5031.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master 

修改[remote “origin”]下面的url即可。

1.4通过第三方git客户端

以SourceTree为例,点击 仓库 -> 仓库配置 -> 远程仓库 即可管理此项目中配置的所有远程仓库, 而且这个界面最下方还可以点击编辑配置文件,同样可以完成方法三。

2.git远程仓库地址变更本地修改之后提交代码

  1. 先使用git status检查本地使用由修改或者添加的文件;
  2. 如果有的话使用git add .添加全部或者git add xxx指定添加xxx文件;
  3. 使用git commit -m "log"提交,其中log是日志;
  4. 如果是第一次push,需要使用以下指令:git push -u origin [new remote repository address]
    其中origin表示远程仓库名称,[new remote repository address]是远程仓库的push目标分支。-u (推测为update缩写^_^~)表示本地分支将建立对远程仓库目标分支的检测,如果远程仓库目标分支不存在,将新建分支再push;如果存在,将进行push更新。否则会出现 fatal: The current branch A.O_WF_3162 has no upstream branch.的错误。以后提交可以使用git push origin [new remote repository address]或者git push

3.git远程仓库建立新的分支同步到本地

使用git remote update更新一下云端分支记录
注:
1. git branch–查看本地的分支记录
1. git branch -r–查看云端分支记录
1. git branch -a–查看本地的分支以及云端分支记录

4.git删除、重命名远程分支和tag

4.1 git删除远程分支

可以删除远程分支:git push origin --delete <branchName>

4.2 git删除远程tag

可以删除远程tag:git push origin --delete tag <tagname>

4.3 git删除不存在对应远程分支的本地分支

可以使用:git remote prune origin或者在fetch之后删除掉没有与远程分支对应的本地分支git fetch -p

4.4 git重命名远程分支

在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。

例如下面的例子中,我需要把 devel 分支重命名为 develop 分支:
1. 删除远程分支: git push --delete origin devel
2. 重命名本地分支: git branch -m devel develop
3. 推送本地分支:git push origin develop

如果devel是项目的默认分支,需要以下操作:
1. 进入github中该项目的Setting页面;
2. 设置DeFAULT Branch为其他分支;
3. 重新执行删除远程分支命令。

4.5 git把本地tag推送到远程

git push --tags

4.6 git获取远程tag

git fetch origin tag <tagname>

5.git撤销本地修改与回退版本

5.1使用git checkout撤销本地修改

即放弃对本地已修改但尚未提交的文件的修改,还原其到未修改前的状态。
注意: 已add/commit的文件不适用个方法,应该用本文的5.2
命令如下:

git checkout .      # 撤销对所有已修改但未提交的文件的修改,但不包括新增的文件git checkout [filename]     # 撤销对指定文件的修改,[filename]为文件名

5.2使用git reset回退项目版本

可以回退到任意已经提交过的版本。已add/commit但未push的文件也适用。
命令如下:

git reset --hard [commit-hashcode]  # [commit-hashcode]是某个 commit 的哈希值,可以用 git log 查看     

还有另外的办法:

git reset --hard HEAD^   # 回滚git版本到上一次提交时候的状态git reset --hard HEAD^^  # 回滚git版本到上上次提交时候的状态git reset --hard HEAD~20 # 回滚git版本到上20次提交时候的状态 

一般用法是先使用git log查看具体的commit的哈希值,然后reset到那个版本;

使用git log查看一下:

miaogs@DESKTOP-E1D5SQI MINGW64 /e/9.MICO/2.project/HONYAR/alink/2.code/alink_HONYAR_SceneLed (master)$ git logcommit 72ad7a8fd149e09f318573fe98c24ca29f89d5dfAuthor: miaogs <miaogs@mxchip.com>Date:   Fri Oct 20 16:29:34 2017 +0800    1、修改了上报下发参数,支持四舍五入;    2、固件版本:0712.LD01.AL00commit ed2c582c8c24091708e3d799e81869125f0d4c08Author: miaogs <miaogs@mxchip.com>Date:   Mon Oct 9 16:27:49 2017 +0800    阿里平台 鸿雁情景灯 domecommit 5eaec71dcf14f1e5fdb51b4519fb5e02c80ca4eeAuthor: dingqq <dingqq@mxchip.com>Date:   Wed Sep 27 16:09:49 2017 +0800    alin_emb v3 增加透传 democommit af7e9dfeead2bfef043b26175a3b93b1b92393a3Author: dingqq <dingqq@mxchip.com>Date:   Fri Sep 22 09:54:34 2017 +0800    synccommit 61b98967629d67ef3c3431c12f3badb7ccf8ee83Author: dingqq <dingqq@mxchip.com>Date:   Wed Sep 20 10:56:03 2017 +0800

退回到 commit 72ad7a8fd149e09f318573fe98c24ca29f89d5df 这个版本:

miaogs@DESKTOP-E1D5SQI MINGW64 /e/9.MICO/2.project/HONYAR/alink/2.code/alink_HONYAR_SceneLed (master)$ git reset --hard 72ad7a8fd149e09f318573fe98c24ca29f89d5dfHEAD is now at 72ad7a8 1、修改了上报下发参数,支持四舍五入;

查看一下当前的版本信息,看看是否回退成功:

miaogs@DESKTOP-E1D5SQI MINGW64 /e/9.MICO/2.project/HONYAR/alink/2.code/alink_HONYAR_SceneLed (master)$ git logcommit 72ad7a8fd149e09f318573fe98c24ca29f89d5dfAuthor: miaogs <miaogs@mxchip.com>Date:   Fri Oct 20 16:29:34 2017 +0800    1、修改了上报下发参数,支持四舍五入;    2、固件版本:0712.LD01.AL00commit ed2c582c8c24091708e3d799e81869125f0d4c08Author: miaogs <miaogs@mxchip.com>Date:   Mon Oct 9 16:27:49 2017 +0800    阿里平台 鸿雁情景灯 domecommit 5eaec71dcf14f1e5fdb51b4519fb5e02c80ca4eeAuthor: dingqq <dingqq@mxchip.com>Date:   Wed Sep 27 16:09:49 2017 +0800    alin_emb v3 增加透传 democommit af7e9dfeead2bfef043b26175a3b93b1b92393a3Author: dingqq <dingqq@mxchip.com>Date:   Fri Sep 22 09:54:34 2017 +0800    synccommit 61b98967629d67ef3c3431c12f3badb7ccf8ee83Author: dingqq <dingqq@mxchip.com>Date:   Wed Sep 20 10:56:03 2017 +0800

6.撤销修改以及版本回退

首先有两个常用的命令:

  • git status:命令可以列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件。
  • git diff:用于比较两次修改的差异。

    • 比较工作区和暂存区
      git diff 查看尚未暂存的文件更新了哪些部分,不加参数直接输入
      此命令比较的是工作目录(Working tree)和暂存区快照(index亦称staged)之间的差异。也就是修改之后还没有暂存起来的变化内容。

    • 比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
      git diff --cached [<path>...]

    • 比较工作区与最新本地版本库
      git diff HEAD [<path>...] 如果HEAD指向的是master分支,那么HEAD还可以换成master

    • 比较工作区与指定commit-id的差异
      git diff commit-id [<path>...]

    • 比较暂存区与指定commit-id的差异
      git diff --cached [<commit-id>] [<path>...]

    • 比较两个commit-id之间的差异
      git diff [<commit-id>] [<commit-id>]

原创粉丝点击