git init #初始化,产生./git文件夹
git status # 查看当前文件状态信息
git status list # 查看stash 暂存排列状态 ,最新的stash暂存状态会排列在{0}的位置
git add . # 将所有文件暂存到版本库 git add 文件名 #将指定文件暂存到版本库
git commit -m '描述信息' #将暂存状态的文件提交到版本库的分支
git log #查看提交记录
git reset --hard #直接回复版本命令
出现bug后,命令的执行顺序
git stash # 将修改内容暂存到某个区域,回复文件原内容
#修复bug后 git add . #将文件内容进行暂存 git commit -m '描述信息' #将文件内容提交保存 git stash pop #将之前编写内容从暂存区域挪回,可能会出现CONFILICT(content)冲突 #出现冲突后需要手动进行修改编辑 #在修改编辑完成之后需要重新提交保存 git add. git commit -m '描述信息'
#CONFLICT(content)冲突
创建分支并行开发和修复BUG
commit master 分支内容 git branch dev #创建dev开发分支,dev拥有和master分支相同的内容 git checkout dev #进入dev分支 Dev 分支: 开发未完成时master出现bug git add . git commit -m '开发未完成版本' Master分支: git checkout master git branch bug git checkout bug #创建bug分支,并进入bug分支 Bug分支: 修复完成bug后 git add . git commit -m '修复完成bug' 切换到master分支与其合并 git checkout master Master分支: git merge bug #修复完成后的master内容 Dev分支: git checkout dev #切换到dev分支继续进行开发 git add . git commit -m '开发完成' #开发完成进行提交 Master分支: git checkout master #切换到master分支,与dev合并,增加开发后的内容 git merge dev
远程repository
公司: 创建远程仓库 编写代码 git add . git commit ... git remote add orgin 仓库地址 git push origin master 家: git clone 远程仓库地址 #将在公司编写的代码下载到家中电脑 git add . git commit ... git remote add github 仓库地址 git push github master 公司: git pull origin master git add . git commit ... git push origin master #如果这步忘记做了 家: 根据记忆继续编写代码 git add . git commit... git push github master 公司: git pull github master #这时可能会出现冲突,需要手动解决冲突 #继续编写代码 git add . git commit ... git push origin master
git pull origin master 可以写为:
git fetch origin master
git merge origin/master <=> git rebase origin/master 为了区分,git会在分支master前加上链接别名
合作开发
collaborator:
Orginazation
创建程序:
用户A创建程序,提交到GitHub
用户B克隆项目
用户C克隆项目
开发功能:
用户A开发功能1
用户B开发功能2
用户C开发功能3
提交
用户A提交功能1,并push
用户B提交功能2,无法Push,因为已经有用户A提交过了代码,需要将Github上获取最新代码与本地代码进行合并再进行提交
用户C与用户B情况一样
合并的方式有两种,前者版本记录会出现合并,后者可以保证版本记录干净整洁:
git pull origin master 然后 git push origin master
用户A: file git add . git commit -m '功能4' git push origin master 用户B: file git add . git commit -m '功能5' git push origin master # 报错,因为GitHub中已经有人提交新代码 git pull origin master git push origin master
git fetch origin master 然后 git merge origin/master 再 git push orgin master
用户A: file git add . git commit -m '功能4' git push origin master 用户B: file git add . git commit -m '功能5' git push origin master # 报错,因为GitHub中已经有人提交新代码 git fetch origin master git rebase origin/master git push origin master
贡献代码
找到想要编写的项目,fork一下,之后这个项目就会在自己仓库出现
从自己仓库获取代码并进行编辑
创建一个pull request,等待作者是否同意,作者同意之后源代码就会出现贡献者提交的功能
配置文件
系统配置:/private/etc/gitconfig
用户配置:~/.gitconfig 全局配置文件
项目配置:.git/config
用户凭证
使用SSH减少频繁输入用户密码的情况
ssh-keygen -t rsa命令来创建密钥,将id_rsa.pub公钥的内容拷贝到Github下设置中的SSH KEY中
如果出现Key already in use的情况:
删掉原来的SSH密钥 cd ~/.ssh
rm id_rsa id_rsa.pub
重新生成密钥 ssh-keygen.exe
cat id_rsa.pub
忽略文件
在.git/文件夹下创建.gitignore文件,在其中编写的文件名就是git忽略的文件类型
test/[abc].py [abc] test/* !test/a.py .idea/* *.pyc *.excel