欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

git操作和命令

程序员文章站 2024-03-22 09:32:46
...

git基本流程与基本概念

git操作和命令

  1. workspace : 工作区,通俗来讲就是你在文件系统,ide中看到的文件,你可以直接修改的文件
  2. index : 暂存区 , 一个本地的缓冲区
  3. local repository : 本地仓库,里面有远程分支和本地分支, 处于本地,你不可以直接对其经行修改
  4. remote repository : 远程仓库,位于git服务器上,有效文件最终要提交到的地方

命令

一、 git clone

  1. 从远程主机克隆一个版本库
  2. 克隆版本库的时候,所使用的远程主机默认为origin。如果想用其他的主机名,需要用git clone命令的选项指定。

1.1 git clone <版本库的网址> <本地目录名> -o 设置远程主机名称

本地目录名不写,默认生成远程主机的版本库同名的目录
git clone https://gitee.com/DanShenGuiZu/learnDemo.git

git操作和命令

git  clone https://gitee.com/DanShenGuiZu/learnDemo.git  learnDemo2

git操作和命令

git  clone https://gitee.com/DanShenGuiZu/learnDemo.git  learnDemo3 -o master3

git操作和命令

二、 git remote

  1. 用于管理主机名

2.1 git remote

  1. 列出所有远程主机。

git操作和命令
git操作和命令

2.2 git remote -v

  1. 参看远程主机的网址

git操作和命令

2.3 git remote show <主机名>

  1. 查看该主机的详细信息

     git remote show master3
    

git操作和命令

2.4 git remote add <主机名> <网址>

  1. 用于添加远程主机名

     git remote add master4 https://gitee.com/DanShenGuiZu/learnDemo.git
    

git操作和命令
git操作和命令

2.5 git remote rm <主机名>

  1. 用于删除远程主机名

     git remote rm master4
    

git操作和命令

2.6 git remote rename <原主机名> <新主机名>

  1. 用于远程主机名

     git remote rename master3 master33
    

git操作和命令

三、git fetch

  1. 将远程主机版本库中有更新的代码,取回本地,取回的代码对你本地的代码没有影响。
  2. 默认取回所有分支(branch)的更新
  3. 想取回特定分支的更新,可以指定分支名。

3.1 git fetch <远程主机名>

  1. 上面命令将某个远程主机的更新,全部取回本地。

     git fetch master33
    

git操作和命令

3.2 git fetch <远程主机名> <分支名>

	git fetch master33 master
  1. 将master33主机的master分支 ,全部取回本地

git操作和命令

四、git branch

使用git fetch后(取回的更新),我们读取分支的命令

4.1 git branch -r

  1. 可以用来查看远程分支 git操作和命令

4.2 git branch -a

  1. 查看所有分支

git操作和命令

4.2.1解释

  • master :本地主机的当前分支是master
    remotes/master33/HEAD -> master33/master
    remotes/master33/master :远程主机分支是master33/master

4.3 git branch

  1. 列出本地已经存在的分支,并且在当前分支的前面加*号标记

git操作和命令

4.3 git branch branch5

  1. 创建一个新的本地分支branch5,需要注意,此处只是创建分支,不进行分支切换
    git操作和命令

4.4 git branch -m | -M oldbranch newbranch

  1. 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名

    git branch -m branch5 branch6
    git操作和命令

4.5 git branch -d | -D branchname

  1. 删除branchname分支

    git branch -d branch6

git操作和命令

4.6 git branch -d -r branchname 删除远程branchname分支

git branch -d   -r master44/branch4

git操作和命令

五、git checkout

  1. 创建一个新的分支

5.1 git checkout -b 新分支名称 远程分支名称

  1. 通过远程分支.创建一个新的分支

     git checkout -b branch2  master33/master
    

git操作和命令

六、git pull

  1. 取回远程主机某个分支的更新,再与本地的指定分支合并

6.1 git pull <远程主机名> <远程分支名>:<本地分支名>

  1. 取回远程主机的远程分支,与本地分支合并

