git学习

阅读数:493 评论数:0

跳转到新版页面

分类

git

正文

一、设置

1、全局设置

#设置一些全局量的值
git config --global 

git config --global user.name "cuihs"
git config --global user.email "cuisxxx@163.com"
#然后执行,之后只要有密码认证成功就会被保存
git config --global credential.helper store
#之后就不用每次都输入用户名和密码了
#如果修改了密码,需要清除凭证
git config --global --unset credential.helper
#除了--global,凭证还可以--system --local

# 查看全部设置
git config --global --list

二、使用

1、基本使用

#创建版本库
git init
#添加文件
git add .或指定文件
#提交
git commit -m 'first commit'

#新文件的提交到修改后的提交是一样的,都是先git add ,然后git commit

#上传
git push -u origin master

#查看变更内容
git diff
# 比较两个分支,显示出所有差异的文件列表
git diff branch1 branch2 --stat 
# 比较两个分支,显示指定文件的详细差异
git diff branch1 branch2 文件名(带路径)
# 比较两个分支,显示出所有有差异的文件的详细差异
git diff branch1 branch2
#跟踪所有改动过的文件
git add .
#跟踪指定的文件
git add file
#文件改名
git mv old new
#删除文件
git rm file
# 停止跟踪文件但不删除
git rm --cached file
#查看哪些文件是新添加的,哪些文件已加入暂存区域的
git status

2、分支

有两种分支比较有用:(1)支持项目的不同发布版本的分支(2)支持一个特定功能的开发的分支

# 新分支名和父分支名称
git branch RB_1.0 master

# 查看所有分支
git branch -a
#查看当前使用分支
git branch
#切换分支
git checkout 分支名
# 把命名为branchName的本地分支推送到服务器
git push origin branchName
#提示代码到远程服务器上命名为branchName的分支
git push origin branchName
# 从远程分支上拉取代码
git pull origin branchName

#创建并切换分支
git checkout -b 分支名

#合并分支
先切换到master  : git checkout master

git merge fenzhi (最后别忘了git push origin master)
可能会进入nano编辑提交页面,ctrl+x然后输入y再回车,就可以退出

#删除本地分支
git branch -d 分支名
#删除远程分支
git push origin --delete branch_name
#要想本地和远程都删除,必须要运行两个命令


#恢复分支
git branch 分支名 提交号

#查看分支图
git log --graph --pertty=oneline --abbrev-commit

#分支重命名
git branch -m 当前分支名  新分支名

#当我们发现本地分支信息没有更新时,可以通过下面的命令来更新一下分支信息
git remote update origin --prune

#更新分支
git pull origin 分支名
#推送
git add .
git commit -m "msg"
git push origin 分支名

3、clone

# 远程版本库的位置  本地目录(可选)
git clone git://github.com/xxx/xx.git mydir

4、.gitignore

把要忽略的文件名加到.gitignore文件中,而且Git支持统配符,可以用通配符设置要忽略的文件名称。

只需要清空一下git本地的缓存提交一次即可。

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
git push -u origin master

5、修改remote地址

// 查看所有远程仓库地址
git remote -v

// 方式一,直接修改
git remote set-url origin xxx.git

//方式二,先删后加
git remote rm origin
git remote add origin xxx.git

获取特定远程仓库的 URL
git remote get-url origin

6、cherry-pick

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见的需求。

一种情况是,你需要另一个分支的所有代码变动,那么就采用git merge;另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用cherry pick。

(1)基本用法

git cherry-pick <commitHash>

上面命令变会将指定的提交commitHash应用于当前分支。

 a - b - c - d   Master
         \
           e - f - g Feature

现在将提交f应用于master分支

# 切换到 master 分支
$ git checkout master

# Cherry pick 操作
$ git cherry-pick f
    a - b - c - d - f   Master
         \
           e - f - g Feature

git cherry-pick命令的参数,不一定是提交的hash值,分支名也是可以的,表示转移该分支的最新提交。

git cherry-pick feature

上面代码表示将feature分支的最近一次提交,转移到当前分支。

(2)转移多个提交

git cherry-pick <hashA><hashB>

如果想要转移一系列的连续提交,可以使用下面的简便语法

git cherry-pick A..B

