git-相关知识

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  //暂存起来并起名
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            //推送某个本地标签到远程
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  [email protected]

10、初始化提交

新建远程仓库,并clone到本地
    git clone [email protected]: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 [email protected]:xiangdong.bu/aaaaaa.git
    git add .
    git commit
    git push -u origin master

你可能感兴趣的:(git-相关知识)