Git基本操作

Git基本操作(Windows)

创建版本库

通过git init命令把这个目录变成Git可以管理的仓库,当前目录下多了一个.git 的目录,这个目录是Git来跟踪管理版本库的,不能乱改和删除。比如这个目录地址为/Users/michael/learngit

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

把文件添加到版本库

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m "提交的内容",完成。

版本回退

  • 查看日志:git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,可以加上–pretty=oneline参数:git log --pretty=oneline
  • 回退到上一个版本:git reset --hard HEAD^
  • 回退到指定版本:git reset --hard commit_id,commit_id也就是git log命令查看出的前面一大串,比如:$ git log --pretty=oneline 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL e475afc93c209a690c39c13a46716e8fa000c366 add distributed eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file中的1094adb…,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
    git reflog记录每一次操作的命令

工作区和暂存区

git add实际上就是把文件修改添加到暂存区;
git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
git status可以查看状态

撤销修改

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

git reset HEAD <file>:可以把暂存区的修改撤销掉(unstage),重新放回工作区。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
总结:

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

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

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

删除文件

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

添加远程仓库

  • 现在码云或者GitHub上建立一个远程仓库,比如在GitHub建立一个learngit仓库。
  • 在本地的learngit仓库下运行命令:git remote add origin git@github.com:GitHub账户名/learngit.git
  • 把本地库的所有内容推送到远程库上:git push -u origin master。把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  • 从现在起,只要本地作了提交,就可以通过命令:git push origin master

从远程仓库克隆

git clone git@github.com:GitHub账户名/GitHub仓库名.git

创建于合并分支

  • 查看分支:git branch
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>,通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。--no-ff参数,表示禁用Fast forwardgit merge --no-ff -m "merge with no-ff" dev
  • 删除分支:git branch -d <name>

解决冲突

当当前分支和想合并的分支都有自己的提交内容时,Git无法进行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。

文章借鉴自廖雪峰的官方网站

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值