一、Git下载安装
下载地址:git下载
安装参看:git的安装和配置
需要注意的地方是:
配置环境变量的时候千万记得别把原本里面包含的删了。要在它的后面加冒号加地址。
二、常见Git命令
$ git
用法:git [–version] [ - help] [-C
[–exec-path [=
[-p | --paginate | --no-pager] [–no-replace-objects] [–bare]
[–git-dir =
[]
这些是在各种情况下使用的常见Git命令:
开始工作区域(另请参阅:git帮助教程)
clone 将存储库克隆到新目录中
init 创建一个空的Git存储库或重新初始化现有存储库
处理当前的变化(另请参阅:git help每天)
add 将文件内容添加到索引
mv 移动或重命名文件,目录或符号链接
reset 将当前HEAD重置为指定状态
rm 从工作树和索引中删除文件
检查历史和状态(另请参阅:git help revision)
bisect 使用二进制搜索来查找引入错误的提交
grep 打印与图案匹配的行
log 显示提交日志
show 显示各种类型的对象
status 显示工作树状态
成长,标记和调整您的共同历史
branch 列出,创建或删除分支
checkout 切换分支或恢复工作树文件
commit 将更改记录到存储库
diff 显示提交,提交和工作树之间的更改等
merge 将两个或多个开发历史连接在一起
rebase 再运用在另一个基本提示之上提交
tag 创建,列出,删除或验证使用GPG签名的标记对象
协作(另请参阅:git help workflows)
fetch 从另一个存储库下载对象和引用
pull 从另一个存储库或本地分支获取并集成
push 更新远程引用以及关联的对象
'git help -a’和’git help -g’列出了可用的子命令和一些
概念指南。请参阅’git help '或’git help ’
阅读有关特定子命令或概念的内容。
举个栗子:
$ git commit -s
这里的-s是什么意思呢?
那么我们就可以通过
$ git help commit
跳转到指令介绍页面上:git-commit(1) Manual Page
file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-commit.html
找到-s介绍:
翻译一下:
在提交日志消息的末尾由提交者添加逐行签名。 签收的含义取决于项目,但它通常证明提交者有权在同一许可下提交此工作并同意开发人员原产地证书。
再找到–amend:
翻译一下:
通过创建新提交替换当前分支的提示。 记录的树像往常一样准备(包括-i和-o选项和显式路径规则的效果),当没有指定其他消息时,来自原始提交的消息用作起始点而不是空消息 从命令行通过诸如-m,-F,-c等选项。新提交具有与当前提交相同的父级和作者(–reset-author选项可以对此进行反对)。
它是一个粗略的等价物:
$ git reset --soft HEAD ^
$ …做一些别的事来想出正确的树…
$ git commit -c ORIG_HEAD
但可以用来修改合并提交。
如果修改已发布的提交,则应了解重写历史记录的含义。 (参见git-rebase(1)中的“从上游重新恢复”部分。)
再有就是需要了解一下:vim一般模式切换到指令模式
参看:C语言再学习 – vim常用快捷键(转)
其中,":x" 和 “:wq” 的区别如下:
(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。
(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。
因此,一般我都是用的 :x
三、Git常用命令
可以参看的教程有很多。
参看:廖雪峰git教程
参看:git - 简易指南
参看:Git操作手册|命令速查表
参看:一文快速掌握 Git 用法
创建
复制一个已创建的仓库:
$ git clone ssh://[email protected]/repo.git
创建一个新的本地仓库:
$ git init
本地修改
显示工作路径下已修改的文件:
$ git status
显示与上次提交版本文件的不同:
$ git diff
把当前所有修改添加到下次提交中:
$ git add
把对某个文件的修改添加到下次提交中:
$ git add -p <file>
提交本地的所有修改:
$ git commit -a
提交之前已标记的变化:
$ git commit
附加消息提交:
$ git commit -m 'message here'
提交,并将提交时间设置为之前的某个日期:
git commit --date="`date --date='n day ago'`" -am "Commit Message"
修改上次提交
请勿修改已发布的提交记录!
$ git commit --amend
把当前分支中未提交的修改移动到其他分支
git stash
git checkout branch2
git stash pop
搜索
从当前目录的所有文件中查找文本内容:
$ git grep "Hello"
在某一版本中搜索文本:
$ git grep "Hello" v2.5
提交历史
从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间):
$ git log
显示所有提交(仅显示提交的hash和message):
$ git log --oneline
显示某个用户的所有提交:
$ git log --author="username"
显示某个文件的所有修改:
$ git log -p <file>
谁,在什么时间,修改了文件的什么内容:
$ git blame <file>
分支与标签
列出所有的分支:
$ git branch
切换分支:
$ git checkout <branch>
创建并切换到新分支:
$ git checkout -b <branch>
基于当前分支创建新分支:
$ git branch <new-branch>
基于远程分支创建新的可追溯的分支:
$ git branch --track <new-branch> <remote-branch>
删除本地分支:
$ git branch -d <branch>
给当前版本打标签:
$ git tag <tag-name>
更新与发布
列出当前配置的远程端:
$ git remote -v
显示远程端的信息:
$ git remote show <remote>
添加新的远程端:
$ git remote add <remote> <url>
下载远程端版本,但不合并到HEAD中:
$ git fetch <remote>
下载远程端版本,并自动与HEAD版本合并:
$ git remote pull <remote> <url>
将远程端版本合并到本地版本中:
$ git pull origin master
将本地版本发布到远程端:
$ git push remote <remote> <branch>
删除远程端分支:
$ git push <remote> :<branch> (since Git v1.5.0)
或
git push <remote> --delete <branch> (since Git v1.7.0)
发布标签:
$ git push --tags
合并与重置
将分支合并到当前HEAD中:
$ git merge <branch>
将当前HEAD版本重置到分支中:
请勿重置已发布的提交!
$ git rebase <branch>
退出重置:
$ git rebase --abort
解决冲突后继续重置:
$ git rebase --continue
使用配置好的merge tool 解决冲突:
$ git mergetool
在编辑器中手动解决冲突后,标记文件为已解决冲突
$ git add <resolved-file>
$ git rm <resolved-file>
撤销
放弃工作目录下的所有修改:
$ git reset --hard HEAD
移除缓存区的所有文件(i.e. 撤销上次git add):
$ git reset HEAD
放弃某个文件的所有本地修改:
$ git checkout HEAD <file>
重置一个提交(通过创建一个截然不同的新提交)
$ git revert <commit>
将HEAD重置到指定的版本,并抛弃该版本之后的所有修改:
$ git reset --hard <commit>
将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改:
$ git reset <commit>
将HEAD重置到上一次提交的版本,并保留未提交的本地修改:
$ git reset --keep <commit>
四、Git提交代码
上面讲的非常的不错了,我提交代码其实暂时只用了以下几个指令。。。
1、显示工作路径下已修改的文件:
$ git status
2、进入修改文件目录:
$cd -
3、显示与上次提交版本文件的不同:
$ git diff
4、把当前所有修改添加到下次提交中:
$ git add .
5、添加相关功能说明,(第一次提交使用这个)
$ git commit -s
其中还要注明:
Fuction: 修改代码的功能
Ticket: 对应Bug号
6、查看提交代码
$ tig .
7、请勿修改已发布的提交记录! (以后提交使用这个)
$git commit --amend
命令模式下:
:x ( 写入文件并退出)
8、推送到服务器
$ git push origin HEAD:refs/for/master