Git学习入门

git  安装完成后

$git config --global user.name "Your Name"

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

 

创建一个空的目录,作为代码仓库

mkdir gitlearn

cd gitlearn 


初始化git仓库

git init


查看分支:git branch

 

创建分支:git branch name

 

切换分支:git checkout name

 

创建+切换分支:git checkout -b name

 

合并某分支到当前分支:git merge name

 

删除分支:git branch -d name

 

git  status  查看更改的文件

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

 

git checkout -b  xem_toph  创建新的分支,并自动切换到新建分支

 

或者: git   checkout   xem_toph  切换到新分支

 

git   add  文件名1     文件名2  .......  添加需要更改的文件到新建分支

 

git   commit  -m  "完成xemtoph站点代码"           提交代码

 

以上操作把代码 提交到了新的分支上,然后切换到主分支进行最后提交

 

git  checkout  master      切换到主分支,下一步合并分支

 

git    merge  xem_toph  将分支cyf_xem_toph合并到主分支

  

git  push  origin  master   最终push代码

 

如果发生冲突,则会出现以下错误:

 

error: failed to push some refs to 'git@139.XX.XX.XX:/opt/git/dev/XXX.git'

hint: Updates were rejected because the remote contains work that you do

hint: not have locally. This is usually caused by another repository pushing

hint: to the same ref. You may want to first integrate the remote changes

hint: (e.g., 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

这时候需要pull下来新的代码修改

 

git   pull

 

vim  修改产生冲突的代码 ,以site.py为例:

Vim  site.py

 

在命令模式下输入   / <<<  或者/<<

定位到要修改的地方

修改完保存退出

 

 git  status  查看一下

 

git  add  siteDef.py  加入到分支

 

git commit -m  “每次提交的备注说明”               再次提交

 

git  status



(下为转)

版本回退 

git log命令显示从最近到最远的提交日志(–pretty=oneline ) 

回退上一个版本 ,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard HEAD^

 

git  push     再次push到远程

 

git push origin master  



小结
  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。

  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

3 撤销修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况: 
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 
总之,就是让这个文件回到最近一次git commit或git add时的状态。

```
$ git checkout -- readme.txt
```

git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt
   
   
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
总结:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • git reset HEAD^ //回退至上一版本, 并重置缓存区
  • git reset HEAD~10 //回退至10个版本之前, 并重置缓存区
  • git reset –soft HEAD //回退时不重置缓存区和工作区
  • git reset –mixed HEAD //回退时重置缓存区, 默认选项
  • git reset –hard HEAD //回退时重置缓存区和工作区
  • git reset //不指定HEAD, 用来清空缓存区的修改
  • git reset filename //清空缓存区指定文件的修改
  • git reset –hard //不指定HEAD, 用来清空工作区和缓存区的修改
  • git reset –hard filename //清空工作区和缓存区指定文件的修改
  • git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash
  • git checkout branch –force //切换branch, 同时重置缓存区和工作区
  • git checkout –force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致)
  • git checkout – filename //清空工作区指定文件的修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值