git入门笔记

1.create repository

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

使用命令git add <file>,注意,可反复多次使用,添加多个文件;
使用命令git commit -m <message>,完成。

2.时光穿梭机

2.1 版本回退

HEAD >> current version
HEAD^ >> 上一个版本
HEAD^^ >> 往上第二个版本
HEAD~100 >> 往上第一百个版本


### git log 
git log --pretty=oneline --abbrev-commit
查看commit history,当前session
### git reflog 
查看commit history,所有的
### git reset --hard versionid
根据上面2个命令可以查到历史的版本号,然后进行回退。

2.2工作区(Working Directory)& 版本库(Repository)

2.3 管理修改

### git add
Put the file into stage area
###  git commit
Put the change into 版本库
###   git diff HEAD --readme.txt
Compare diff between HEAD version and working Directory

2.4 撤销修改

###  丢弃在工作区里面的修改
git checkt out -- readme.txt

** git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

### 如果修改已经add 到stage,未commit到版本库。使用下面的命令可以把修改回退到工作区
git reset HEAD readme.txt

### 如果修改已经commit到本地版本库,需要使用回退指令
git reset --hard versionid 可以

2.5 删除文件

###如果要删除一个文件
Git rm readme.txt
Git commit -m 'delete readme.txt'

### 这个时候如果发现自己的删错文件了。
Git reset reset HEAD^ readme.txt//这时Head指针指向了上一个版本,这个版本是还没有删除readme.txt的。

Git checkout -- readme.txt //这个命令会把当前HEAD指向的颁布替换工作区的版本



3.远程仓库

3.1添加远程仓库

### 关联一个远程库
git remote add origin git@server-name:path/repo-name.git
Example:
git remote add origin https://alm-github.systems.uk.hsbc/45027056/git-study.git

### 第一次推送master
Git push -u origin master

### 以后推送代码
Git push origin master

3.2 克隆远程仓库

### 克隆github上面已经有的项目(指定分支)
Git clone -b branch_name https://alm-github.systems.uk.hsbc/45027056/git-study.git

使用GitHub向开源项目提交代码

>> 先fork自己感兴趣的项目

>> fork后自己的repository就会有一份开源的代码

>> clone到本地进行开发,提交代码回到自己的repository

>> pull request到开源项目共享代码

4. 分支管理

### 新建分支
Git branch <branchname>

### 切换分支
Git checkout <branchname>

### 新建同时切换
Git checkout -b <branchname>

### 查看所有分支
Git branch

###  合并分支
例如把dev分支合并到master

Git checkout master
Git merge dev
*** 如果没有冲突,master分支会直接commit到本地版本库
*** 如果有冲突,需要先处理冲突,然后add >> commit

### non-ff合并分支
git merge --no-ff -m "merge with no-ff" dev
*** 加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

### 命令可以看到分支合并图。
git log --graph
git log --graph --pretty=oneline --abbrev-commit

### 删除分支
Git branch -d <branch name>
### 删除分支 forced
Git branch -D <Branch>


### 保存现场
加入目前新建了一个cardless-bug1分支,用于改Cardless的bug
Git checkout -b cardless-bug1
bug比较难,需要很长的时间去改。现在领导让你去处理一个紧急的bug,你不能commit,想先暂存起来,然后去处理紧急的bug,这时候可以使用
Git stash,它会把当前分支的改动暂时存储到一个区域。

切换回master分支
然后拉一个紧急bug的分支
Git checkout master
Git checkout -b urgent-bug1
….
处理好urgen-bug1后,需要想回去继续改cardless-bug1,
Git checkout cardless-bug1,
Git stash list

git stash apply,恢复现场
git stash drop,删除现场
Gig stash pop,恢复同时删除现场

5.标签管理

标签可以理解为Git版本库的快照,但其实它就是指向某个commit的指针

### 查看所有标签
Git tag

### 查看某个标签的详情
Git show v0.1
### 新建标签,带说明信息,指定commitid。
 git tag -a v0.1 -m "version 0.1 released" 1094adb

*** 标签默认都是打带本地的。如果需要推送到remote,需要使用命令
>> git push origin <tagname>
>> git push origin --tags

### 简单新建标签
Git tag <tagname>

### 删除本地标签
Git tag -d v0.1

### 删除远程标签
>> 1.delete  local tag
Git tag -d v0.1

>> 2.push to delete remote tags
git push origin :refs/tags/v0.1

6.名词解释

Untracked:未被添加过
Origin:远程库的名字
Fast-forward:快速合并

7.参考

https://www.liaoxuefeng.com/wiki/896043488029600

posted on 2019-05-16 22:25  lukelin1989  阅读(250)  评论(0编辑  收藏  举报

导航