git的基本設(shè)置
設(shè)置名稱與郵箱
首先我們對 Git 進(jìn)行用戶名和郵箱進(jìn)行設(shè)置吹零,請參照下面格式包各,替換為你自己常用的用戶名和郵箱來完成設(shè)置:
git config --global user.name "Your Name"
git config --global user.email your@example.com
解釋: --global 選項代表對 Git 進(jìn)行全局設(shè)置渤刃。
接下來設(shè)置 Git 推送分支時相關(guān)配置:
git config --global push.default simple
全局代理(通常與VPN設(shè)置配合)
//關(guān)閉全局代理
git config --global --unset https.proxy
git config --global --unset http.proxy
//設(shè)置全局代理 (這里以shadowsocks設(shè)置為例)
git config --global https.proxy socks5://127.0.0.1:1086
git config --global http.proxy socks5://127.0.0.1:1086
從遠(yuǎn)程倉庫clone(下載)項目
git clone http://172.28.160.251/hament/gtest.git
執(zhí)行命令后會一般會提示輸入賬號和密碼
然后模擬修改
cd gtest
touch README.md //創(chuàng)建一個文件
git add README.md //把文件納入版本管理
git commit -m "add README" // 提交修改
git push -u origin master // 推送到 遠(yuǎn)程服務(wù)器的主分支(master)
創(chuàng)建本地倉庫
- 先切換到某個目錄
git init
- 把文件納入管理
$ git add -A //保存到暫存區(qū)
- 提交
git commit -m "提交描述"
- 查看日志
git log
如果想查看某次commit的信息, 則在命令后加上 commit版本號
- 添加遠(yuǎn)程倉庫并推送
$ git remote add origin git@github.com:your_username/hello_laravel.git //以github為例
$ git push -u origin master
創(chuàng)建分支
git checkout master //切換到基于哪個分支創(chuàng)建
git checkout -b sign-up // 建立名為sign-up的分支
或
git checkout -b sign-up master
刪除分支
$ git branch -d 分支名稱
合并分支
git checkout master //目標(biāo)分支
git merge sign-up // 選擇被合并的分支
分支合并完通常會有文件沖突,需要手動挨個解決沖突文件,然后重新把沖突文件納入版本管理并提交
#解決沖突文件后需要重新納入版本管理
git add a.txt
git add b.txt
git commit -m "沖突解決"
git push
分支對比
git diff branchA branchB
git diff branchA branchB > d:/diff/exportname.diff //輸出日志
恢復(fù)到最后一次commited
git checkout -f
版本回退
#回退所有內(nèi)容到上一個版本
git reset HEAD^
#回退a.py這個文件的版本到上一個版本
git reset HEAD^ a.py
#向前回退到第3個版本
git reset –soft HEAD~3
#將本地的狀態(tài)回退到和遠(yuǎn)程的一樣
git reset –-hard origin/master // Mac 要兩個-
#回退到某個版本
git reset 057d
#本地倉庫回退到某個版本
git reset –-hard bae168 // Mac 要兩個-
把任意一次/多次的commit作用到當(dāng)前分支上
該功能可以解決跨分支局部文件合并/修改
應(yīng)用場景: 如果你的應(yīng)用已經(jīng)發(fā)布了一個版本2.0, 代碼分支叫release-2.0, 現(xiàn)在正在開發(fā)3.0, 代碼的分支叫dev-3.0. 那么有一天產(chǎn)品說, 要把正在開發(fā)的某個特性提前上線, 也就是說要把dev-3.0分支上的某些更改移到2.x的版本上
基于release-2.0分支新建分支release-2.1, 并且到新創(chuàng)建的分支上
git checkout -b release-2.1 release-2.0
將dev-3.0分支上的某些commit在release-2.1分支上重演
git cherry-pick dev-3.0分支的某些commit-hash
如:
git cherry-pick
20c2f506d789bb9f041050dc2c1e954fa3fb6910
2633961a16b0dda7b767b9264662223a2874dfa9
5d5929eafd1b03fd4e7b6aa15a6c571fbcb3ceb4
多個commit-hash使用空格分割, commit-hash最好按提交時間先后排列, 即最先提交的commit放在前面.