当前位置:   article > 正文

Git 工作中的一些命令操作_基于git fetch 修改代码提交

基于git fetch 修改代码提交

本篇为工作中 git 使用过程中的一些操作记载,不定期更新。

目录

1、git  推本地代码到远程

2、git 放弃修改/commit/撤销远程提交记录

3、git  pull/push/fetch

4、git关联本地与远程分支

5、git branch  查看(删除)分支  

6、git  tag 

7、git  恢复reset删除(本地分支的commit被reset了看不到了怎么恢复)

8、git  config

9、关于git不清洗缓冲区不能切分支的问题。

10、git  merge(合并分支&&commit)

11、git  remote

12、git  submodule

13、本地项目提交github的repository

14、合并某个commit提交记录到当前分支



1、git  推本地代码到远程

  1. git clone http://github.com/jquery/jquery.git   克隆远程仓库到本地
  2. git  status              //(最常用的命令) 查看当前代码库当前分支的变化,包括 没有add的文件和已提交等待push的commit 
  3. 如果本地代码都push到远程了会返回类似 nothing to commit, working tree clean
  4. git  add  .              //将当前目录下的所有修改添加到本地暂存区。
  5. git  commit -m  '这是提交的注释,gitlab会看到描述'   //添加本地暂存区的数据到本地的分支(HEAD)
  6. git pull origin master  //push前先拉gitlab的代码是个好习惯、(此时可能会有冲突)
  7. 如果有冲突(别人更新了远程代码库) 就合并一下,这块建议在idea这种自带git工具或者 source Tree 这种工具中玩,比较方便。 然后可以选择 merge/rebase
  8. merge会将分支树变丑,默认是merge 然后再commit 就可以push了。
  9. git push origin  master //将本地master的commit提交到远程。

2、git 放弃修改/commit/撤销远程提交记录

  1. git checkout .               //放弃本地 add操作之前的修改。
  2. git checkout -- a/b.txt      //放弃本地指定文件的修改(未add的文件)。   如果是新创建的文件直接手动删除就好了。
  3. git reset HEAD a.txt         //放弃 add 但没commit的修改。(已经add的文件)
  4. git reset --hard HEAD ^      //放弃本次commit、  HEAD ^ 可以根据commitID进行修改。  git log查看、
  5. git reset --hard commitID    //回滚当前分支版本的修改到某一个提交。 这个commitID 是你要回滚到的commitID
  6. git push -f origin master    //回滚完需强制提交。(gitlab不会被污染) origin master 根据分支不同需要切换。


3、git  pull/push/fetch

  1. git push <远程主机名> <本地分支名>:<远程分支名>
  2. 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建
  3. git push  origin --delete dev      //删dev分支本地与远程的联系,并在远程删除dev分支。  origin 是远程主机名。默认origin
  4. git push origin :foo               //source 会删除远程仓库中的foo分支。
  5. git push -u origin master          //将本地的master分支推送到origin主机, -u指定origin为默认主机,后面就可以不加任何参数使用git push
  6. git push origin                    //将当前分支推送到远程。
  7. git push origin master^:newBranch  //检索master^ 推送到远程的newBranch 推送的分支不存在创建新分支
  8. git fetch origin foo               //抓远程的foo分支到本地的  origin/foo分支   所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取
  9. 也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支. git merge origin/master 就合并fetch的信息到当前分支了。
  10. git fetch origin foo^:bar          //抓远程foo提前一个commit的记录到本地    本地bar分支不存在就本地创建   
  11. 如果 git fetch 没有参数,它会下载所有的提交记录到各个远程分支!!!
  12. git fetch origin :bar              //如果fetch空 source 会在本地创建一个分支 bar 
  13. git pull origin foo                //相当于git fetch origin foo; git merge origin/foo
  14. git pull origin master             //会将远程的master抓下来并与当前分支合并,无论我们当前检出的位置是哪。
  15. git pull origin master:foo         //抓取master,将foo指向master的commit  合并当前位置与抓下来的master

4、git关联本地与远程分支

  1. 1.本地已有分支,建立关联关系
  2. git branch --set-upstream-to origin/feature/1.0.0base  关联本地当前分支(master)   与远程 feature/1.0.0base 分支
  3. 2.本地尚未有分支,新建分支并创建关联关系(常用)
  4. git checkout -b feature/1.0.0base   origin/feature/1.0.0base
  5. 新建本地 feature/1.0.0base 分支关联到远程的指定分支


5、git branch  查看(删除)分支  

  1. git branch -a                  //查看远程的所有分支  
  2. git branch -v                  //查看本地分支与远程分支的对应关系。
  3. git branch -vv                 //查看本地与远程分支的对应关系。
  4. git branch -r                  //列出远程分支。
  5. git branch -d                  //删除本地分支。
  6. 如果想删除本地dev分支并且删除远程库dev分支,并删除他俩之间的联系。
  7. git branch -d dev              //删本地dev分支
  8.  
  9. git push  origin --delete dev  //删dev分支本地与远程的联系,并在远程删除dev分支。