6.1.1 git pull master33 master:branch2

  1. 取回远程主机master33的远程分支master,与本地分支branch2合并

6.1.2 git pull master33 master

  1. 取回远程主机master33的远程分支master,再与当前分支合并。等同于

    git fetch master33 master
    git merge branch2

git操作和命令

6.1.3 追踪关系(tracking)

  1. 在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。
    比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,
    也就是说,本地的branch2分支自动"追踪"master33/master分支。

  2. Git也允许手动建立追踪关系。

6.1.3.1 git branch --set-upstream branch2 master33/master

  1. 上面命令指定branch2分支追踪master33/master分支。
  2. 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

6.1.3.2 git pull master33

  1. 本地的当前分支自动与对应的master33主机"追踪分支"(remote-tracking branch)进行合并。
  2. 如果当前分支只有一个追踪分支,连远程主机名都可以省略。

6.1.3.3 git pull

上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase模式,可以使用–rebase选项。

6.1.3.3.1 git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
  1. 如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。

  2. 你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。

    git pull -p

    等同于下面的命令
    $ git fetch --prune master33
    $ git fetch -p

七、git push

将本地分支的更新,推送到远程主机 。

7.1 git push <远程主机名> <本地分支名>:<远程分支名>

  1. 将本地分支推送到远程主机的远程分支上
  2. 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

7.1.1 git push master44 branch4

  1. 将本地的master分支推送到origin主机的master分支。
  2. 如果后者不存在,则会被新建。
  3. 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

git操作和命令

7.1.1.1 git push master44 :branch2

	等同于
	git push master44 --delete branch2  
	上面命令表示删除master44主机的master分支。  
	如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

git操作和命令
git操作和命令

7.2 git push master44

  1. 上面命令表示,将当前分支推送到master44主机的对应分支。
  2. 如果当前分支只有一个追踪分支,那么主机名都可以省略。

7.3 git push

  1. 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

7.3.1 git push -u master44 branch4

  1. 将本地的branch4分支推送到master44主机,同时指定master44为默认主机,后面就可以不加任何参数使用git push了。
  2. 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
  3. Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。

git操作和命令

7.3.1.1 git config命令

	git config --global push.default matching
	或者
	git config --global push.default simple

git操作和命令

7.3.2 git push --all master44

  1. 不管是否存在对应的远程分支,将所有本地分支都推送到master44主机。
  2. 如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。
    git操作和命令

7.3.3 git push --force master44

  1. 强制本地分支覆盖远程主机上的版本。
  2. 除非你很确定要这样做,否则应该尽量避免使用–force选项。
  3. git push不会推送标签(tag),除非使用–tags选项。

git操作和命令

7.3.4 git push master44 --tags

  1. 推送标签(tag)

git操作和命令

八 常用命令

8.1 git remte origin set-url URL

  1. 修改远程分支命令

8.2 git diff master origin/master

  1. 比较本地分支和远程分支的差异

8.3 git rebase origin/master

  1. 改写当前分支的历史版本与origin/master保持一致
  2. 此方法可以维持树形结构但是不会merge操作,会完全覆盖上一版本
    ##8.4 git merge origin/master
  3. fetch之后,可以合并到当前分支,树形结构不能维持

8.5 git diff

  1. 可以产看当前有没有add 的内容修改

8.6 git diff --cached

  1. 查看已经add 没有commit 的改动

8.7 git log test.txt

  1. 查看某个文件的日志

8.8 git clone xxx.git

  1. clone 到当前路径

8.9 git clone xxx.git “指定目录”

  1. clone到指定目录

8.10 git clone -b [new_branch_name] xxx.git

clone时创建新的分支替代默认Origin HEAD(master)

8.11 git add

  1. 添加文件

8.12 git rm

  1. 删除文件

8.13 git commit a.txt -m ‘v1’

  1. 提交文件

8.14 git revert HEAD

  1. 撤销前一次 commit

