Git常用操作

常用的git命令

参考:git 操作
输入图片说明

Git 全局设置:

git config --global user.name "xxxxx"
git config --global user.email "xxxxx@xxxxx.com"
git config --global core.autocrlf false 
  • 避免出现错误:warning: LF will be replaced by CRLF,也就是说在windows中的换行符为 CRLF, 而在linux下的换行符为:LF,使用git来生成一个工程后,文件中的换行符为LF, 当执行git add .时,系统提示:LF 将被转换成 CRLF,用git config --gobal core.autocrlf false 命令修改

生成ssh key,连接远程仓库

  1. 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@xxxxx.com"

在用户主目录里找到.ssh目录-->id_rsa.pub文件 2. 登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

输入图片说明

  • GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了

创建本地 git 仓库:

mkdir sell
cd sell
git init
md README.md
git add README.md
git commit -m "first commit"

本地仓库操作

添加修改

  • 添加所有文件,注意后面的.
git add .
  • 提交修改,-m后的引号内写说明
git commit -m “引号内写说明”
  • 要随时掌握工作区的状态,使用git status命令。
git status
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git diff README.md
  • 用git log可以查看提交历史,以便确定要回退到哪个版本。
git log
git log --pretty=oneline
  • 退回到上一个版本,hard HEAD^后的^个数代表次数,也可以写hard HEAD^,或者hard 123123,数字表示版本号的头几位。HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
git reset --hard HEAD^
  • 用git reflog查看命令历史,以便确定要回到未来的哪个版本。
git relog

撤销修改

  • git checkout -- file可以丢弃工作区的修改:
git checkout -- file
  • 让这个文件回到最近一次git commit或git add时的状态。
  • 用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

  • 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
git rm test.txt
git commit -m "remove test.txt"
  • 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout -- test.txt
  • git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

提交到远程git仓库

  • 新建项目
git remote add origin https://git.oschina.net/xxxx/sell.git
git push -u origin master
  • 已有项目时用
cd existing_git_repo
git remote add origin https://git.oschina.net/xxxxx/sell.git
git push -u origin master

移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是未暂存清单)看到:

$ rm grit.gemspec
    $ git status
    # On branch master
    #
    # Changes not staged for commit:
    # (use "git add/rm <file>..." to update what will be committed)
    #
    # deleted: grit.gemspec
    #

然后再运行 git rm 记录此次移除文件的操作:

$ git rm grit.gemspec
    rm 'grit.gemspec'
    $ git status
    # On branch master
    #
    # Changes to be committed:
    # (use "git reset HEAD <file>..." to unstage)
    #
    # deleted: grit.gemspec
    #

最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。

另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆 .a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 --cached 选项即可:

$ git rm --cached readme.txt

后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:

$ git rm log/\*.log

注意到星号 * 之前的反斜杠 \,因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开(译注:实际上不加反斜杠也可以运行,只不过按照 shell 扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。)。此命令删除所有 log/ 目录下扩展名为 .log 的文件。类似的比如:

$ git rm \*~

会递归删除当前目录及其子目录中所有 ~ 结尾的文件。

转载于:https://my.oschina.net/u/2408149/blog/845694

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值