Git 使用
web
相关连接
官网
一、 Git的基本命令
- git init : 初始化仓库(需要记)
- git status : 查看工作空间的状态(需要记)
- git add a.txt : 将已修改的文件纳入到暂存区。(需要记)
- git add -A : 将所有的已修改的文件纳入到暂存区 (不用记)
- git add -h : 查看git add 所有的参数 (需要记)
- git rm --cached a.txt : 将a.txt从暂存区移除,首次初始化提交的时候才会使用到(不用记)
- git commit -m 'first comit' : 将暂存区的内容提交到本地版本库 (需要记)
- git log : 查看提交历史信息 (需要记)
- git log -3 : 查看最近3条提交信息(需要记)
- git log --oneline : 将提交日志信息按行显示。(不用记)
- git log --pretty=format:"%h - %an, %ar : %s" : 按照指定的格式输出。(不用记)
- git checkout -- a.txt : 撤销删除或者更新文件 (不用记)
- git reset HEAD a.txt : 将已追踪的文件从暂存区移除。(不用记)
- git commit --amend -m 'new msg' : 修正提交信息。 (需要记)
- git commit -am 'msg' : 将git add 与 git commit两条命令进行合并(需要记)
- git log --graph --oneline : 查看日志的简单图形化信息(需要记)
二、 修改用户信息
在提交信息的时候回提示设置用户名和邮件,设置该信息可以在两个地方进行设置:
- C:\Users\Administrator\.gitconfig 全局设置
- .git\config 局部设置,不同的项目情况下使用
设置全局的信息使用如下命令:
git config --global user.email "zou@qq.com"
git config --global user.name "miller"
设置局部信息使用如下命令:
git config --local user.email "zou@qq.com"
git config --local user.name "miller"
三、 gitignore
settings.xml #将同级目录下的settings.xml文件忽略
/target #忽略/target目录以及所有的子目录和文件
/*/test #忽略掉/abc/test /def/test,但是不能忽略掉/a/b/test
/*/*.iml #忽略掉/abc/a.iml /def/bcd.iml,但是不能忽略掉/a/b/cde.iml
/*.java #忽略掉User.java, 但是不能忽略/com/Person.java
/debug/*.java #忽略掉/debug/A.java, 但是不能忽略掉/debug/a/C.java
*.log #忽略掉所有的以log结尾的文件
bin/ #会忽略bin目录以及所有的子目录,但如果bin是文件则不忽略
四、 远程操作命令
- git remote add origin address: 添加远程地址,将origin作为远程地址的别名
- git remote set-url origin new_url: 改变origin的url地址。
- git push -u origin master:master: 将master分支推送到远程master分支,这是一个完整的写法;也可以简写
git push
,但是这种写法要求必须是在master分支,并且已经作过关联。
- git push -f origin master:master: 将master分支强制推送到远程,一般用于版本回退。
- git pull origin master:my-test: 将远程的master分支拉倒本地的my-test分支。
- git remote show: 查看所有的远程配置别名。
- git remote show origin: 查看origin的详细信息。
- git branch -av: 查看所有的分支,包括远程分支。
- git clone address [new_name]: 将远程地址的项目克隆到本地,可以重命名为new_name.
- git clone -b branch_name url: 将指定的分支克隆到本地
- git pull url: 将远程项目的增量拉取到本地,并且尽可能的去合并,其实相当于两个命令 git fetch + git merge.
非master分支操作
- git branch -a:查看所有的分支信息,而且会查看到远程的分支信息
- git checkout -b develop origin/develop:创建新的分支develop,关联到origin/develop分支
- git pull origin develop:develop:上述的几个命令可以合并这一个命令
五、 分支
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master
。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master
分支。 它会在每次的提交操作中自动向前移动。Git 的 master
分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master
分支,是因为 git init
命令默认创建它,并且大多数人都懒得去改动它。
- git branch :查看所有的分支,以及当前所处的分支
- git branch testing :创建testing分支
- git branch testing d7e347 :创建一个分支指向d7e347这个提交。
- git checkout testing : 切换到testing分支
- git checkout -b parent : 创建parent分支,并切换到parent分支
- git branch -d parent :删除parent分支
- git push origin :dev :删除远程dev分支
- git merge testing :将testing分支合并到当前分支。
- gitk --all :图形化的方式查看git的分支信息,以及对文件提交信息。
- git log --graph --oneline --all :图形化的方式展示分支信息。
- git branch -m testing testing1 :将testing分支的名字改为testing1.
- git checkout master :切换到master分支
- git cherry-pick 8336192942b :将master分支内容达到develop分支的8336192942b这个提交
六、 版本的回退
七、 保存工作现场
当我们正在某个分支上工作的时候,而功能并没有完善,又或者代码没有?编写完成,此时也不能提交。而被领导要求在其他分支上进行操作,在其他分支上也可以看到修改状态,可能造成在其他分支上误操作导致提交。这个时候就需要用到工作现场。
- git stash: 保存工作现场。
- git stash list: 查看所有的工作现场。
- git stash pop: 弹出工作现场,并将工作现场从stash中删除。
- git stash apply: stash中的内容并不会删除,需要通过 stash drop stash@{0} 删除工作现场。
- git stash apply stash@{0}: 直接开始运用指定的工作现场。
- git stash drop stash@{0}:删除工作现场
八、 标签与diff
1. 标签
标签的作用是当项目发布一个里程碑的时候,给其一个做个标记,往往用来指定版本。
- git tag v1.0: 创建一个V1.0的标签。
- git tag: 查看所有的标签
- git tag -d v1.0: 删除v1.0这个标签
- git show v1.0: 查看v1.0标签的信息。
- git push origin v1.0: 将v1.0这个标签推送的远程。
- git push origin v1.0 v2.0: 将 v1.0 v2.0推送的远程。
- git push origin --tags: 将本地尚未推送的远程的标签都推送的远程。
2. diff
diff命令是源于linux操作系统中的命令,用于查看两个文件中的区别,git也提供了该功能。
- git diff: 查看暂存区与工作区的文件的区别
- git diff HEAD: 查看版本库最新一次提交的与工作区间的差异
- git diff ba8dc34c: 查看指定提交与工作区间的差异
- git diff --cached: 查看版本库与暂存区间文件的差异
九、变基
- git rebase origin/master:让本地版本延续远程master的最新版本
- git rebase -i HEAD~5:让本地版本指向远程master的最新版本
- git rebase --abort:终止变基
- git rebase --continue:继续变基
其他命令
- git checkout 79af3: 切换到79af3这个提交点。
- git blame a.txt: 追踪a.txt这个文件的提交信息。
- git check: 追踪a.txt这个文件的提交信息。