git学习

Posted xiangtingshen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git学习相关的知识,希望对你有一定的参考价值。

 

git 常用命令
获得版本库
git init
git clone

版本管理
git add 将已修改的文件纳入到暂存区
git commit 将暂存区提交到版本库
git rm 删除版本库中的特定文件

git rm --cached 从缓存区删除,文件回到工作区修改的状态
git reset HEAD <file> to unstatged

查看信息
git help 帮助信息
git diff 比较差别
git log 提交日志

远程协作
git push 拉取到本地
git pull 将本地版本信息推送到远程

git 提交的id (commit id ) 是一个摘要值,这个摘要值实际上是sha1计算出来的
可以通过id 寻找到特定的提交

对于user.name,user.email 有三个地方可以配置
1,/etc/gitconfig (几乎不使用) 全局 git config --system
2,~/.gitconfig (很常用) 针对当前用户 git config --global
3,针对于特定目录的,.git/config文件中 git config --local

git commit --amend --reset-author

===========================================================================================

git 添加,删除,修改,日志

1,git rm file 将误提交的文件删除--->先删掉,再提交
先删掉完成两个操作:rm file ,git add 到缓存区
然后再 git commit

如果误删,文件还在暂存区,以下命令恢复
git reset HEAD file 将待删除的文件从缓存区恢复到工作区
git checkout -- file 将工作中的修改丢弃掉
如果误删,文件已经commit到版本区


直接调用系统的rm 命令删除,文件不会纳入到缓存区,需要git add

2, 重命名 git mv <file1> <file2>

3, git commit --amend -m,修改上一次的提交记录

4, git log -n 查看最近的几条提交消息 git log -3

git 查看帮助文档
git help config
git config --help
man git-config

=====================================================================

.gitignore与分支

vi .gitignore
支持通配符 *.pro 所有以 .pro 结尾的文件git都会忽略,
!test.pro ,加“!” 表示test.pro除外

/TODO # 仅仅忽略项目根目录下的TODO,但不包括 subdir/TODO

build/ #忽略build/目录下的所有文件

doc/*.txt #会忽略doc/notes.txt 但不包括doc/server/arch.txt

/*/*.txt # 所有子目录下的.txt,一层子目录
/**/*.txt # 两层子目录

mkdir subdir && cd subdir 创建并进入目录

分支
git branch 查看分支
git branch new_branch 新建分支
git checkout new_branch 切换分支
git checkout - #切换回原来的分支


版本回退
回退到上一版本
git reset --hard HEAD^
git reset --hard HEAD~1
git reset --hard commit_id 回退

返回到某一版本
git reflog 查看操作记录


git checkout --test.c # 作用:丢弃掉相对于暂存区中的最后一个添加的文件
内容所做的变更

git reset HEAD test.c # 将之前添加到暂存区(stage,index暂存区也叫缓存区)
的内容从暂存区移除到工作区

分支改名
git branch -m branch_name1 branch_name2

保存工作现场
git stash 将当期修改暂存
git stash save "..."
git stash list 将所有保存的状态列出来

将暂存恢复:
git stash pop 恢复之后自动删除stash记录
git stash apply //恢复之后需要手动删除 git stash drop stash@{0}
git stash apply stash@{0} 指定恢复

=================================================

标签与diff
当需要发布一个版本的时候,或具有里程碑意义的时候,可以打一个标签
git tag v1.0
git tag v1.1 -m "..."

git blame # Show what revision and author last modified each line of a file


git log --graph 图形化显示log

diff
1,工作区与缓存区(或索引区)文件之间的差别
git diff
2,工作区与特定提交的id的差别
git diff commit_id
git diff HEAD :比较的是最新的提交与工作区的差别
3,缓存区与特定版本库之间的差别
git diff --cached commit_id #若不加id,则与最新的提交比较

===================================================================
远程协作
push 推送
pull 拉取,同时执行合并merge
pull == fetch + merge


git remote add origin https://github.com//....(仓库地址) # origin 对远程仓库起的别名
git@github.com
git push -u origin master # -u 表示关联 将本地的master与远程的master关联,以后再次
提交的时候就不用再指定master,之间使用git push就
将本地的master推送到远程的master

https:传输不加密,下次推送的时候还需要验证账户密码
ssh :需要将公钥放在远程,以后再推送就不用再验证密码

git remote add origin git@github.com 需要本地的私钥和公钥
git remote show origin

cd .ssh
vi known_hosts
生产公钥私钥
which ssh-keygen
/usr/bin/ssh-keygen

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xiangtingshen/.ssh/id_rsa):
回车,在.ssh目录下生成id_rsa id_rsa.pub
~/.ssh$ ls
id_rsa id_rsa.pub known_hosts
在git服务器上setting-->deploy keys,将公钥放进去(记得勾选allow write access),再次执行git remote show origin
git remote show origin
* remote origin
Fetch URL: git@github.com:xiangtingshen/learnGit.git
Push URL: git@github.com:xiangtingshen/learnGit.git
HEAD branch: (unknown)

再git push -u origin master 代码就可以提交到服务器上了


git remote show 查看远程仓库的名称
git remote show origin 查看远程仓库的详细信息

1.Gitflow
2.基于Git分支开发模型
develop分支(频繁变化的一个分支)开发人员
test分支(供测试与产品人员使用的一个分支,变化不是特别频繁)
master分支(生产发布分支,变化非常不频发的一个分支)
bugfix(hotfix)分支(当生产系统出现的紧急的bug,用于紧急修复的分支)


git branch -a
git branch -av

【15】

以上是关于git学习的主要内容,如果未能解决你的问题,请参考以下文章

git学习总结

Git学习——Git分支篇(未完)

Git系列学习-Git安装

git学习笔记

天天都在用Git,那么你系统学习过吗?学习过程

学习git