Git的使用: 史上最浅显易懂的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
首次使用git时需要你生成git公钥   生成方法: 1. 打开 Git Bash,输入生成密钥命令ssh-keygen -t rsa -C "你的邮箱"  ,按回车。  注意单词间的空格,ssh-keygen 之间没有空格,其他的有。1 2.生成之后找到以下文件: c:/User/用户名/.ssh/id_rsa.pub 打开文件,然后将公钥添加的Gitlab中。 1     3.添加公钥,把你的id_rsa.pub放到key,取一个自己喜欢的名字做title,点add ssh key就 好啦,哈哈: 1
=========== 分支管理 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name> git 删除远程分支:  一不小心把本地的临时分支push到server上去了,想要删除。 一开始用 git branch -r -d origin/branch-name 不成功,发现只是删除的本地对该远程分支的track,正确的方法应该是这样: git push origin :branch-name 冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。 Git常用命令 1、生成密钥对: a.生成密钥对ssh-keygen -t rsa -C "你的邮箱" 其中C是大写 b.生成之后用 notepad c:/User/Administrator/.ssh/id_rsa.pub 打开文件,然后将公钥添加的Gitlab中 2、获取远程git库: git clone <库名,如:git@github.com:vstest/yk-manage.git> 3、添加、提交、推送修改文件: git add<name> git commit <name> -m "提交注释" git push git add "*.txt"-->添加文件*.txt git add *.txt-->添加所有以txt为扩展名的文件 恢复某个已修改的文件(撤销未提交的修改): $ git checkout file-name 4、获取远程版本库文件: git fetch:相当于是从远程获取最新版本到本地,不会自动merge git pull:相当于是从远程获取最新版本并merge到本地 5、分支管理 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name> 6、git标签 git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id; git tag -a <tagname> -m "blablabla..."可以指定标签信息; git tag -s <tagname> -m "blablabla..."可以用PGP签名标签; 命令git tag可以查看所有标签。 命令git push origin <tagname>可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签; 命令git tag -d <tagname>可以删除一个本地标签; 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。 7、历史版本 git log:查看提交记录(历史得commit记录) git status:当前修改得状态,是否修改了还没提交,或者哪些文件未使用 git reset <log>:恢复到历史版本 删除 git rm -r 撤销本地文件的修改 git reset git checkout head . git 获取历史版本的几种方式 查看历史提交的目录树: git ls-tree <tree-ish> <paths>  例:git ls-tree d06b1cf09d2 test.txt   git ls-tree -r refs/tags/D doc 整个工作区切换到历史版本: git checkout <commit>  例:git checkout HEAD^^ 检出某个文件的历史版本: git checkout <commit> <paths>  例: git checkout refs/tags/D — test.txt        git checkout d06b1cf09d2 — doc 检出某个文件的历史版本到其他文件名: git show <commit>:<file> new_name 例:git show d06b1cf09d2:text.txt > test1.tx

代码撤消与回退

1.        回退已提交的代码
git reset --hard HEAD 回退整套代码到最近一次提后的状态。 参数 --hard 表示删除自该次提交后所有的修改记录(未跟踪文件除外)。如果需要保留目前的修改,则执行git reset -- soft HEAD。 git reset --hard <hashcode> 回退代码到指定的某次提交状态。(hashcode是该次提交的哈希码)。同样,参数hard同上。 git没有办法回退单个文件到某次提交状态。如果确实需要这么做,那么应该先取得某次提交时该文件的内容,然后覆盖现有的这个文件。
2.        撤消已暂存的文件
git reset HEAD <文件路径>
3.        撤消已修改的文件
git checkout -- <文件路径>
4.        撤消未跟踪文件
rm <文件或文件夹路径>
如果加上参数-rf,那么表示删除文件夹内所有子文件。
git clean -dxf
清除所有未跟踪文件,包括纳入ignored的文件。 如果要保留ignored的文件修改,使用参数-df
从git中删除idea: git rm —cached -r .idea git checkout 报错原因 (error: pathspec 'master' did not match any file(s) known to ) 以下是发生的场景 在一个空的目录中(/tempRepo) 执行: git init 成功创建一个空的git仓库 注:现在tempRepo上除了.git文件夹外,没有任何文件 然后继续创建并打开一个分支(dev) 执行: git checkout -b dev 现在想checkout 到 master分支 执行: git checkout master git checkout - 正常情况下是可以回到master分支的 不过这时是报错误的,错误信息如下: error: pathspec 'master' did not match any file(s) known to git. 这里是因为,还没有文件被提交过。即没有commit 过任何文件。 当commit过以后就可以切换分支了 备注:此时执行:git branch,只显示有dev 这个branch。 不过我们可以直接再创建一个master出来。

git tag — 标签相关操作

标签可以针对某一时间点的版本做标记,常用于版本发布。
  • 列出标签
$ git tag # 在控制台打印出当前仓库的所有标签 $ git tag -l ‘v0.1.*’ # 搜索符合模式的标签
  • 打标签
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。 # 创建轻量标签 $ git tag v0.1.2-light # 创建附注标签 $ git tag -a v0.1.2 -m “0.1.2版本” 创建轻量标签不需要传递参数,直接指定标签名称即可。 创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
  • 切换到标签
与切换分支命令相同,用git checkout [tagname] 查看标签信息 用git show命令可以查看标签的版本信息: $ git show v0.1.2
  • 删除标签
误打或需要修改标签时,需要先将标签删除,再打新标签。 $ git tag -d v0.1.2 # 删除标签 参数d即delete的缩写,意为删除其后指定的标签。
  • 给指定的commit打标签
打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。 # 补打标签 $ git tag -a v0.1.1 9fbc3d0
  • 标签发布
通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作: $ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器 $ git push origin –tags # 将本地所有标签一次性提交到git服务器   注意:如果想看之前某个标签状态下的文件,可以这样操作 1.git tag   查看当前分支下的标签 2.git  checkout v0.21   此时会指向打v0.21标签时的代码状态,(但现在处于一个空的分支上) 3. cat  test.txt   查看某个文件 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, 在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the following files would be overwritten by merge: protected/config/main.php Please, commit your changes or stash them before you can merge. 如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash
git pull
git stash pop
然后可以使用git diff -w +文件名 来确认代码自动合并的情况. 反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard
git pull
其中git reset是针对版本,如果想针对文件回退本地修改,使用 git checkout HEAD file/to/restore
处理文件大小写: 处理办法: windows下在git中修改文件的大小写
git mv --force myfile MyFile
或者
git mv -f myfile MyFile
然后commit就好了。当然也可以配置一下git:
Add ignorecase = false to [core] in .git/config;

分类: web

标签: