git操作
1、git初始化仓库
git init 初始化本地仓库
2、提交
==流程:工作区—(add)—>暂存区—(commit)—>本地仓库—(push)—>远程仓库==
git add . 或者 git add test.html //提交到暂存区
git commit -m '注释文字' //把暂存区的改动提交到本地仓库
git push //把本地仓库推到远程仓库
git add . //add所有文件
git rm --cached abc.txt //add所有文件之后,不想add abc.txt文件
git commit --amend -m "这才是正确提交" // push之前发现commit信息错误,更改commit信息
git add -u //将文件的修改、文件的删除,添加到暂存区。
git add . //将文件的修改,文件的新建,添加到暂存区。
git add -A //将文件的修改,文件的删除,文件的新建,添加到暂存区。
3、撤销
撤销然后修改提交
git reset head^
git add .
git commit -m '再次修改提交'
git push origin feature/add-ptjy-home-swiper --force //会覆盖提交上次的,谨慎操作,有可能会覆盖掉别人代码
git clean -fd //一次性删除新增的文件 'Untracked files'
删除的文件恢复
1. git status
2. git reset HEAD aaa.txt
3. git checkout aaa.txt
1、未add,未commit
git checkout -- xxx.txt //还原对工作区的修改,恢复原状
2、已add,未commit
撤销单独的文件 git reset HEAD xxx.txt 或者 git reset XXXX.txt
撤销所有文件 git reset HEAD
3、已add,已commit
git reset --hard HEAD^ //回退到上一个版本,但是改动会被清掉
git reset head^ //回退上一个版本,回到commit之前,但是改动还是会保留
4、commit之后push之前要修改commit信息
git commit --amend -m "修改的注释信息"
5、已add,已commit,已push
git reset head^
git add .
git commit -m '覆盖提交'
git push origin abc --force (如果不是自己的分支,这样有可能会冲掉别人的代码)
4、分支
git checkout abc //切换到abc分支
git checkout -b abc //新建abc分支并切换
git push --set-upstream origin abc //本地新建分支abc提交到远程仓库并与之进行关联
git branch //查看本地分支
git branch -a //查看所有分支
git branch -r //查看远程仓库的分支
git branch -vv //查看本地分支与远程分支的映射关系
git branch -u origin/abc abc 或者 git branch --set-upstream-to origin/abc abc //建立当前分支与远程分支的映射关系
git branch --unset-upstream //撤销本地分支与远程分支的映射关系
git remote show origin //查看远程仓库与本地的关联
gir remote prune origin //把远程仓库已删除的分支,在本地删除
git branch -D abc //删除本地abc分支
git branch -m oldName newName //修改本地分支名字
5、暂存
暂存
git stash //暂时把修改的内容暂存起来,会还原回初始的样子
git stash save <message> //暂存起来并起名
git stash pop //取出最近一次暂存并删除记录列表中对应记录
git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
git stash list //查看暂存区的所有暂存修改
git stash apply stash@{X} //取出相应的暂存
git stash drop stash@{X} //将记录列表中取出的对应暂存记录删除
6、分支合并
git merge abc //把abc分支合并到当前分支
git rebase orgin/abc //合并分支abc到当前分支
7、版本
git reflog //查看版本号
git reflog -2 //查看最近2次的版本信息
git reset HEAD^ //回退所有内容到上一个版本(本地修改代码不变)
git reset HEAD^ a //回退a 这个文件的版本到上一个版本(本地修改代码不变)
git reset id //id:版本号 回退到某个版本(本地修改代码不变)
git reset --hard HEAD^ //回退所有内容到上一个版本(本地修改丢失)
git reset --hard 12345 //将本地的状态回退到12345版本(本地修改丢失)
git reset –hard origin/master //将本地的状态回退到和远程的一样
8、tag标签
git tag v1.0 //创建tag
git tag -a V1.2 -m 'release 1.2' //创建了本地一个版本 V1.2 ,并且添加了附注信息 'release 1.2'
git tag v0.9 123456 //对某次commit(123456)添加tag
git tag //查看tag
git show V1.2 //显示附注信息
git push origin <tagname> //推送某个本地标签到远程
git push origin --tags //一次性推送全部尚未推送到远程的本地标签
git tag -d V1.2 //删除本地 V1.2的版本
git push origin :refs/tags/V1.2 //推送的空的同名版本,删除远程tagV1.2
9、场景
1、情景:如果正在A分支做,这时候要切到B分支改bug,改完回来再继续做A
解决:
git status
git stash
git checkout B
改bug
git checkout A
git stash pop
2、情景:A分支有修改,想把A分支的修改迁移到新建B分支
解决:
(A分支上)
git add .
git commit -m 'stash'
git checkout -b B
git reset head^
3、rebase同步分支
情景:master分支上新建一个test分支做开发,开发完成之后,准备合并到master,发现master分支已有新的2次提交,
这时候需要把那2次新提交合并到test分支上,但是此时test分支已经 add commit 但并没有push;
解决:(test分支上)
git pull
git rebase origin/master
处理冲突
git add .
git rebase --continue
(如果这时候因为test分支多次commit,仍有错误冲突)
处理冲突
git add .
git rebase --continue
(直到没有错误冲突)
git push
情景2:如果test分支没有add commit
解决:(test分支上)
在rebase之前需要先stash一下
然后再进行rebase操作
处理完冲突,合并,
stash pop,
add commit push.
4、merge分支同步
B分支: git pull ----> git merge origin/A ----> 解决冲突 ----> git add commit push
5、本地新建分支,并提交到远程仓库,然后记得关联本地仓库
git checkout -b abc ----> git add commit ----> git push --set-upstream origin abc
6、撤销 git reset head^
查看git reflog
找到相应的commit id
git reset --hard 123321
7、git误删除恢复
git reflog查看操作记录
找到删除的hashID
git reset --hard hashID
8、删除中间的某次commit
git log -2
git rebase -i head^^
更改 pick --> drop
git push -f
9、git仓库迁移,本地要做的配置
git remote rm origin
git remote add origin git@new-addr.git
10、初始化提交
新建远程仓库,并clone到本地
git clone git@mdev.csc.com.cn:xiangdong.bu/aaaaaa.git
cd aaaaaa
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
已存在的文件夹提交到git远程仓库
cd existing_folder
git init
git remote add origin git@mdev.csc.com.cn:xiangdong.bu/aaaaaa.git
git add .
git commit
git push -u origin master