一 全局配置
- git config --gobal core.autocrlf false
- git config --global user.name "carlos"
- git config --global user.email "1447675994@qq.com"
- git init // 初始化一个仓库
二 常用操作
- git add // 添加到缓冲区 可以加 参加 -A
- git status // 查看当前状态
- git commit -m "XXX" // 提交代码
- git diff // 查看不同
- git log // 查看日志
- git log --pretty=oneline
- git reset --hard HEAD^
- git rm 文件名(包括路径) 从git中删除指定文件 // 删除文件
- git reflog 记录你的每一次命令
- git checkout -- file可以丢弃工作区的修改
- git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
- git reset HEAD file可以把暂存区的修改撤销掉
- git remote add origin git@server-name:path/repo-name.git要关联一个远程库;
- git push -u origin master 使用命令第一次推送master分支的所有内容
- git clone克隆一个本地库:
- git clone git@github.com:michaelliao/gitskills.git
- git checkout -b dev # 创建dev分支,然后切换到dev分支
- git branch命令会列出所有分支,当前分支前面会标一个*号
- git merge dev 把dev分支的工作成果合并到master分支上
- git branch -d dev 删除dev分支了
- git merge --no-ff -m "merge with no-ff" dev 合并分支代码 --no-ff参数,表示禁用Fast forward 这样,从分支历史上就可以看出分支信息。
- git stash Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
- git stash apply 恢复,但是恢复后,stash内容并不删除
- git stash drop 来删除
- git stash pop,恢复的同时把stash内容也删了
- git branch -D feature-vulcan 强行删除
- Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法
- 一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
- 另一种方式是用git stash pop,恢复的同时把stash内容也删了
三 标签
- git tag <name>就可以打一个新标签
- git tag查看所有标签
- git tag v0.9 6224937 #v0.9标签名 6224937 commit id
- git show <tagname> 查看标签信息
- git tag -d <tagname> 删除标签
- git push origin <tagname>可以推送一个本地标签;
- git push origin --tags可以推送全部未推送过的本地标签;
- git tag -d <tagname>可以删除一个本地标签;
- git push origin :refs/tags/<tagname>可以删除一个远程标签。
四 分支
- Git鼓励大量使用分支:
- 查看分支:git branch
- 创建分支:git branch <name>
- 切换分支:git checkout <name>
- 创建+切换分支:git checkout -b <name>
- 合并某分支到当前分支:git merge <name>
- 删除分支:git branch -d <name>
- 查看分支
- git branch
- git branch -v
- 创建分支 git branch A1.0
- 切换分支 git checkout A1.0
- 删除分支
- git branch -d A1.0 // 如果该分支没有合并到主分支会报错
- git branch -D A1.0 //强制删除
- 把A合并到B中
- git checkout B
- git merge A
- 分支合并
- 比如,如果要将开发中的分支(develop),合并到稳定分支(master),
- 首先切换的master分支:git checkout master。
- 然后执行合并操作:git merge develop。
- 如果有冲突,会提示你,调用git status查看冲突文件。
- 解决冲突,然后调用git add或git rm将解决后的文件暂存。
- 所有冲突解决后,git commit 提交更改。
五 忽略文件.gitignore
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
- 不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
六 github
- 从github下拉项目的方法 git clone https://XXXXXXXXX.git
七 个人配置
前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
[user] name = carlos email = 1447675994@qq.com [core] autocrlf = false [color] ui = true [alias] co = checkout ci = commit br = branch st = status last = log -1 lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
八 .gitignore 格式
这个仓库要忽略的文件
- 忽略所有 .a 结尾的文件 *.a
- 但 lib.a 除外 !lib.a
- 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO /TODO
- 忽略 build/ 目录下的所有文件 build/
- 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/*.txt
.project .pydevproject .settings/ *.ncb *.suo *.user .cproject *.o