1. 程式人生 > >git指令

git指令

it管理 eset 固定 配置 res linux命令 告訴 全部 ora

## 管理代碼的版本(代碼) (分布式git) (集中式 svn)
- 記住是誰提交的東西
- 可以保存每個階段的內容(備份功能)
- 可以實現歷史穿越
- github 開源 多端共享
- 團隊協作

> linus開發的linux系統,開發git可以實現自動合並代碼,比較diff


## 安裝git
- (最新版的如果提交過一次後會記住用戶名和密碼)
- 下載地址https://git-scm.com/

## homebrew mac的包管理器
- brew install git
- brew install node
- brew install mongodb

> https://brew.sh/index_zh-cn.html


## 使用git
- 界面化操作GUI(source tree 編輯器自帶git功能)
- 命令行操作CLI

## mac下
- iterm2 + oh-my-zsh

> 如果安裝過xcode 會自動安裝git

## 查看git版本
```
git --version
```

## 告訴git是誰提交的代碼
- 如果不配置 則不能提交代碼
```
git config --global user.name 用戶名
git config --global user.email 郵箱號
git config --list
```

## 初始化git(不能嵌套使用git)
- 以某個文件夾作為git管理的目錄
```
git init
```

> 初始化後會產生一個.git文件夾

## 要提交git前先查看信息
```
git status
```

> 如果是紅色表示未添加到暫存區中,綠色是添加到暫存區中,如果幹凈了表示 三個區的內容全部相同

## 添加暫存區
```
git add . 或者 -A 或者 文件名
```

## 添加到歷史區
- -m參數必須添加
```
git commit -m"initial"
```

> 第一次提交叫根提交

## 查看提交歷史
```
git log
```

## 比較區的不同
```
git diff
```


## 穿越
- 從暫存區覆蓋工作區
```
git checkout 文件名
```

## 將本次的暫存區回到上一次
```
git reset HEAD 文件名
```

## 回滾歷史區
```
git reset --hard 版本號
```

## 查看所有的版本號
```
git reflog
```

## 查看分支
```
git branch
```

## 創建分支
```
git branch dev
```

## 切換分支
```
git checkout 分支名
```

## 刪除分支
- 不能在當前分支上
```
git branch -D 分支名
```

## 創建並切換分支
```
git checkout -b 分支名
```

## 在分支上添加文件
- 需要提交後才能歸這個分支所有,否則你改的只是工作區內容

## 合並分支
```
git merge 分支名
```

> 默認會將分支上所有提交的內容全部合並,可以選擇cherry-pick來合並某一個歷史



## 添加暫存區並且提交
- 只針對提交過的文件
```
git commit -a -m ‘info‘
```

> 提交到誰的身上,本次的結果才歸某個分支所有,如果再次更改分支上的內容,不提交是無法切換分支的,或者你可以先暫存起來

## 必須是歷史區的結果
- 空文件夾默認不會提交(加一個.gitkeep文件)
- 默認添加.gitignore文件
```
git init
git add .
git commit -m""
```

## 鏈接遠程倉庫
```
git remote add 別名 https://github.com/zhufengzhufeng/2017008node_home.git
```

## 刪除遠程倉庫
```
git remote -v 查看
git remote rm 別名
```

## 推送到遠程倉庫
```
git push 別名 master
```


## 拉取github上的代碼
```
git clone 遠程地址 文件夾的名字
```

## 共享倉庫
- settings > collaborators 添加貢獻者

## 發布靜態網站
- 要求有一個固定的分支gh-pages
- 將靜態內容推送到這個分支上
```
git checkout -b gh-pages
touch index.html
git add .
git commit -m "static"
git push origin gh-pages
```

## 拉取最新代碼
```
git pull origin master
```

## 強制推送本地的代碼
```
git push origin master --force
```

> 在推送時可能需要先拉取遠程的內容,合並後再次推送,如果產生沖突 需要解決沖突

## fork(叉子)
- fork來的代碼,如果別人更新了,不會影響我fork的代碼
- 將fork的代碼改正後,發送和並請求,請求別人幫我們合並
- 需要提交自己的更新,發送給被fork的人,請求合並

## linux命令
- pwd (print working directory) 打印當前目錄
- rm -rf .git (刪除文件夾)
- mkdir (創建目錄)
- ls (list show 顯示所有列表)
- cd (change directory 改變目錄)
- touch (創建一個空文件)
- vi 文件名(編輯文件)
- i 插入模式
- esc+:wq 保存並退出
- cat 文件名查看文件內容

git指令