6、git  tag 

  1. git tag 是以当前的HEAD的 commit记录来打tag的。
  2. git tag                   //查看tag
  3. git tag v1.1.0            //给当前分支打tag
  4. git tag v1.0.0 039bf8b    //给指定commit打tag
  5. git tag --delete v1.0.0   //删除本地tag
  6. git push -d origin v1.0.0 //删除远程tag   ==>  git push --delete origin v1.0.0
  7. git push origin v1.0.0    //推送本地指定tag
  8. git push --tags           //推送所有本地tag

7、git  恢复reset删除(本地分支的commit被reset了看不到了怎么恢复)

  1. git reflog  查看被reset的commit
  2. 然后再执行  git reset --hard HEAD@{XXX} 来恢复。

8、git  config

  1. git config --system --list     ----查看系统的配置。
  2. git config --global --list     ----查看全局的配置。
  3.  
  4. git config --local  --list     ----查看当前仓库的配置。
  5. 底层配置会覆盖顶层配置
  6. 举个栗子。
  7. git config --global user.name "myname"
  8. git config --global user.email  "test@gmail.com"

9、关于git不清洗缓冲区不能切分支的问题。

  1. 有如下几种处理方式:
  2. 1. git add并且git commit,再git checkout,切换到当前分支
  3. 2. git add但不git commit,可以git stash,然后git checkout到新分支,做修改,然后git checkout回到之前的分支之后git stash apply,再git commit,提交到之前的分支
  4. git stash apply stash@{2} 到应用指定的stash存储桶、
  5. 3. git add但不git commit,也不git stash,直接git checkout到新分支,做修改,然后再git commit的话,记录就在切换后的分支下面。
  6. 其背后的原因:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切换到另一个分支。


10、git  merge(合并分支&&commit)

  1. 合并其他分支的代码到当前分支。
  2. git  merge  hotfix   合并  hotfix分支的代码到  当前的分支。 (合并的是分支)
  3. 当我们只需要合并一个commit时,就只需 git checkpick    1heohdqi2ud     将指定的commitID 合并到当前分支、
  4. 还有一种是使用rebase  rebase和merge的区别就是 rebase更好看一些。不会让git tree 乱七八糟的。
  5. git rebase --onto master 76cada^
  6. git rebase side1 side2   将side2 合并到side1下面。rebase  commit  side只是一个标志HEAD。可以写成分支名称。


11、git  remote

  1. git remote update origin --prune   # 更新远程主机origin 整理分支
  2. git remote -v                      # 列出详细信息,包括库和URL地址。

12、git  submodule

  1. git submodule add https://www.gitlabxxx.com/zhangyong.git ext/zhangyong
  2. 上面这个命令是在父.git 下执行的。将子模块添加到了 父目录下/ext/zhangyong处。  
  3. 在提交父项目到gitlab时不会将ext/zhangyong中的所有文件都提上去,而是在zhangyong这个文件中记录https://www.gitlabxxx.com/zhangyong.git 的commitID
  4. //虽然是工作目录中的一个子目录,但 Git 还是会将它视作一个子模块。当你不在那个目录中时,Git 并不会跟踪它的内容, 而是将它看作该仓库中的一个特殊提交。
  5. git diff --cached --submodule    // 查看子模块的信息。
  6. 克隆项目到本地
  7. git clone --recursive http://gitlabxxx.com/zhangyong/MainProject
  8. 上述命令相当于先 git  clone  http://gitlabxxx.com/zhangyong/MainProject 在到对应的子模块中顺序执行git submodule init git submodule update 将子模块的代码拉下来、
  9. 更新子模块
  10. 1.父目录下运行  git submodule foreach git pull
  11. 2.子模块中执行  git pull
  12. 删除submodule
  13. git rm --cached  sql_source/s1      //变更父.git的index文件
  14. rm -rf sql_source/s1                //删除子模块文件(夹)
  15. vim .gitmodules                     //变更module配置文件  删除对应的子模块信息
  16. vim .git/config                     //变更配置信息
  17. [submodule "sql_source/s1"]
  18.   path = sql_source/s1
  19.   url = git@gitlabxxx.com:zhangyong.git

13、本地项目提交github的repository

  1. git init  
  2. git add .
  3. git commit -m ' msg'
  4. git pull origin master --allow-unrelated-histories   
  5. 处理冲突  commit
  6. git push origin master

14、合并某个commit提交记录到当前分支

  1. git checkout master
  2. git cherry-pick dad12dawdwa // 后面是commitID

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/667085
推荐阅读
相关标签
  

闽ICP备14008679号