上面的命令可以转移(A,B]的所有提交

git cherry-pick A^..B

上面的命令可以转移[A,B]的所有提交。

(3)配置项

-e, --edit 打开外部编辑器,编辑提交信息。
-n,--no-commit 只更新工作区和暂存区,不产生新的提交。
-x 在提交信息的末尾追加一行(cherry picked from commit....),方便以后查到这个提交是如何产生的。
-s,--signoff 在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作
-m parent-number,--mailine parent-number 如果原始提交是一个合并节点,来自于两个分支的合并,那么cherry-pick默认将失败,因为它不知道应该采用哪个分支的代码变动

(4)代码冲突

--continue 用户解决冲突后,第一步将修改后的文件重新加入暂存区(git add .),第二步使用git cherry-pick --continue
--abort 发生代码冲突后,放弃合并,回到操作前的样子。
--quit 发生代码冲突后,退出cherry pick,但不回到操作前的样子。

7、查看提交历史

#查看提交历史
git log
# 查看指定文件的提交历史
git log -p file
# 以列表方式查看指定文件的提交历史
git blame file

8、撤消

#撤消所有未提交文件的修改内容
git reset --hard HEAD
#撤消指定的未提交文件的修改内容
git checkout HEAD file
#撤消指定的提交
git revert commit

9、git stash

当在一个分支上开发工作未完成,需要切换到另一个分支开发时,可以使用git stash保存这个修改。

git stash 把当前修改保存,每次使用都会新加一个stash@{num}
git stash save '注释' 等同于git stash,会添加注释
git stash pop 恢复git栈中最新的一个stash@{num}
git stash list 显示当前stash的所内容
git stash apply stash@{num} 恢复内容到当前分支,但不会从堆栈中删除
git stash drop stash@{num} 从堆栈中移除指定stash
git stash show 显示堆栈中最新保存的stash和当前目录的差异

10、跟踪空目录

Git 不会跟踪空目录。这是因为 Git 是一个内容跟踪系统,而不是一个文件系统跟踪工具。如果一个目录中没有文件,Git 就没有内容可以跟踪。

然而,在实际开发中,我们有时候希望能够上传一个空目录到 Git 仓库中,比如为了保持项目的目录结构。为了实现这一点,通常的做法是在这个空目录中添加一个 .gitkeep 文件。.gitkeep 不是 Git 的标准文件,它实际上是一个空文件,由开发者约定俗成地用来让 Git 跟踪空目录。

请注意,.gitkeep 文件不是 Git 的官方部分,它只是一个社区采纳的惯例。实际上,你可以使用任何文件名来跟踪空目录。另一个常见的惯例是在空目录中添加名为 .keep 的文件。

三、网络协议

1、ssh

git@github.com/yourreposi/project.git

2、git

git://github.com/yourrepo/project.git

3、http/https

http://github.com/yourrepo/project.git

四、Tag以及Branch的区别

每次正式版本上线后,用于上线的那一时刻,commit的代码拉出来作为tag。开发人员可继续在当前开发分支上开发,准备下一个sprint的上线。

如果突然有紧急上线,可以在最新版本的tag的基础上新建一个分支:

git branch <branch name> <tag name>

然后checkout一下,在这个分支上进行紧急上线的开发。开发完成,上线后将新的代码merge到开发分支上,继续开发。

1、查看标签,可以加上参数 -l(列表形式列出) -n(附加说明)

git tag [-l -n]

2、查看符合检索条件的标签

git tag -l 1..

3、查看对应标签状态

git checkout 1.0.0

4、创建带备注标签(推荐)

git tag -a 1.0.0 -m "这是备注信息"

5、删除标签(本地)

git tag -d 1.0.0

6、将本地所有标签发布到远程仓库

git push origin --tags

7、指定版本发送

git push origin 1.0.0

 

 




相关推荐

1、登录你的git账号,然后fork项目。 <img src="http://1024s.top/mbstudy/image/id?id=34" width="1148" heig

https://npm.taobao.org/mirrors/git-for-

在使用 git pull 时,如果发生合并冲突或需要输入合并信息,Git 会调用默认的文本编辑器(通常是 nano 或 vim)来编辑合并信息。如果你不想使用 nano 或 vim,可以通过以下几种方