git使用

Posted

tags:

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

git

初学git

个人觉得理解git最关键在理解分支
首先要理解一个东西叫当前分支
git branch可以查看本地库所有分支,前面有*号的就是当前分支,工作区中显示的内容就是当前分支的内容,所有的操作都是针对当前分支的

1、基本操作

查看本地修改状态
git status
-s查看简短信息

修改提交到本地暂存区
git add

查看本地库状态
git log
一个好看的log形式:
git log --oneline --graph --decorate
为上面这个长命令指定一个别名
git config alias.lg "log --oneline --graph --decorate"

本地暂存区提交到本地库
git commit
-m 指定附加信息
注意:直接使用git commit -am可以替代git add+git commit -m的功能

本地库回滚
git reset --hard HEAD^
#注意如果是CMD下的话^符号要加双引号

查看有哪些分支
git branch
-r查看远程 -a查看所有


创建新分支(默认在当前分支基础上创建,创建后不切换到新分支)
git branch 新分支名字

切换当前分支
git checkout 切换到的分支名字

创建新分支并切换到新分支(上面两条命令的结合)
git checkout -b 新分支名字


合并分支:将其他分支融合到当前分支中(改变的是当前分支)
git merge 要合到当前分支的分支的名字
(两个分支A,B,如果分支A中存在分支B没有的内容,而分支B中不存在分支A没有的内容(分支A真包含分支B),则合并结果为分支A,不论A是当前分支还是合并到当前分支的分支)
冲突解决:
合并后如果出现冲突,git会要求你解决冲突后才能checkout到别的分支去(目前能想到的解决冲突的方法是手动改或reset)

合并分支默认是fast forward模式,也就是直接把当前分支的指针指向要合并到当前分支的分支,但不是所有的情况下都适合用fast forward的,后续学习到会继续更新

 

删除分支:

git branch -d 要删除的分支名字


远程克隆到本地:
git clone
-b 指定单独克隆某一个分支

远程更新到本地:
git pull/git fetch(git pull=git fetch+git merge)

本地提交到远程:
git push


2、开发流程

给你一个项目的时候
从远端将项目clone下来
一般地,clone下来的项目里面的分支有master,develop,和其他开发者的feature

在本地创建你自己的feature,基于develop

添加你自己的功能,commit到本地分支,把修改push到远端……
feature的过程中:
写对了,则commit,然后push到远端(最好经常push一下正确的代码)
写错了,则commit,然后删除本地的feature分支,然后将远端的feature分支pull下来(或fetch下来merge),实现回退到上一版本
不要轻易用reset,容易有一些奇奇怪怪的错误。

你的feature写完,测试可以运行之后,就要在本地把feature和develop融合了,在这之前先pull更新一下develop,然后将feature finished,将feature与develop融合并删除feature分支
将新的develop push到远端,新功能完成。

3、流程
1)使用ssh登陆git远程服务器

linux下:
ssh-keygen -t rsa -C "[email protected]meitu.com"
然后会告诉你生成的私钥文件名和公钥文件名,并问提示你公钥私钥存放的路径,不用管直接回车
然后cd ~/.ssh文件夹下根据上一行告诉你的文件名找到后缀为.pub的公钥文件,将文件内容复制到git远程服务器中指定位置

SSH协议使用了RSA加密算法
RSA加密算法是一种非对称加密算法

https中使用了非对称加密:
非对称加密,是为了保证公钥持有者(用户)向私钥持有者(服务器)发送消息时,不被其他公钥持有者(其他用户)劫持消息并解密
公钥和私钥都在服务器端生成,生成后公钥被公开发送给用户
然后用户就可以用公钥加密自己想要单独传给服务器而不被其他用户破译的消息了
https中,用户想要发送的不被其他用户破译的消息其实就是用户和服务器之间使用的对称加密的密钥,在用户处使用随机数生成

那么git为什么要使用非对称加密?
实际上是使用了“公钥登陆”方法,免除了每次pull,push都要登陆的麻烦
所谓"公钥登录",就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个

2)clone到本地
git clone 远程仓库地址
如果要单独克隆某个分支:
git clone -b 要克隆的分支名 远程仓库地址

3)branch查看分支
一个没有任何提交的项目,克隆下来后用git branch查看是看不到任何分支的
因为分支branch实际上是指向某次提交的指针,如果一个项目连一次提交都没有,那么也就没有任何分支
git会在第一次提交时自动创建一个master分支(指针)指向第一次提交

4)给git命令指定一个别名
git config alias.st status
status命令指定一个别名st,然后接下来你就可以这样查看工作区状态了——git st

4、smartgit使用
smartgit中打开本地库:
repository->add or create 或 clone

创建master-release/hotfix-develop-feature工作流:
Branch->Git Flow->Configure(弹出的对话框选Full,确定)

在工作流中创建新的分支:
Git Flow图标->start feature/start hotfix/start release

feature写完了,合并到develop并删除该feature:
Git Flow图标->finish feature(弹出对话框后选第一种,确定)

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

git使用-git使用流程

Git认识与使用 Git

Git认识与使用 Git

Git认识与使用 Git

Git认识与使用 Git

Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit