git常用命令

git的基本设置

设置名称与邮箱

首先我们对 Git 进行用户名和邮箱进行设置,请参照下面格式,替换为你自己常用的用户名和邮箱来完成设置:

git config --global user.name "Your Name"
git config --global user.email your@example.com

解释: --global 选项代表对 Git 进行全局设置。

接下来设置 Git 推送分支时相关配置:

git config --global push.default simple

全局代理(通常与VPN设置配合)

//关闭全局代理
git config --global --unset https.proxy
git config --global --unset http.proxy

//设置全局代理 (这里以shadowsocks设置为例)
git config --global https.proxy socks5://127.0.0.1:1086
git config --global http.proxy socks5://127.0.0.1:1086

从远程仓库clone(下载)项目

git clone http://172.28.160.251/hament/gtest.git

执行命令后会一般会提示输入账号和密码

然后模拟修改

cd gtest 
touch README.md    //创建一个文件
git add README.md    //把文件纳入版本管理
git commit -m "add README"  // 提交修改
git push -u origin master   // 推送到 远程服务器的主分支(master)

创建本地仓库

  1. 先切换到某个目录
git init 
  1. 把文件纳入管理
$ git add -A //保存到暂存区
  1. 提交
git commit -m "提交描述"
  1. 查看日志
git log

如果想查看某次commit的信息, 则在命令后加上 commit版本号

  1. 添加远程仓库并推送
$ git remote add origin git@github.com:your_username/hello_laravel.git //以github为例
$ git push -u origin master

创建分支

git checkout master //切换到基于哪个分支创建
git checkout -b sign-up // 建立名为sign-up的分支

git checkout -b sign-up master

删除分支

$ git branch -d 分支名称

合并分支

git checkout master //目标分支
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 //输出日志

恢复到最后一次commited

git checkout -f

版本回退

#回退所有内容到上一个版本 
git reset HEAD^ 
#回退a.py这个文件的版本到上一个版本 
git reset HEAD^ a.py 
#向前回退到第3个版本 
git reset –soft HEAD~3 
#将本地的状态回退到和远程的一样 
git reset –-hard origin/master  // Mac 要两个-
#回退到某个版本 
git reset 057d 
#本地仓库回退到某个版本  
git reset –-hard bae168  // Mac 要两个-

把任意一次/多次的commit作用到当前分支上

该功能可以解决跨分支局部文件合并/修改

应用场景: 如果你的应用已经发布了一个版本2.0, 代码分支叫release-2.0, 现在正在开发3.0, 代码的分支叫dev-3.0. 那么有一天产品说, 要把正在开发的某个特性提前上线, 也就是说要把dev-3.0分支上的某些更改移到2.x的版本上

基于release-2.0分支新建分支release-2.1, 并且到新创建的分支上

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放在前面.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的常用: ===================================** 撤销工作修改:**1、gi...
    ddai_Q阅读 790评论 0 5
  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 1,519评论 0 0
  • 文/岑岚 文章目录:如果时光不记得——目录 前情回顾:如果时光不记得(八) chapter9 我的周末时间分配很均...
    岑岚阅读 1,070评论 0 7