8.15 git revert HEAD^

  1. 撤销前前一次 commit

8.16 git revert 5dfb61e9c5a074ace72998f384915c0b00ae6487

  1. 撤销指定的版本,撤销也会作为一次提交进行保存。

8.17 git reset –hard fcd23f90c229a63ea457b65ab39d18d8a29824d1

  1. 彻底回退到某个版本,本地的源码也会变为上一个版本的内容

8.18 git reset --hard fcd23f90c229a63ea457b65ab39d18d8a29824d1

  1. 远程仓库的目录下对应的文件还是之前的内容,必须得使用git reset --hard才能看到push后的内容
  2. reset是指将当前head的内容重置,不会留任何痕迹。

8.19 git reset -–soft fcd23f90c229a63ea457b65ab39d18d8a29824d1

  1. 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。
  2. 如果还要提交,直接commit即可

8.20 git config receive.denyCurrentBranch ignore

  1. 解决push时 refusing to update checked out branch: refs/heads/master

8.21 git config core.autocrlf false

  1. 解决add时 warning: LF will be replaced by CRLF in XXXXXXXXXXXXXX.

8.22 git status

  1. 查看当前git仓库的状态

8.23 git log --pretty=oneline >> log.txt

  1. 列出代码的所有改动历史,将他保存到一个文件中

九、设置用户名

9.1 git config --global user.name “wirelessqa”

  1. 配置全局用户名

9.2 git config --global user.email aaa@qq.com

  1. 配置全局邮件

9.3 git config --list

  1. 查看配置列表

git操作和命令

十、git日常操作

初始化仓库: Git init

查看隐藏文件: ls -al

查看git配置: git config

仓库级(全局)修改用户名: git config --local(global) user.name ‘CloudBai’

仓库级(全局)修改用户邮箱: git config --local(global) user.email ‘aaa@qq.com’

仓库级(全局)删除用户名: git config --local(global) --unset user.name

仓库级(全局)删除用户邮箱: git config --local(global) --unset user.email

更新所有文件的用户名和邮箱: git commit --amend --reset-author

查看所有配置信息: git config --list

查看用户名配置: git config user.name

查看用户邮箱配置: git config user.email

将文件状态加入git暂存区: git add (git add . 会把当前目录下所以文件加入暂存区)

回到文件未修改状态(丢弃掉新增的相对于暂存区最后一次文件提交的内容): git checkout –

从git暂存区移除文件: git rm --cached || git reset head

将暂存区文件提交: git commit -m ”注释“

查看历史提交记录: git log (参数- 2可以让他只显示前2条记录)

查看历史操作记录: git relog (常用于版本回退后的历史查看。)

删除文件: git rm (删除后要提交更改)

重命名文件: git mv

修正上一次消息提交的注释: git commit --amend -m ‘提交注释’

查看文件的修改历史: git blame

添加别名: git config --global alias.<别名> <命令名> (命令名如何过长的话用’’号括起来,外部命令的话命令名前面加!号。不加的话默认git会在你的别名命令执行前面加上git)

新建标签: git tag -a <标签名> -m <注释>

查看标签: git show <标签名>

删除标签: git tag -d <标签名>

提交标签: git push origin <标签名>

提交全部标签: git push origin --tags

删除远程标签: git push origin --delete tag <标签名>

删除本地标签: git tag -d <标签名>

拉取远程标签: git fetch origin tag <标签名>

查看仓库所有分支: git branch (-av参数可以查看远程分支)

新建分支: git branch <分支名> (新建分支并切换到该分支用git checkout -b <分支名>)

切换分支: git checkout <分支名>

删除分支: git branch -d <分支名> (如果分支未合并的话删除得用-D)

合并分支: git merge <分支名>

分支改名: git branch -m <原分支名> <更改的分支名>

比较暂存区与工作区文件之间的差异: git diff

比较最新的提交与工作区文件之间的差异: git diff HEAD

比较最新的提交与暂存区文件之间的差异: git diff -cached

相关标签: 架构