开始
基本
配置
git config [--local|--global] user.name "ss"
git config [--local|--global] user.email "sdf"
git config [--local] user.name
git config [--local] user.email
git config --list #查看配置内容
初始化
git init
提交
git add 文件
git add -u #已提交的文件添加
git status
git -commit -m'介绍'
git commit --amend #进入文件 修改提交
https://github.com/Chuyongwei/firse.git
查看历史
git log
git log -n2 --oneline#只看最近的记录
查看当前文件
ls -al
修改名字
git mv 旧文件名 新文件名
分支
git branch -v #查看分支
git checkout -b 分支名 f7f25d009228a20e5c7eb7594aa726cdc5910545 #创建分支
git checkout 分支名#选择分支
git log --all #查看分支
git log --all --graph
git branch -b 分支名 #删除分支
查看
git hlep --web log #图形化帮助
gitk #
.git文件
git cat-file -p #内容
git cat-file -t #类型
上传到远程仓库
git remote add origin https://github.com/Chuyongwei/test.git
git push -u origin tage2
拉取
$ git pull --rebase origin master
合并代码时 使用[--allow-unrelated-histories]
管理
修改commit
git commit -amend
合成commit
到最开始的目录制作
git rebase -i 编码
#将pick改成s
检查更新
git diff --cached #检查暂存区所有文件与仓库的区别
git diff #检查工作区和暂存区的区别
git diff -- 文件 fold/file #查看两个文件的区别
git diff 分支1 分支2 [-- 文件] #检查两文职的不同
只会显示删除和修改
管理更新
将暂存区内容丢弃
git rebase HEAD #所有暂存区文件丢弃
git reset HEAD -- 文件 #将暂存区的文件删除
恢复到暂存区
git checkout -- 文件#将文件恢复到暂存区的内容
将工作区回退到节点
git reset --hard 编码 #head节点改到某一段
git rm 文件 #删除暂存区的文件
暂存
用于在做一些工作时,接到紧急任务把手头工作暂存来(当前工作代码消失),然后当工作提交时,恢复暂存区的内容到紧急工作之前的样子(即之前的代码给你可以继续做你的事了)
紧急任务应该在另一个分支吧
git stash #放入暂存区
git stash list #检查文件
git stash apply #恢复暂存区内容
git stash pop #恢复暂存区内容并丢了暂存区记录
.gitignore
忽略优先级
在 .gitingore 文件中,每一行指定一个忽略规则,Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
1、从命令行中读取可用的忽略规则
2、当前目录定义的规则
3、父级目录定义的规则,依次递推
4、$GIT_DIR/info/exclude 文件中定义的规则
5、core.excludesfile中定义的全局规则
忽略语法
在 .gitignore 文件中,每一行的忽略规则的语法如下:
1、空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2、以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
3、可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。
4、以斜杠"/"开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
5、以星号"*"通配多个字符,即匹配多个任意字符;使用两个星号"**" 表示匹配任意中间目录,比如a/**/z可以匹配 a/z, a/b/z 或 a/b/c/z等。
6、以问号"?"通配单个字符,即匹配一个任意字符;
7、以方括号"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。
8、以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。
#忽略doc文件
doc/
#忽略doc文件夹的内容
doc
#忽略txt结尾的文件
*.txt
git rm -r --cached . #将仓库的文件清除
git add . #重新加入暂存区
备份git
git clone --bare 协议
#哑协议
/d/baidu/doc/git/wtch_git_object
#file协议
file:///d/baidu/doc/git/wtch_git_object
远端
git remote -v #查看目标仓库
git remote add 名字 file:/// #添加目标仓库
#一段操作后
git push 名字 #推到目标仓库
合作
克隆代码
git clone url [目录]
基于远端分支创建分支
git checkout -b 本地分支 远端分支
另一边的刷新仓库获取新的分支
git fetch 远端名
解决代码不同的问题
一人改了文件
多人合作时,每次开始写代码都应该先拉取代码
git pull #与远端代码同步
git merge 远端分支
#填写一个文件(不想写就保存退出)
#本地接收到更新
两个人改了相同文件
方法一:直接pull
方法二:
git fetch
git merge 远端分支
#本地接收到更新
解决完后提交
两个人改了相同区域
得知push报错后进行上述方法修复,发现更新成功但没东西,看看pull下来啥