git命令学习

本地操作

git 本地提交流程

本地库初始化命令  git init

设置用户签名  

  项目/仓库级别  (只在当前项目有效) 信息保存在当前项目的 .git/config 文件内

    git config user.name  zhangsan

    git config user.email   lisi@qq.com

  系统用户级别(登录当前系统用户级别)信息保存在当前用户根目录的.gitconfig文件内,cd ~ , cat   .gitconfig

    git config --global user.name zhangsan

    git config --global user.email lisi@qq.com

  如果两个级别的都有设置,优先采用项目级别

本地项目操作 查看项目状态

 创建文件

将文件提交到暂存区

将文件从暂存区撤回

将文件从暂存区提交到本地库

 修改文件 再看看

使用 git add  再使用git commit 提交更新文件,或者直接使用 git commit -a -m "your words" 提交更新文件,区别是 后者无法撤回文件

查看代码版本记录

git log

git --pretty=oneline

git --online

git reflog

版本的前进与后退

1 基于索引值   git reset --hard d4114bf 

2 使用^(这个命令只能往后退)

git reset --hard  HEAD^(一个^表示后退一步,两个表示后退两步)

3 使用~

git reset --hard  HEAD~n (后退n步)

 #hard,soft,mixed 的区别

比较命令

此时 修改的数据还未提交 ,使用git diff aaa.txt 命令 比较的是工作区与暂存区的比较

git diff HEAD aaa.txt 工作区与本地库之间的比较

$ git diff HEAD^ aaa.txt  工作区和本地库的上一个版本比较

分支管理

git branch -v 查看分支

git branch test 创建分支 test

git checkout test  切换分支

合并分支,1 切换到 被合并的分支,2 执行 git merge 分支名 命令,执行完之后 两个分支就是同一个版本了

 分支合并时的冲突处理

当分支里 同一个文件的相同行的修改不一致时,git拿不定主意,自动合并会失败(同一文件的不同行有修改时 git可以自动合并),转为程序员手动合并,(关于冲突 不管是分支之间的冲突(就像下面演示的例子), 还是分支之内的冲突(多人基于同一个分支:比如test 开发),解决思路都是, 现将最新版的文件更新到本地 ,本地解决冲突 之后再做提交,再推送到仓库即可)

 制造冲突,

我们将master的内容合并到test 上去,可以看到有冲突

test分支处理冲突后再次提交

此时冲突已经解决 ,但是master和test版本不一致,我们再将test的内容合并到master上去,再看一下文件内容,问题已经解决了

 远程操作

在github上新建一个项目(本地也建立一个 并创建初始化文件, 并commit)

git remote -v 查看别名

git remote add origin https://github.com/Teemo-Java/Test-Code.git  设定别名

git push origin master  向远程仓库推送

 新建文件夹 并克隆项目

 可以看出来 ,git clone 命令有三个效果,1克隆项目 , 2 设定别名 , 3 初始化本地库

git fetch 与git merge 与git pull命令

现在远程分支的文件已经被修改了

我们使用git fetch抓取,发现本地文件并没有变(是因为fetch命令只帮我们下载了仓库文件 并没有修改工作区文件)

我们切换到远程仓库,可以看到我们将要拉取的内容看看文件

我们切换到自己仓库的分支 在进行merge操作,新的内容就可以看到了

此时我们再在线上修改文件 然后执行git  pull,看看效果

 

然后执行git pull 命令,可以看到 文件是直接被修改的

从上面可以看出来 git fetch +git merge = git pull,一般我们如果为了保险 可以先fetch 看看没有什么问题再合并,而 如果变动比较简单 我们可以直接用pull

SSH 与HTTP 方式

上面我们所有的操作都是基于HTTP方式来做的,我们也可以使用ssh来操作,使用ssh操作的好处是不用填写密码, 步骤是 我们首先在自己电脑里面生成一个ssh key, ssh-keygen -t rsa -C xx@qq.com,将生成的公钥id_rsa.pub  内容复制到自己git账号里面的 ssh keys里面去,然后我们就可以使用ssh的方式来操作啦,

使用ssh方式操作时,需要为ssh地址设置一个别名,然后后面所有的操作都对这个新的别名操作即可。

原文地址:https://www.cnblogs.com/tjqBlog/p/10663347.html