svn(集中式管理),git(分布式管理、协同开发、版本管理)
1.有红色信息(工作区有内容),就执行 add
2.全绿信息(内容全部在暂存区),才执行 commit
3.只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
git init
.git目录
默认隐藏,可以通过命令ls -ah显示git add 文件名
git add .
git commit -m '本次提交的说明'
git push
git reset HEAD .
git reset 文件名
git reset .
.gitignore 文件
1.在仓库根目录下创建该文件 2.文件与文件夹均可以被过滤 3.文件过滤语法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
git status
git log
git reset --hard HEAD^
git reset --hard HEAD^^
git reset .
git reflog
git config --global user.name '用户名' git config --global user.email '用户邮箱'
C:\Users\用户文件夹\.gitconfig
新建用户信息,在所有仓库下都可以使用git config user.name '用户名' git config user.email '用户邮箱'
git branch -a
git branch
git checkout -b 分支名
git checkout 分支名
git checkout master -b 新分支名
git merge 分支名
git branch -d 分支名 git branch -D 分支名 (强行删除分支)
mkdir test cd test git init touch a.txt git add a.txt git commit -m "添加了a.txt" git remote add origin 已有仓库 # 连接远程 git push origin master
cd test git remote add origin 已有仓库 # 连接远程 git push origin master
-git remote
# 1 切换到master分支 # 2 回滚打某个版本 git reset --hard 版本号 # 3 强制提交代码 git push origin master -f
A和B同时开发项目并且都将服务器的分支代码拉(pull)到自己电脑上 A开发完后,将自己的项目推(push)到了服务器的分支 A和B修改的是同一行代码 B开发完后,没有先拉(pull),而是直接将自己的项目推(push)到了服务器的分支 此时,出现了冲突,这个冲突需要由B解决
-git merge A_master (在B_dev分支上操作) -解决冲突(删你的,同事的,合并起来) -git add . git commit -正常了,冲突解决
master分支上a.py中的第10行代码为 x = 1 dev分支上a.py中的第10行代码为 x = 99 在master分支合并dev分支 此时同一个文件的同一行代码,在2个分支不同,出现了冲突
# 手动线下合并代码并提交到远程 -git checkout master -git merge dev -如果出冲突,解决 -git add . -git commit -git push..
-git clone https://gitee.com/xxxxxx/xxxx.git -能看到完整的版本和日志控制 -可以回复到任意版本 -git rest --hard 版本号 -git checkout . # 表示回到指针指向的版本,因为已经用git rest --hard把指针移动了,所以checkout .就是当前再的版本上的东西 #本地新增c.txt文件 -提交到暂存区 -提交到版本库(没有提交到远程,远程看不到) -提交到远程:git push origin master # 让a文件夹中的代码成为最新的 -git pull origin master
-领导给你一个git地址(项目地址) -你 git clone 地址 到本地 -改代码,改完了---》提交(禁止) -ssh配置,以后都不用输密码了
-对称加密(加密和解密用同一套秘密) -非对称加密(公钥和私钥),公钥加密,私钥解密 -生成一对公钥和私钥(用命令) -https://gitee.com/help/articles/4181 -ssh-keygen -t rsa -C "lqz@qq.com" 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥) -把公钥复制出来,去码云上配置
git pull git push -git feacth(一般不用,他跟pull是一个东西,当作不知道)
Git Bash here
,输入下面命令git init
.git
的隐藏文件夹git clone https://xxxxx.gitee.com.xxx.git
ssh
密钥cd ~/.ssh
cat id_rsa.pub
git clone 远程源地址
git rm filename
git checkout -- filename
ssh-keygen -t rsa -C "youremail@example.com"
git remote add origin git@server-name:path/repo-name.git
git push -u origin master
git remote -v
git push origin 本地分支名
如果发生冲突,用git pull试图合并,如果发生冲突则解决冲突,再进行推送
如果git pull后提示no tracking information(没有追踪信息),则进行第四项,建立关联,之后pull,有冲突再合并
git checkout -b 本地分支 origin/远程分支名
git branch --set-upstream 本地分支名 origin/远程分支名
1.master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
2.干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
3.每个人都有自己的分支,时不时地往dev分支上合并就可以了
与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。