GIT

六一儿童节快乐!

记得第一次接触博客园的时候是两年前的时候啦,那时图一时好玩去做笔记,果然三分钟热度,时隔两年不仅没有好好做笔记,

还觉得以前的笔记更烂啦,索性都删啦,立个flag,以后好好做好笔记,慢慢提升自己。

 

linux下安装git

1. 安装git

 sudo apt-get install git

2. 生成密钥

   git config --global user.name "your name"

 git config --global user.email "email@example.com"

    ssh-keygen -t rsa -C  "email@example.com"

  

 github添加秘钥:

 

 GIT常用命令

git clone (git 仓库地址)  (本地名)

git clone  (git 仓库地址) -b (新建分支名)

 

 

第一步:提交到暂存区
git add

git add   .          添加所有修改文件到暂存区

git add  -i          

第二步:提交到本地仓库
git commit


提交已经被add进来的改动.
git commit -m “the commit message"       添加提示信息
git commit -a                                             会先把所有已经track的文件的改动add进来,然后提交(有点像svn的一次提交,不用先暂存). 对于没有track的文件,还是需要git add一下.
git commit --amend                                   增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消.

第三步:提交到远程分支


稳妥做法:

git   show  看一下
git pull    将远程分支拉下,看是否有冲突
有冲突解决方法
1. git stash                                       备份当前工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
2. git pull
3. git stash pop                                从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。(此时所有的暂存都将被add需要git reset HEAD .)

 git  push                                                   提交

 

错误
untrack 表示是新文件,没有被add过,是为未跟踪的意思。

git clean -f             删除 untracked files
git clean -fd           untracked 的目录也一起删掉
git clean -xfd          gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

加-n可以看到被删除文件

not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意

 

在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd

问题:

error: Unable to create 'E:/liuguangsheng-git/2G_RTOS/.git/index.lock': File exists.

Another git process seems to be running in this repository, e.g.

an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
Updating 715c0868..ecf68eda

解决: 删除  .git/index.lock


查看

git diff                           文件或目录 (修改过后)    没有add
git diff --cached           文件或目录 查看(git add 修改过的信息)commit过后看不到
git remote -v             查看远程库消息

git  branch -vv             查看本地分支和远程分支的联系
git config --list        查看配置
git log          查看(commit)提交记录
git status                     查看git状态
git stash                      用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作.

git  show    commitID         查看提交修改

撤回

撤回                              https://blog.csdn.net/lingfeng5/article/details/76167102 (未push)       https://blog.csdn.net/sodaslay/article/details/72948722(push)

(未push)
git reset HEAD .           撤回所有add 操作(会保存工作区的修改)
git reset HEAD^           撤回commit上一次的操作(会保留本次内容)
git reset HEAD id         撤回commit操作(会保留本次内容)
git reset HEAD filename         撤回某个文件的add操作

(push)

git revert                       反转  增加的删除  删除的增加

git reset --hard e377f60e28c8b84158        回退到某个版本

git reflog

当你git reset后,后悔时

git reset --hard 98abc5a

 

添加

git  add

git commit --amend        本次commit提交过后,再次提交(没有push)

git  commit --amend       文件打开会在修改问题描述

 

 场景1:

有一些修改的文件,但不需要提交,但会影响下一次提交,可以这样:

git  stash       ------- 将这些文件暂存起来,回到干净的工作区

git  stash  pop     -------找回这些文件

 

分支与仓库的区别:
分支用于多人开发使用
用来管理仓库

合并分支  当你在两个分支进行开发时  branch1    branch2  

克隆
git clone git@192.168.133.11:tmajor/hisi4.4_3798MVXX.git -b chinamobile_shandong_fs
克隆 远程仓库 并创建分支(创建的分支和远程存在的分支相同)

1. 在本地仓库创建远程分支

git  branch  branch1                         创建本地分支

git  checkout  branch1                     切换到本地分支branch1

git  push  origin   branch1                将本地分支branch1发布到远程仓库github

git  branch  -d     branch1      删除本地分支

git push origin :newBranch                      在github远程端删除一个分支

git push origin –delete newBranch        在github远程端删除一个分支 

2. 克隆远程分支进行开发

git clone git@github.com:Run-world/linux-files.git -b branch1                  克隆远程分支下来,进行开发

3. 合并分支branch1到branch2

git   pull  origin branch1        更新本地分支(在branch1)

git  merge  branch1              合并分支(在branch2)

4. branch1, branch2. 如果我想把branch1分支上的某几个commit合并到branch2分支

在branch2

git  cherry-pick   commitID1    commitID2      commitID3                  合并多个branch1的多个commit到branch2 

解决冲突

git status   查看冲突代码

<<<<<<< HEAD

本地分支代码

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

其他分支代码

>>>>>>>>>>>>

<<<<<<< Updated upstream

pull  下来的代码
=======

本地修改的代码
>>>>>>> Stashed changes

然后:

git add  file                      git  cherry-up  --continue

或者

git  commit

最后

git  pull

git push

https://segmentfault.com/a/1190000003015386

https://blog.csdn.net/fightfightfight/article/details/81039050

 git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支

场景描述:

A在master下进行开发,此时发现一个bug所以就创建了一个branch1分支,后来他发现他自己搞定不了,就让B去clone这个branch1分支,两个人共同开发,在主分支master下还有c在开发,通过远程分支进行同步。

 

 

使用场景:

  小明今天工作时,提交代码时,git pull发现自己的代码不是最新的,服务器的代码领先一个提交, 小明很紧张,还没遇到过这种情况,于是一顿操作后,

发现和自己本地分支自动合并啦,小明一看代码,wc,不是我想要的,想回退这个合并,自己又不会,就去上报领导,领导二话没说,发给他下面一串命令,去吧。

分支合并撤回强制解决

1. git reset --hard 目标版本号
2. git push -f(强制提交, 谨慎使用大兄弟)

posted @ 2018-09-19 08:23  大忽悠  阅读(253)  评论(0)    收藏  举报