当前位置:   article > 正文

git 详解_git discard

git discard

1.git架构原理
2.基本配置
3.我们如何使用git

##git架构原理
这里写图片描述

这就是git的架构,看了这幅架构图你就知道git是如何工作的,也就大概知道我们自己应该如何来工作

##基本配置

git init  #初始化仓库
  • 1
#每一个git仓库都需要配置自己的用户名和email
git config --global user.name baixiaoshi
git config --global user.email 634842632@qq.com 
  • 1
  • 2
  • 3
git clone remote_repo_url
  • 1
#查看本地分支,远程分支,全部分支
git branch
git branch -r #查看远程分支
git branch -a #查看全部分支
git branch -vv #查看本地分支与远端分支的关系

git show # 获取tag列表

#添加分支
git branch new_branch_name
#在本地新建local_dev分支,并与remote_dev远程分支建立追踪关系,本地分支存在报错,新建出来的分支内容和远程分支一样
git branch --track local_dev origin/remote_dev
#本地已存在的分支可以这样建立关联
git branch --set-upstream-to=origin/<branch> 
本地创建新分支是已本地分支当前状态为准的

本地的修改如果没有commit的话,如果你此时git checkout other_branch上,则修改也会被带到新分支上,直到有一个分支提交就终结了,

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
#查看当前git的地址
git remote
git remote -v#查看 origin代表的路径

  • 1
  • 2
  • 3
  • 4

这里写图片描述

#切换分支
git checkout branch_name
  • 1
  • 2
#合并分支(首先切换到合并到的分支)
git merge will_merge_branch_name
  • 1
  • 2
#从远端拉取其他开发者的代码
git push <远程主机名> <本地分支名>:<远程分支名>
git push <远程主机名> :<远程分支名>
git push <远程主机名> --delete <远程分支名称>
git pull <远程主机名> <远程分支名>:<本地分支名>

#拉下远程主机所有分支的修改
git fetch <远程主机名>
#拉下远程主机某个分支的修改
git fetch <远程主机名> <分支名>

fetch拉下来后并不会自动合并

比如我在任何一个分支git fetch会拉下所有主机的修改
再执行 git merge origin/master 将本地分支与拉下来的远程分支进行合并,这就相当于pull了,记住fetch拉下来的远程分支是在本地的



#远程分支的命名

远程分支在远程 origin master
远程分支在本地 origin/master 显示有区别
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
#如果在当前分支上面开发的时候突然发现需要切换到别的分支先完成别的工作的话,这个时候我们不推荐使用add,commit,因为一旦commit就会有log,所以这样不好管理,所以先直行
git stash(执行之前文件必须执行 git add)
#查看暂存的列表
git stash list
#删除暂存
git stash drop stash@{0}
#当切换回分支的时候执行
git stash apply
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
#添加git到版本库中
git add filename
#提交文件到仓库中
git commit filename -m '注释'
#查看日志
git log
#查看状态
git status(理清当前情况就是看status的情况就知道了)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
#git rebase的用法
其实就是将当前分支的提交接在了他的分支下面,让他的分支也能感知父分支的变化,实际中的分支顺序和图中有点不一样,不过含义是一样的



  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

stage file 和unstage file reset和discard

stage file 其实就是add的含义   unstage file 就是撤销提交到工作目录,但是修改的内容恢复未add状态

git checkout . 放弃本地所有的修改

reset和discard是一个意思,就是撤销工作目录的修改

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

git reset filename #将一个文件从暂存区弹到工作区

reverse hunk 撤销一个文件的所有修改,相当于reset

reverse selected line 撤销选中行,哈哈,这个可以一点一点的撤销

#撤销本地commit
git revert HEAD                撤销前一次 commit
git revert HEAD^               撤销前前一次 commit
git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里写图片描述
##我们如何使用git

就我自己的工作而言,一般还是喜欢集中式管理,也就是svn这种管理方式,因为一个项目开发的成员并不会特别多,所以这种方式应该是我们经常会用到的,也就是每次提交之前先拉去最新代码,和本地合并,解决冲突后再提交到开发分支上,测试没问题就可以合并到主干分支上了.

# 删除 untracked files
git clean -f
 
# 连 untracked 的目录也一起删掉
git clean -fd
 
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
 
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
git中解决冲突
<<<<<<< HEAD
当前分支内容
=======
要合并的分支的内容
>>>>>>> dev
#解决冲突之后必须用
git commit -am filename 提交
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

git解决stash冲突
这里写图片描述

规律:上面是当前分支,后面的是要合并的分支

#阮一峰的命令大全
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html



  • 1
  • 2
  • 3
  • 4
  • 5

##git忽略文件

1.没有加入到版本跟踪(track)的文件的文件直接可以在.gitignore 文件中配置即可
2.对于已经提交到版本库中(已经被版本库跟踪了的文件)做法如下:

2.1备份需要忽略的文件
2.2 删除需要忽略的文件
2.3 执行以下命令:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
  • 1
  • 2
  • 3

2.4 在.gitignore文件中配置要忽略的文件,然后把刚刚的文件复制回来

按上面的步骤就可以忽略一个已经被版本库控制的文件。

如果需要取消忽略的话,直接在.gitignore文件中删除就可以了。

###Git Tag标签管理
标签的创建、删除

git tag t1,从当前分支创建一个名为t1的标签 (添加轻量标签)
git tag -a v0.0.1 -m "注释" (添加附注版本)
git tag -d t1,删除名为t1的标签
git show v0.0.1 查看指定tag的版本的信息

git push origin v0.0.1 将本地tag提交到远程
git push origin –tags 将本地所有tag提交到远程

git checkout v0.0.1 指针指向一个tag,但是分支是空的
	
git fetch origin tag <tagname> 获取远程tag
git ls-remote 查看远程tag

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

##gitlab详解

####GitLib权限管理

GitLib有五种身份权限,分别是:
Owner 项目所有者,拥有所有的操作权限
Master 项目的管理者,除更改、删除项目元信息外其它操作均可
Developer 项目的开发人员,做一些开发工作,对受保护内容无权限
Reporter 项目的报告者,只有项目的读权限,可以创建代码片断
Guest 项目的游客,只能提交问题和评论内容
具体参见GitLab权限,为项目添加成员时可指定成员的身份权限。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

####git将文件移出版本库

git rm -r dirname --cached
  • 1

##SourceTree设置账号的地方

//git设置
1.git本身在项目目录下面 vim $projectDir/.git/config下面有一个配置信息
2.git 全局的配置文件 vim ~/.gitconfig配置文件

3.ssh对应关系在 ~/.ssh/config下

//sourcetree设置

1.仓库设置-》高级-》
2.偏好设置-》账户
3.偏好设置-》网络

对一个空项目,如何和远程项目管理起来呢

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

cd 项目目录


git init
# 第一种,修改远程URI
git remote set-url origin [url] # 修改远程URI

#第二种,添加远程URI
git remote rm origin
git remote add origin [url]

#第三种,直接修改config文件



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/487829
推荐阅读
相关标签
  

闽ICP备14008679号