Git常用操作

  • A+
所属分类:课外记录

Git常用操作

创建SSH Key

$ ssh-keygen -t rsa -C "[email protected]"

设置

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

提交

git tracked的是修改,而不是文件

#将“当前修改”移动到暂存区(stage)
$ git add somfile.txt
#将暂存区修改提交
$ git commit -m "Add somfile.txt."

状态

$ git status
$ git diff

回退

    # 放弃工作区修改
    $ git checkout -- file.name
    $ git checkout -- .

    # 取消commit
    $ git reset --soft HEAD

    # 取消commit、add
    $ git reset HEAD
    $ git reset --mixed HEAD

    # 取消commit、add、工作区修改
    $ git reset --hard HEAD

记录

 $ git reflog
 $ git log

删除

$ rm file.name
$ git rm file.name
$ git commit -m "Del"
$ git rm -r --cached 
有时候,gitignore考虑不全面,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的。这个时候需要执行:
git rm -r --cached filename

远程操作

$ git remote add origin [email protected]:michaelliao/learngit.git
# 第一次推送,-u(--set-upstream)指定默认上游
$ git push -u origin master
$ git push origin master

克隆

$ git clone https://github.com/Yikun/yikun.github.com.git path
$ git clone [email protected]:Yikun/yikun.github.com.git path

分支操作

产看当前分支

$ git branch
 # 创建分支
 $ git branch dev
 # 切换分支
 $ git checkout dev
 # 创建并checkout分支
 $ git checkout -b dev
 # 合并分支
 $ git merge dev
 # 删除分支
 $ git branch -d dev

git修改远程仓库地址

方法有三种:

1.修改命令

git remote origin set-url 

2.先删后加

git remote rm origin
git remote add origin 

3.直接修改config文件

TAG操作

1、查询远程所有TAG列表

git ls-remote --tags

2、删除远程TAG
先删除本地:

git tag -d v0.9

再删除远程

git push origin :refs/tags/v0.9

版本回退

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

git reset --hard HEAD^

在windows中敲出上面命令后会出现 more?
错误如下:

fatal: ambiguous argument 'HEAD
': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

这是因为cmd控制台中换行符默认是^,而不是\ ,所以它的more?的意思是问你下一行是否需要再输入,而^ 符号就被当做换行符而被git命令忽略掉了。

解决方法有如下几种:
加引号:git reset --hard "HEAD^"
加一个^:git reset --hard HEAD^^
换成~ :git reset --hard HEAD~ 或者 git reset --hard HEAD~1
~ 后面的数字表示回退几次提交,默认是一次

git无法pull仓库refusing to merge unrelated histories

git pull origin master --allow-unrelated-histories
avatar