使用git
今天使用Git的时候发生了不开心的事情,差点把改好的代码丢掉,所以还是要学习一下怎么使用Git
先总结一下Git的几个功能
- 远程代码存储
- 代码回退,版本控制
- 代码比较(本身带的功能比较弱,必要时可以借助其他工具)
- 通过分支来控制代码质量(这要求我们频繁提交,防止分支与master相差太远,容易出现冲突)
阮一峰的博客地址:www.ruanyifeng.com/blog/2014/06/git_remote.html
- 代码提交流程:git add –> git commit –> git push
- 代码下载流程:git pull
- 新项目创建过程:git init
- git clone:修改别人的代码
- git remote:管理(远程)主机名
- git fetch <远程主机名>:从版本库取得灯芯远程主机名>
- git pull <远程主机名> <远程分支名>:<本地分支名>:从版本库取得更新,并与本地指定分支合并本地分支名>远程分支名>远程主机名>
- git push <远程主机名> <本地分支名>:<远程分支名>:
远程分支名>本地分支名>远程主机名>
一些重要的点
- git rm命令的使用细节
- git show命令的使用细节
来自git帮助(20170205)
库控制
init:初始化一个空库
clone:从远程仓库拉取下所有数据放入.git文件夹,然后从中读取最新版本的文件的拷贝
自定义仓库的名字:git clone https://github.com/libgit2/libgit2 mylibgit
gti clone自动设置本地master分支跟踪克隆的远程仓库的master分支
remote:
git remote -v
git remote add pb https://github.com/paulboone/ticgit
git remote show origin
fetch:从另外一个仓库下载对象或者引用
push:更新远程引用和相关的对象
pull:如果你有一个分支设置为跟踪一个远程分支,可以使用git pull自动抓取然后合并远程分支到当前分支
git pull会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支内容控制
status
查看简短信息:git status -s
diff:显示尚未暂存的改动,而不是自上次提交以来所做的所有改动
查看尚未暂存的文件更新了哪些部分:git diff
查看已暂存的将要添加到下次提交里的内容:git diff --staged
git difftool命令使用Araxis,emerge,vimdiff来查看改动
add
commit
git config --global core.editor设置默认编辑工具
git commit -a -m "xxx"
git commit --amend
rm:
rm
git rm
git rm -f
git rm --cache
mv:
git mv=mv + git rm + git add
log:
git log -p -2
git log --since=2.weeks
git log --stat:显示简短信息
git log --pretty=online
git log --pertty=format:"%h - %an, %ar : %s"
git log --pertty=format:"%h %s" --graph分支
git branch
git branch -v查看每一个分支的最后一次提交
git branch -d:切换到一个新的分支,删除原有分支
git branch --merged/ --no-merged:
git checkout
git checkout -b:创建并切换到一个新的分支
git merge:合并一个分支分支开发工作流
- 长期分支
- 特征分支
远程分支
- 远程跟踪分支
- 跟踪分支
变基
git checkout experiment
git rebase master
git checkout master
git merget experiment.gitignore
- 所有空行或者以#开头的行都会被忽略
- 可以使用标准的glob模式匹配
- 匹配模式可以使用/开头防止递归
- 匹配模式可以使用/结尾指定目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号取反
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号()匹配零个或多个任意字符;[abc] 匹配 任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹 配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如
a/**/z可以匹配 a/z, a/b/z 或a/b/c/z等。https://github.com/github/gitignore