git常用命令学习

添加远程库

初始化git本地全局配置

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

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

添加远程库之前首先要在本地生成一个rsa的密钥,要把公钥添加到github你的帐号里面,这样你就可以克隆和关联远程文件。
输入命令:

ssh-keygen -t rsa -C"youremail@example.com"

使用上述语句 生成rsa密钥
系统会提示你保存在哪里,你按照提示操作即可;

不这样的话会提示

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

所以必须先把你的公钥添加到你的github帐号里面,这样你就可以克隆和关联任何远程文件了。

你可以直接clone远程仓库:

git clone git@gitee.com:angryMonkey/koala-online-box.git

或者你可以关联远程仓库:

git remote add origin https://github.com/AngryCodeDog/learngit.git

然后可以直接拉取:

git pull origin master

(如果你的仓库是完全新建的,这样就会在本地创建一个master分支,并且下载下远程仓库的内容,在本地文件夹也可以直接查看的到下载下来的文件)

git fatch origin master 

//这个是拉取远程仓库最近的更新内容,下载到本地后,你是直接查看不到文件的,因为下载到了某个分支,必须用git命令才可以查看。然后查看本地与远程文件有没有什么不一样,

git fetch [remote-name]

此命令会到远程仓库中拉取所有你本地仓库中还没有的数据.运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个 分支合并到本地,或者只是取出某个分支,一探究竟.
如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下.所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新).有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并.(说 明:事先需要创建好远程的仓库,然后执行:git remote add [仓库名] [仓库url],git fetch [远程仓库名],即可抓取到远程仓库数据到本地,再用git merge remotes/[仓库名]/master就可以将远程仓库merge到本地当前branch.这种分支方式比较适合独立-整合开发,即各自开发测试好后 再整合在一起.比如,Android的Framework和AP开发.

更换远程仓库

1.修改命令

git remote set-url origin [url]

例如:git remote set-url origin git@github.com:AngryCodeDog/pythonxx.git

2.先删后加

git remote rm origin
git remote add origin [url]

git分支操作

  • 查看分支:git branch
  • 创建分支:git branch
  • 切换分支:git checkout
  • 创建+切换分支:git checkout -b
  • 合并某分支到当前分支:git merge
  • 删除分支:git branch -d

Git fetch和git pull的区别

1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

git创建本地分支并提交

git branch mybranch1

即可创建一个mybranch1的分支
我们可以通过命令查看

git branch
* master
  mybranch1

可以看到这里有两个分支。
我们切换分支

git checkout mybranch1
git branch
  master
* mybranch1

我们可以看到成功切换到了mybranch1分支。
接着提交本地分支

git push origin mybranch1

这样在github就会自动创建一个mybranch1的分支

另外我们也可以这样提交:

$ git push <远程主机名> <本地分支名>:<远程分支名> 

比如我要将本地的wy分支推送到远程wy分支

git push origin wy:wy
git本地分支改名
git branch -m oldbranchname newbranchname

git拉取远程分支到本地

首先把远程更新先获取下来

git fetch

然后查看远程分支情况

git branch -r

接着我们采用如下命令:

git checkout -b 本地分支名x origin/远程分支名x

使用该方式会在本地新建分支x,并自动切换到该本地分支x。
或者采用:

git fetch origin 远程分支名x:本地分支名x

使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。

git回滚到任意版本

$ git log -3
commit 4dc08bb8996a6ee02f
Author: Mark <xxx@xx.com>
Date:   Wed Sep 7 08:08:53 2016 +0800

    xxxxx

commit 9cac9ba76574da2167
Author: xxx<xx@qq.com>
Date:   Tue Sep 6 22:18:59 2016 +0800

    improved the requst

commit e377f60e28c8b84158
Author: xxx<xxx@qq.com>
Date:   Tue Sep 6 14:42:44 2016 +0800

    changed the password from empty to max123

回滚到指定的版本

git reset --hard e377f60e28c8b84158

git放弃本地修改:

git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。
git reset --hard HASH #返回到某个节点,不保留修改。
git reset --soft HASH #返回到某个节点。保留修改

git在任意版本切换

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

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

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

注意:

当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update –init –recursive
即可将子模块内容下载下来后工程才不会缺少相应的文件。

git 查看某次提交内容

git show commit-hashcode(指定的某个commit版本)

合并某个分支上的单个commit

git cherry-pick 62ecb3  

合并某个分支上的一系列commits

我们先创建一个新分支并指定到某个commit

git checkout -b newbranch 62ecb3 

这样我们便可以从当前分支在某个指定的commit处分一个分支出来。

然后,rebase这个新分支的commit到master(–ontomaster)。76cada^ 指明你想从哪个特定的commit开始。

git rebase --onto master 76cada^  

git错误提交、撤销

1. git add 添加 多余文件

这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了

2. git commit 错误

如果不小心 弄错了 git add后 , 又 git commit 了。
先使用

git log 查看节点 
commit xxxxxxxxxxxxxxxxxxxxxxxxxx 
Merge: 
Author: 
Date:

然后

git reset commit_id

PS:还没有 push 也就是 repo upload 的时候

git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改的)
git reset –hard commit_id (回退到上一个commit节点, 代码也发生了改变,变成上一次的)

3.如果要是 提交了以后,可以使用 git revert

还原已经提交的修改
此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交

git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert commit-id (撤销指定的版本,撤销也会作为一次提交进行保存)
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值